Beispiel #1
0
 def draw_branch(self, pos, level = 0, id = 0, true_branch = True):
     #draw the condition blocks
     self.Add((CodeContainer(self.getCodeName(level, id), self.surf, pos)))
     spread = 75*(2**(self.levels-level-2))
     truepos = Base.tuple_add(pos, (75*2, -spread))
     falsepos = Base.tuple_add(pos, (75*2, spread))
         
     if level == self.levels-1:
         self.Add(CodeContainer(self.getCodeName(level+1, 2*id), self.surf, truepos))
         self.Add(CodeContainer(self.getCodeName(level+1, 2*id+1), self.surf, falsepos))
         return id+1
     else:
         self.draw_branch(truepos, level + 1, 2*id, True)
         self.draw_branch(falsepos, level + 1, 2*id+1, False)
Beispiel #2
0
    def Init(self):
        if hasattr(self,"world"):
            del self.world
        if hasattr(self,"Swarmers"):
            del self.Swarmers
        Game.Init(self)
        self.clockrate = 100
        Base.set_resource_path('Resources')
#        offscreen = self.screen.get_size()
        self.initSwarmers(2,5)
        self.AddFeature("World", self.world)
        self.AddFeature("swarmers", self.Swarmers)
        self.ui = HiveUI(self.screen)
        self.AddFeature("Programmer", self.ui)
        
        self.lastCode = None
Beispiel #3
0
    def Retreat(self):
        if self.Enemies == []:
            return False
#        print self.Name, "is Retreating"
        vector = [0, 0]
        for enemy in self.Enemies:
            distx, disty = Base.tuple_add(enemy[1].getPos(), self.getPos(), '-')
            if distx == 0:forcex = random.choice([-1, 0, 1]) 
            else:forcex = self.Sensors/distx
            if disty == 0:forcey = random.choice([-1, 0, 1]) 
            else:forcey = self.Sensors/disty
            vector = Base.tuple_add(vector, (-forcex,-forcey))
        x, y = vector
        if self.move(x,y):
            return True
        else:
            return False
Beispiel #4
0
 def step(self):
     if self.LaunchCount == 0:
         vx, vy = self.Velocity
         self.Translate(self.Velocity)
         self.Velocity = (vx, vy + 1)
         try:self.Angle = math.degrees(math.atan(float(vy+1)/vx))
         except:self.Angle = 90
         self.RotateTo(self.Angle)
     self.LaunchCount = Base.limit(self.LaunchCount+1, -1, 1, True)
Beispiel #5
0
 def setGunPos(self):
     C = self.Sprite.rect.center
     try: xadd = int(math.ceil(20*math.cos(math.radians(self.Angle))))
     except: xadd = 0
     try: yadd = int(math.ceil(20*math.sin(math.radians(self.Angle))))
     except: yadd = 10
     if not self.Facing: xadd*=-1
     GunPos = Base.tuple_add(C, (xadd, -yadd))
     return GunPos
Beispiel #6
0
 def makeUI(self):
     last = Base.tuple_add(self.surf.get_rect().center, (-(111+self.levels*75), -75/2))
     Start = GameObject("Start", self.surf, "code-start.png", last)
     self.Add(Start)
     start_code = Base.tuple_add(last, (75*2, 0))
     self.draw_branch(start_code)
     Code1 = CodeElement("Code1", "def cond1(self):\n\
     if len(self.Enemies) > len(self.Allies):\n\
         return True\n\
     else:\n\
         return False#dividercond1", self.surf, "code-start.png", (10,10))
     Code2 = CodeElement("Code2", "Retreat", self.surf, "code-start.png", (100,10))
     Code3 = CodeElement("Code3", "Attack", self.surf, "code-start.png", (190,10))
     Code1.SetSnapTo(self.get_container_sprites(),True)
     Code2.SetSnapTo(self.get_container_sprites(),True)
     Code3.SetSnapTo(self.get_container_sprites(),True)
     self.Add(Code1, Code2, Code3)
     Compile = UIitem("Compile", self.surf, "code-start.png", Base.tuple_add(self.surf.get_size(), (-100,-100)))
     Compile.SetOnClick({"Action": "Compile"})
     self.Add(Compile)
Beispiel #7
0
 def GetTileCenter(self, *argsv):
     position = [0, 0]
     if len(argsv) == 1:
         arg = argsv[0]
         col = arg[0]
         row = arg[1]
     else:
         col = argsv[0]
         row = argsv[1]
     offset = self.Sprite.rect.topleft
     position[0] = int((col+0.5)*self.tile_width)
     position[1] = int((row+0.5)*self.tile_height)
     position = Base.tuple_add(position, offset)
     return position
