def shoot(self, obj_grid): if self.__shield == 0: obj_bullet = bullet(self._r + 1, self._c + 3, 1) elif self.__shield == 1: obj_bullet = bullet(self._r + 1, self._c + 4, 1) obj_bullet.reappear_bullet(obj_grid) playsound('resources/light_hit_03.wav') self.__bullets.append(obj_bullet)
def shoot(self): i = random.randrange(120) if i == 0: bul = bullet(self.position, 1, self.screen) else: bul = None return bul
def on_mouse_press(x, y, button, modifiers): #print player1.x, player1.y #for n in range(0, player1.sides): #print n, " ::: ", player1.vertices[2 * n + 2], player1.vertices[2 * n + 3], " : ", player1.colors[4*n + 4:4*n+8] if button == mouse.MIDDLE: player1.drawTarget = True if button == mouse.LEFT and player1.sides > 3: a1 = math.atan2(float(y - player1.y), float(x - player1.x)) side = 0 closest = 3.1415 a3 = 100 for n in range(1, player1.sides + 1): vx = player1.vertices[2 * n] vy = player1.vertices[2 * n + 1] a2 = math.atan2((vy - player1.y), (vx - player1.x)) if abs(a2 - a1) < closest: side = n closest = abs(a2 - a1) a3 = a2 vtx, clr = player1.removeSide(side) #player1.x + math.cos(angle) * (player1.radius + 4), player1.y + math.sin(angle) * (player1.radius + 4) b = bullet(angle=a1, vtx=vtx, color=clr) game_objects.append(b)
def on_mouse_press(x, y, button, modifiers): #print player1.x, player1.y #for n in range(0, player1.sides): #print n, " ::: ", player1.vertices[2 * n + 2], player1.vertices[2 * n + 3], " : ", player1.colors[4*n + 4:4*n+8] if button == mouse.MIDDLE: player1.drawTarget = True if button == mouse.LEFT and player1.sides > 3: a1 = math.atan2(float(y - player1.y), float(x - player1.x)) side = 0 closest = 3.1415 a3 = 100 for n in range(1, player1.sides + 1): vx = player1.vertices[2*n] vy = player1.vertices[2*n + 1] a2 = math.atan2((vy - player1.y), (vx - player1.x)) if abs(a2 - a1) < closest: side = n closest = abs(a2 - a1) a3 = a2 vtx, clr = player1.removeSide(side) #player1.x + math.cos(angle) * (player1.radius + 4), player1.y + math.sin(angle) * (player1.radius + 4) b = bullet(angle = a1, vtx=vtx, color = clr) game_objects.append(b)
def UpdatePosition(self,Mario,no_of_frames,enlist,bullets): self.killenemy = -1 Key = getch() self.no_of_coins = 0 self.no_of_coins += Mario.createPlayer(self); def down(): Mario.clearplayer(self.Gamepad); self.killenemy = Mario.updateposition(2,0,self.Gamepad); self.no_of_coins += Mario.createPlayer(self); if Key != None: Mario.clearplayer(self.Gamepad); Key_pressed = ord(Key) if Key_pressed == ord('d'): if no_of_frames < 4: if Mario.heady <= 75: if self.Gamepad[Mario.headx + 2][Mario.heady+2] != "\033[41;31m#\033[0m": self.killenemy = Mario.updateposition(0,1,self.Gamepad); down(); self.no_of_coins += Mario.createPlayer(self) else: return (-1,self.no_of_coins) else: if Mario.heady <= 70: if self.Gamepad[Mario.headx + 2][Mario.heady+2] != "\033[41;31m#\033[0m": self.killenemy = Mario.updateposition(0,1,self.Gamepad); down(); self.no_of_coins += Mario.createPlayer(self) else: return (2,self.no_of_coins) elif Key_pressed == ord('a'): if Mario.heady >= 5 and self.Gamepad[Mario.headx + 2][Mario.heady-2] != "\033[41;31m#\033[0m": self.killenemy = Mario.updateposition(0,-1,self.Gamepad); down(); self.no_of_coins += Mario.createPlayer(self) elif Key_pressed == ord('w'): os.system('aplay jump.wav&') if Mario.headx >= 10 and self.Gamepad[Mario.headx - 1][Mario.heady] == " ": self.Time = time.time() Mario.clearplayer(self.Gamepad); self.killenemy = Mario.updateposition(-2,0,self.Gamepad); self.no_of_coins += Mario.createPlayer(self); settimer = Timer(0.3,down); settimer.start() self.no_of_coins += Mario.createPlayer(self); elif Key_pressed == ord('s'): bullets.append(bullet(Mario.headx+1,Mario.heady+2,self)) elif Key_pressed == ord('q'): return (-5,self.no_of_coins,self.killenemy) return (0,self.no_of_coins,self.killenemy)
def shoting(): if(heroe.isFire==True): x=heroe.x+heroe.bitmap.get_width()+10 y=heroe.y+heroe.bitmap.get_height()/2 newBullet=bullet(x,y,"assets/bullet.png") newBullet.initBullet(x,y,4,0) hBullets.append(newBullet) heroe.reloadTimer=pygame.time.get_ticks() pass
def shoting(): if (heroe.isFire == True): x = heroe.x + heroe.bitmap.get_width() + 10 y = heroe.y + heroe.bitmap.get_height() / 2 newBullet = bullet(x, y, "assets/bullet.png") newBullet.initBullet(x, y, 4, 0) hBullets.append(newBullet) heroe.reloadTimer = pygame.time.get_ticks() pass
def main(): #~ State Variables t0 = 0 tf = 0.5 dt = .001 times = np.linspace(t0, tf, 200) #/~ State Variables #~ Bullet-specific Variables name = '50 ATV BT' b = bullet(name, mass=50, bc=0.242, model=G1) vtot = 3300 # theta = 0.05 vxi = vtot * (cos(theta * pi / 180)) vyi = vtot * (sin(theta * pi / 180)) #~/ Bullet-Specific Variables #~ Integrate y0 = [0., 0., vxi, vyi] states = odeint(b.shoot, y0, times) states = array(states) #/~ Integrate #~ Get Samples from sample_data import samples x = samples[name]['st'][:, 0] #print len(x) y = samples[name]['st'][:, 1] #print len(y) #/~ Get Samples #~ Plot fig, ax = subplots() r_mark, = ax.plot(x, y, 'ro', alpha=.8) b_mark, = ax.plot(states[:, 0], states[:, 1] * 12., 'bo', lw=3, alpha=.8) legend([r_mark, b_mark], ['Sample Trajectory', 'Simulated (' + str(b) + ')'], numpoints=1) configure(ax=ax, title=r'G1 Model of Remington .233 cartridge', xlabel=r'Horizontal Displacement (yards)', ylabel=r'Height (inches)', xbounds=None, ybounds=None) fig.suptitle('Bullet Trajectory Simulation', size=30) fig.subplots_adjust(left=0.05, right=0.95, top=0.9, bottom=0.08) show()
def shoot_point(event: Event): global total_damage global dots damage = int(shoot(my_canvas, event.x, event.y, helmet, armour)[0]*bullet_ratio) color = shoot(my_canvas, event.x, event.y, helmet, armour)[1] total_damage += damage total_damage_text.set('总伤害: ' + str(total_damage)) damage_text.set('伤害: ' + str(damage)) width = my_canvas.winfo_width() height = my_canvas.winfo_height() dots.append((event.x/width, event.y/height, color)) #Timer(3, dots.remove((event.x/width, event.y/height, color))).start() b = bullet(event.x, event.y, color, my_canvas) b.draw()
def main(): #~ State Variables t0 = 0; tf = 0.5; dt=.001; times = np.linspace(t0, tf, 200) #/~ State Variables #~ Bullet-specific Variables name = '50 ATV BT' b = bullet(name, mass=50, bc=0.242, model=G1) vtot = 3300 # theta = 0.05 vxi = vtot*(cos(theta*pi/180)) vyi = vtot*(sin(theta*pi/180)) #~/ Bullet-Specific Variables #~ Integrate y0 = [0., 0., vxi, vyi] states = odeint(b.shoot, y0, times) states = array(states) #/~ Integrate #~ Get Samples from sample_data import samples x = samples[name]['st'][:,0]; #print len(x) y = samples[name]['st'][:,1]; #print len(y) #/~ Get Samples #~ Plot fig, ax = subplots() r_mark, = ax.plot(x, y, 'ro', alpha=.8) b_mark, = ax.plot(states[:,0], states[:,1]*12., 'bo', lw=3, alpha=.8) legend( [r_mark, b_mark], ['Sample Trajectory', 'Simulated ('+str(b)+')'], numpoints=1) configure( ax=ax, title=r'G1 Model of Remington .233 cartridge', xlabel=r'Horizontal Displacement (yards)', ylabel=r'Height (inches)', xbounds=None, ybounds=None) fig.suptitle('Bullet Trajectory Simulation', size=30) fig.subplots_adjust(left=0.05, right=0.95, top=0.9, bottom=0.08) show()
import pygame from bullet import * pygame.init() Screensize = (width, height) = (800, 600) screen = pygame.display.set_mode(Screensize) color = (165, 42, 42) clock = pygame.time.Clock() screeninfo = pygame.display.Info() bullet = bullet() def main(): while True: clock.tick(60) bullet.Move() screen.fill(color) bullet.draw(screen) pygame.display.flip() if __name__ == "__main__": main()
time.sleep(1) quit() if man.life<=-1: end=ES() #os.system('clear') end.loss() board1.printt(man) time.sleep(1) quit() if mag.x>=board1.itr and mag.x<=board1.itr+135: mag.attract() if man.yl==28: godo=0 if char=='b': bb=bullet() if board1.itr<1215: for i in range(len(lit)): if lit[i]<=board1.itr+135 and fl[i]==0: if lit[i]<=1350: if board1.mat[vit[i]][lit[i]+1]=='o' or board1.mat[vit[i]][lit[i]+2]=='o' or board1.mat[vit[i]][lit[i]+3]=='o' or board1.mat[vit[i]][lit[i]+4]=='o': for j in range(vit[i]-5,vit[i]+6): for l in range(lit[i]-5,lit[i]+9): if l>=0 and l<=1350: if j>=3 and j<=30: if board1.mat[j][l]=='o': board1.mat[j][l]=' ' board1.mat[vit[i]][lit[i]]=' ' fl[i]=1 else:
def shoot(self, obj_grid): obj_bullet = bullet(self._r + 1, self._c - 1, 2) obj_bullet.reappear_bullet(obj_grid) self.__bullets.append(obj_bullet)
def move(shieldt,framedelay,boostsleft): def alarmhandler(signum, frame): ''' input method ''' raise AlarmException def user_input(timeout=framedelay): # tcheck+=0.05 # if(tcheck==0.1): # tcheck=0 # return '' ''' input method ''' signal.signal(signal.SIGALRM, alarmhandler) signal.setitimer(signal.ITIMER_REAL, timeout) try: text = getChar()() signal.alarm(0) return text except AlarmException: pass signal.signal(signal.SIGALRM, signal.SIG_IGN) return '' char = user_input() if char=='d': if boi.getx()<length-3: boi.moveh(boi.getx()+2) if char=='a': if boi.getx()>3: boi.moveh(boi.getx()-2) if char=='w': if boi.gety()>1: boi.changespeed(boi.getyv()-1) if char =='k': if(time.time()-shieldt>=60): shieldt=time.time() boi.setshield(1) if char =='p' and boostsleft>0: boostsleft-=1 if(framedelay==0.15): framedelay=0.075 else: framedelay=0.15 if char ==' ': bb.append(bullet(boi.getx(),boi.gety(),bb)) if(magboard[boi.gety()][boi.getx()][0]!=0): if(magboard[boi.gety()][boi.getx()][0]>boi.gety()): boi.changespeed(boi.getyv()+1) elif(magboard[boi.gety()][boi.getx()][0]<boi.gety()): boi.changespeed(boi.getyv()-1) if(magboard[boi.gety()][boi.getx()][1]>boi.getx()): boi.moveh(boi.getx()+1) elif(magboard[boi.gety()][boi.getx()][1]<boi.getx()): boi.moveh(boi.getx()-1) boi.movey(boi.gety()+min(boi.getyv(),4)) boi.movey(min(40,boi.gety())) boi.movey(max(3,boi.gety())) boi.moveh(min(length-1,boi.getx())) if(boi.gety()==3): boi.changespeed(0) boi.checkcollisions(board,objboard,ogoglist) if char == 'q': quit() return shieldt,framedelay,boostsleft
def game_loop(): global is_god, intro, selecting, GG, side_shooting, score, intro, ultima_cadeira, aluno, user,\ bullets, bulletSprites, obstacleGroup, cadeira, pause, shooting, obstacle_speed, time_change, pos_change,\ power_up_change, powers intro = False selecting = False colliding = False collide_change = False just_dead = False pos_change = 0 shooting = True shoot_time = 800 color_change = black obstacle_speed = 3 speed_change = 0.05 time_change = 0 score_string = "" name_string = "" shoot_sound.set_volume(0.4) if is_god: game_sound.stop() god_sound.play(soundtrack_2) aluno = pygame.sprite.GroupSingle(player()) user = (aluno.sprites())[0] bullets = [] bulletSprites =pygame.sprite.Group() obstacleGroup = pygame.sprite.Group() powers = pygame.sprite.Group() cadeira = [obstacle(random.choice(cadeiras_ref), obstacle_speed, user.slow_time())] obstacleGroup.add(cadeira) pygame.time.set_timer(USEREVENT + 1, random.randint(1000 - time_change, 1500 - time_change)) power_up_change = random.randint(5, 9) while True: pygame.display.update() if not pygame.mixer.get_busy(): if is_god: god_sound.play(soundtrack_2) else: game_sound.play(soundtrack) #obtem a posicao do aluno for i in aluno: aluno_pos = i.pos() #criacao de cronometros if user.score_change() != 1: pygame.time.set_timer(USEREVENT + 5, 7000) #EVENTOS for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() #eventos do cronometro if event.type == USEREVENT + 1: cadeira = [obstacle(random.choice(cadeiras_ref), obstacle_speed, user.slow_time())] obstacleGroup.add(cadeira) if not is_god: if power_up_change <= 0: power_up_change = random.randint(5, 9) power = [power_up(random.randint(1, 4), obstacle_speed)] powers.add(power) pygame.time.set_timer(USEREVENT + 1, random.randint(1000-time_change, 1500-time_change)) if event.type == USEREVENT + 2: pygame.time.set_timer(USEREVENT + 2, 0) shooting = True if event.type == USEREVENT + 3: pygame.time.set_timer(USEREVENT + 3, 0) color_change = black if is_god: god_sound.unpause() else: game_sound.unpause() if event.type == USEREVENT + 4: pygame.time.set_timer(USEREVENT + 4, 0) user.end_slow() for obstaculo in obstacleGroup: obstaculo.speed_change(obstaculo.speed*2) if event.type == USEREVENT + 5: pygame.time.set_timer(USEREVENT + 5, 0) user.end_score() if event.type == USEREVENT + 6: pygame.time.set_timer(USEREVENT + 6, 0) event_6 = False side_shooting = False if event.type == pygame.KEYDOWN: #move o jogador if event.key == pygame.K_a: pos_change -= 1 if event.key == pygame.K_d: pos_change += 1 if event.key == pygame.K_p: pause = True paused() #move as balas if event.key == pygame.K_UP: if not is_god: if shooting: shoot_sound.play(shoot) pygame.time.set_timer(USEREVENT + 2, shoot_time) shooting = False bulletA = [bullet(aluno_pos[0], 2)] bullets+=bulletA bulletSprites.add(bulletA[0]) else: bulletA = [bullet(aluno_pos[0], 2)] bullets+=bulletA bulletSprites.add(bulletA[0]) if event.key == pygame.K_LEFT and side_shooting: if not is_god: if shooting: shoot_sound.play(shoot) pygame.time.set_timer(USEREVENT + 2, shoot_time) shooting = False bulletA = [bullet(aluno_pos[0], 1)] bullets+=bulletA bulletSprites.add(bulletA[0]) else: bulletA = [bullet(aluno_pos[0], 1)] bullets+=bulletA bulletSprites.add(bulletA[0]) if event.key == pygame.K_RIGHT and side_shooting: if not is_god: if shooting: shoot_sound.play(shoot) pygame.time.set_timer(USEREVENT + 2, shoot_time) shooting = False bulletA = [bullet(aluno_pos[0], 3)] bullets+=bulletA bulletSprites.add(bulletA[0]) else: bulletA = [bullet(aluno_pos[0], 3)] bullets+=bulletA bulletSprites.add(bulletA[0]) if event.type == pygame.KEYUP: if event.key == pygame.K_a: pos_change += 1 elif event.key == pygame.K_d: pos_change -= 1 gameDisplay.blit(game_background, (0, 0)) obstacleGroup.draw(gameDisplay) obstacleGroup.update() powers.draw(gameDisplay) powers.update() aluno.draw(gameDisplay) aluno.update(pos_change) if just_dead: just_dead = False #detecao de colisoes (obstaculo) for obstaculo in obstacleGroup: #colisao com o jogador if pygame.sprite.collide_rect(user, obstaculo): if obstaculo.dif() != 0: if user.shield() >= 1: score += 5 * user.score_change() obstacleGroup.remove(obstaculo) user.end_shield() else: colliding = True if is_god: score += 20 obstacleGroup.remove(obstaculo) else: if user.is_dead(): user.update_hp(3) ultima_cadeira = obstaculo.nome() if is_god: god_sound.pause() else: game_sound.pause() death_sound.play(death) GG = True break #colisao com as balas if pygame.sprite.spritecollideany(obstaculo, bulletSprites): if obstaculo.dif() == 0: if is_god: score += 40 else: score += 2 * user.score_change() pygame.sprite.groupcollide(obstacleGroup, bulletSprites, True, True) power_up_change -= 1 if obstacle_speed <= 4.5: obstacle_speed += speed_change time_change += 25 elif obstaculo.dif() == 1: if is_god: score += 80 else: score += 5 * user.score_change() pygame.sprite.groupcollide(obstacleGroup, bulletSprites, True, True) power_up_change -= 1 if obstacle_speed <= 4.5: obstacle_speed += speed_change time_change += 25 elif obstaculo.dif() == 2: if is_god: power_up_change -= 1 score += 150 pygame.sprite.groupcollide(obstacleGroup, bulletSprites, True, True) else: score += 10 * user.score_change() pygame.sprite.groupcollide(obstacleGroup, bulletSprites, False, True) if obstacle_speed <= 4.5: obstacle_speed += speed_change time_change += 25 #quando o jogador ultrapassa um obstaculo if obstaculo.pos()[1] > display_height + (obstaculo.height()): if obstacle_speed <= 4.5: obstacle_speed += speed_change power_up_change -= 1 if obstaculo.dif() == 0: if not is_god: score -= 2 elif obstaculo.dif() == 1: if not is_god: score -= 4 obstacleGroup.remove(obstaculo) #detecao de colisoes (power_up) for power in powers: if pygame.sprite.spritecollideany(power, bulletSprites): pygame.sprite.groupcollide(powers, bulletSprites, True, True) power_up_change = random.randint(5, 9) if power.pos()[1] > display_height + (power.height()): powers.remove(power) power_up_change = random.randint(5, 9) if pygame.sprite.collide_rect(user, power): user.apply(power.type()) power_up_change = random.randint(5, 9) if user.slow_time(): for obstaculo in obstacleGroup: obstaculo.speed_change(obstaculo.speed/2) pygame.time.set_timer(USEREVENT + 4, 5000) if power.type() == 4: side_shooting = True pygame.time.set_timer(USEREVENT + 6, 10000) powers.remove(power) #quando o jogador e atingido por um obstaculo if colliding and not collide_change: collide_change = True if not is_god: user.update_hp(-1) if user.hp() != 0: gasp_sound.play(gasp) color_change = bright_red pygame.time.set_timer(USEREVENT + 3, 500) #mecanismo de tranca elif not colliding and collide_change: collide_change = False colliding = False #se o jogador perde if GG: just_dead = True #verifica se bateu o highscore table = open('highscore.txt','r') s = table.readline() i = -1 while s[i].isdigit(): score_string = s[i] + score_string i-=1 i = 0 while s[i] != "-": name_string += s[i] i+=1 name_string = name_string[:-1] i = 0 table.close if score > eval(score_string): deathscreen(score, name_string, score_string) else: crash() score_string = "" name_string = "" else: screen_text_center("ECT'S: " + str(score) , 700, 20, 20, black) screen_text_center("Paciencia: " +str(user.hp()) , 99, 19, 20, white) screen_text_center("Paciencia: " +str(user.hp()) , 100, 20, 20, color_change) power_up_display() #update bulletSprites.update() bulletSprites.draw(gameDisplay) obstacleGroup.update() clock.tick(60)
def doubleshoot(self): self.dbullet += 1 t = bullet([self.position[0] - 5, self.position[1]], -1, self.screen) r = bullet([self.position[0] + 5, self.position[1]], -1, self.screen) return t, r
def run(self): #creating initial board for i in range(6, 16, 16): #initial alien at 6 self.__board.update(i, "Y") self.__board.update(56 + 3, "^") #initial spaceship at 3 #calculating temp variables tempalien = [] #stores index of aliens secbullet = [] #store second bullet hit aliens tempgrid = self.__board.getgrid() for i in range(16): if tempgrid[i] == "Y": tempalien.append(i) x = 3 #index of spaceship q = 1 #to exit game alientime = [''] * 16 #stores time for i in range(16): if i in tempalien: alientime[i] = time.time() if i not in tempalien: alientime[i] = 0 prevtime = time.time() while (q): self.__board.render() move = input() #controling spaceship if move == "d" or move == "a": x = spaceship().control(x, move) for i in range(56, 64, 1): self.__board.update(i, " ") self.__board.update(56 + x % 8, "^") #for exit elif move == "q": q = 0 #for firing missiles elif (move == "s" or move == " "): temp = [bullet().getpos(x)] while (temp[0] >= 0): #loop till bullet reaches top #checking for aliens flag = 0 tempgrid = self.__board.getgrid() flag = bullet().checkalien(tempgrid, temp) self.__board.update(temp[0], bullet().getbullet(move)[0]) self.__board.render() #first missile if move == " ": #incrementing score if flag == 1: [alientime, secbullet, tempalien ] = first().updscore(alientime, secbullet, tempalien, temp[0]) self.__board.score = self.__board.score + 1 self.__board.update(temp[0], " ") #second missile else: if flag == 1: second().updamage(alientime, secbullet, temp[0]) self.__board.update(temp[0], "y") else: self.__board.update(temp[0], " ") #delay for bullet time.sleep(bullet().getbullet(move)[1]) self.__board.render() #when hits alien stop moving up if flag == 1: break temp[0] = bullet().updatpos(temp) #add aliens after 10 seconds #1s for delay in other proceses elapsedtime = time.time() - prevtime if (elapsedtime > 11): [tempalien, alientime] = alien().updal(self, tempalien, 1, alientime) for i in range(16): if (i in tempalien): self.__board.update(i, "Y") prevtime = time.time() #remove aliens after 8 seconds #1s for delay in other proceses [tempalien, alientime, secbullet] = alien().updal(self, secbullet, 0, alientime) for i in range(16): if i in tempalien: if i not in secbullet: self.__board.update(i, "Y") else: self.__board.update(i, "y") if i not in tempalien: self.__board.update(i, " ")
def oneshoot(self): t = bullet(self.position, -1, self.screen) return t
def shoot(self): return bullet(self.x + self.width / 2 - constants.A_BULLET_WIDTH / 2, self.y, constants.ALIEN_BULLET)
from player import * from enemy import * from bullet import * from collision import * bullet1 = bullet() player1 = player() enemy1 = enemy() pygame.init() print(player1.speed) x = y = 0 clock = pygame.time.Clock() while True: clock.tick(30) curr_event = pygame.event.poll() bullet1.draw(player1.pos, curr_event) player1.kbdraw(curr_event) enemy1.draw(player1.pos) pygame.display.update() if collidevec(enemy1.pos, bullet1.pos, 50): enemy1.reset() enemy1 = enemy() bullet1.reset() if bullet1.pos.x > 1024 or bullet1.pos.x < 0 or bullet1.pos.y > 768 or bullet1.pos.y < 0: bullet1.reset()
while running: clock.tick(fps) x_change = 0 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_a: x_change = - display_width / 8 elif event.key == pygame.K_d: x_change = display_width / 8 elif event.key == pygame.K_s: mis = bullet(player.rect.left, player.rect.top) missiles.add(mis) elif event.key == pygame.K_SPACE: mis = bomb(player.rect.left, player.rect.top) missiles.add(mis) elif event.key == pygame.K_q: running = False player.update(x_change) if t + 10 <= time.time(): a = alien() t = time.time() aliens.add(a)
def shoot(self): return bullet(self.x + self.width / 2 - constants.SS_BULLET_WIDTH / 2, self.y, constants.SPACESHIP_BULLET)