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 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 #3
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 #4
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 #5
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 #6
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 #7
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 #8
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