Beispiel #8
0
    def Init(self):
        Game.Init(self)
        self.init_USB()

        Base.set_resource_path('Resources')
        offscreen = self.screen.get_size()

        T1Gun = TankGun(self.screen, offscreen)
        T2Gun = TankGun(self.screen, offscreen)
        
        T1Power = TankPBar(self.screen, (10,10))
        T2Power = TankPBar(self.screen, (self.screen.get_width()-60,10))
        
        Shell1 = Shell("Shell1", self.screen, "LShell.PNG", True, offscreen)
        Shell2 = Shell("Shell2", self.screen, "RShell.PNG", False, offscreen)

        Tank1 = Tank("T1", self.screen, "LTank.PNG", T1Gun, T1Power, Shell1, True, (9,85), offscreen)
        Tank2 = Tank("T2", self.screen, "RTank.PNG", T2Gun, T2Power, Shell2, False, (9,85), offscreen)
        Tank1.Reposition((70,self.screen.get_height()-Tank1.Size()[1]-25))
        Tank2.Reposition((self.screen.get_width()-Tank2.Size()[0]-70,
                          self.screen.get_height()-Tank2.Size()[1]-25))
        Tanks = GameplayObjects(self.screen, Tank1, Tank2)
        
        Shell1.AddAnimationList("Explode", AnimationList(["Explo_"+str(i+1)+".PNG" for i in range(20)]))
        Shell2.AddAnimationList("Explode", AnimationList(["Explo_"+str(i+1)+".PNG" for i in range(20)]))
        Shells = GameplayObjects(self.screen, Shell1, Shell2)
        shells = ([Shells.Get("Shell1"), Shells.Get("Shell2")])
        tanks = ([Tanks.Get("T1"),Tanks.Get("T2")])
        Checker = HitCheck(shells, tanks)
        
        self.AddFeature("T1Gun", T1Gun)
        self.AddFeature("T2Gun", T2Gun)
        self.AddFeature("T1Pbar", T1Power)
        self.AddFeature("T2Pbar", T2Power)
        self.AddFeature("Tanks", Tanks)
        self.AddFeature("Shells", Shells)
        self.AddFeature("Global", Checker)
Beispiel #9
0
 def getUnits(self, center = (0, 0), radius = 0, alliance = -1):
     reqUnits = []
     if alliance == -1:
         reqUnits.extend(self.Units)
     else:
         for unit in self.Units:
             if unit.Alliance == alliance and unit.isAlive():
                 reqUnits.append(unit)
     if radius == 0:
         return reqUnits
     unitList = reqUnits[:]
     for unit in reqUnits:
         if Base.distance(unit.Sprite.rect.center, center) > radius:
             unitList.remove(unit)
     reqUnits = unitList
     return reqUnits
Beispiel #10
0
    def __init__(self, Name, surf, alliance, pos, sensors = 50):
        
        if alliance == 0:GameObject.__init__(self, Name, surf, "swarmer-green.png", pos)
        elif alliance == 1: GameObject.__init__(self, Name, surf, "swarmer.png", pos)
        self.Sensors = sensors
        self.Alliance = alliance
        self.World = None

        self.makeTree()                    
        
        self.hitpoints = 100
        self.speed = 5
        self.atrange = Base.mean(self.Sprite.rect.size)+10
        self.atcd = 10
        self.cur_atcd = 0
        self.atdmg = 10
Beispiel #11
0
    def Attack(self, enemy = None):
        if self.Enemies == []:
            return False
        if enemy == None:
            enemy = self.Enemies[0]
        if enemy[0] > self.atrange:
#            print self.Name, "is Attacking: Moving into range"
            x, y= Base.tuple_add(enemy[1].getPos(), self.getPos(), '-')
            self.move(x, y)
        else:
            if self.cur_atcd == 0:
#                print self.Name, "attacked for", self.atdmg, "damage;", \
#                    enemy[1].Name, "has", enemy[1].hitpoints, "hp left"
                enemy[1].takeDamage(self.atdmg)
                self.cur_atcd = 10
            else: self.cur_atcd -=1
        return True
Beispiel #12
0
    def Launch(self, angle, power, position):
        self.Sprite.image = self.orig_im
        self.Sprite.rect = self.orig_rect
        if self.Launched:
            return True
        self.Angle = angle
        self.RotateTo(self.Angle)
        
        vx = int(math.ceil(power*math.cos(math.radians(angle))))
        vy = int(-math.ceil(power*math.sin(math.radians(angle))))
        if not self.Facing: vx*=-1
        self.Velocity = (vx, vy)
        self.Recenter(Base.tuple_add(position,self.Velocity))

        self.Launched = True
        self.LaunchCount = 0
        return True
Beispiel #13
0
 def __init__(self):
     Game.__init__(self, "Chess Master!", False, (0, 0, 20), (1024, 700))
     Base.set_resource_path('Resources')
     self.offscreen = self.screen.get_size()
     self.Menu = ChessMenu(self.screen)
Beispiel #14
0
 def sortEnemies(self):
     dists = [(Base.distance(enemy.getPos(), self.getPos()), enemy) for enemy in self.Enemies]
     dists.sort()
     self.Enemies = dists
Beispiel #15
0
 def move(self, x, y):
     X,Y = Base.normalize((x,y))
     return self.Sprite.Translate((self.speed*X,self.speed*Y), None, True)
Beispiel #16
0
 def update(self):
     percent = int(math.ceil(190*(float(self.Value)/50)))
     TopLeft = Base.tuple_add(self.rect[0], self.rect[1])
     TopLeft = Base.tuple_add(TopLeft,(-45,-percent-5))
     self.FillRect = (TopLeft, (40, percent))
     return True