def shoot(self, sock, server, clientid, deathtimeout): if deathtimeout > 100: if self.reloading == False: SPEED = 20 start = pygame.math.Vector2(self.x, self.y) mouse = pygame.mouse.get_pos() distance = mouse - start positions = pygame.math.Vector2(start) speed = distance.normalize() * SPEED newbullet = bullet.bullet(positions, speed) newbullet.room = self.room newbullet.idd = clientid newbullet.size = self.bulletsize if self.ammo < self.maxammo: self.ammo += 1 #self.all_bullets.append(newbullet) data2 = "joinbullet;" + str( newbullet.position.x) + ";" + str( newbullet.position.y + random.randint(-int(self.spread), int(self.spread)) ) + ";" + str(newbullet.speed.x) + ";" + str( newbullet.speed.y) + ";" + str( newbullet.idd) + ";" + str( newbullet.room) + ";" + str( newbullet.size) + "\n" data2 = data2.encode('UTF-8') sock.sendto(data2, server)
def update(self): if self.moving and self.update_time < pygame.time.get_ticks(): if self.move_time < pygame.time.get_ticks() and self.x_time == 0: if self.image == self.image1: self.image = self.image2 else: self.image = self.image1 self.move_time = pygame.time.get_ticks() + 400 if self.x >= self.width- 30: self.reverse_all() elif self.x <= 20: self.reverse_all() self.x= self.x + self.move_distance self.rect.center= self.x, self.y self.update_time= pygame.time.get_ticks()+ 50 x = random.randrange(0, self.shots_time) if x == 1: self.sound.play() image1 = 'graphics/enemy_bullet1.png' image2 = 'graphics/enemy_bullet2.png' image = random.choice([image1, image2]) b1 = load_image(image, -1) bomb = bullet.bullet(b1, self.screen, -500, -500, self.width, self.height, False) bomb.shoot(self.x, self.y) self.sprite_group.add(bomb) self.bomb_group.add(bomb) if self.x_time < pygame.time.get_ticks() and self.x_time > 0: self.kill()
def detectKey(self,character): char = self.user_input(self._speed[0]) if char == 'w': self.removeObject(character) character.up() self.writeObject(character,character) if char == 'a': self.removeObject(character) character.left() self.writeObject(character,character) if char == 'd': self.removeObject(character) character.right() self.writeObject(character,character) if char == 'b': temp_bullet=bullet(character.position50(),character.position51()) self._bullets.append(temp_bullet) self.writeObject(temp_bullet,character) character.score=-1 if char == ' ' and time.time()-character.lastTime() > 70: character.activateShield(time.time()) if char == 'p' and self._speed[2]==0: self._speed=[0.025,time.time(),1] self.write() if char == 'q': self.quitX()
def shoot(self, key): if key[pygame.K_e]: '''creates and calls the bullet class to shoot''' bill = bullet.bullet(self.rect.x, self.rect.y, self.angle) bill.move() coor = [bill.rect.x, bill.rect.y, bill.angle] return coor
def update(): screen.blit(backgroundimage, (0, 0)) screen.blit(car, (user.x, user.y)) s.sendto( b"%d %d %d %d 0" % (playingid, (user.y * 100) // screen_y, fire, user.health), (ip, port)) data, addr = s.recvfrom(1024) global enemy_y enemy_y, enemy_fire, enemy_health = list(map(int, data.decode().split())) if enemy_health <= 0: end("you won") if user.health <= 0: end("you lost") if enemy_fire == 1: enemybullets.append( bullet.bullet(screen_x - 10 - car_x, (enemy_y * screen_y) // 100 + car_y // 2)) screen.blit(car1, (screen_x - 10 - car_x, (enemy_y * screen_y) // 100)) for i in range(len(userbullets)): screen.blit(bulletimage, (userbullets[i].x, userbullets[i].y)) for j in range(len(enemybullets)): screen.blit(bulletimage1, (enemybullets[j].x, enemybullets[j].y)) healthbar(user.health, 1) healthbar(enemy_health, 2) pygame.display.update()
def update(self): if self.moving and self.update_time < pygame.time.get_ticks(): if self.move_time < pygame.time.get_ticks() and self.x_time == 0: if self.image == self.image1: self.image = self.image2 else: self.image = self.image1 self.move_time = pygame.time.get_ticks() + 400 if self.x >= self.width - 30: self.reverse_all() elif self.x <= 20: self.reverse_all() self.x = self.x + self.move_distance self.rect.center = self.x, self.y self.update_time = pygame.time.get_ticks() + 50 x = random.randrange(0, self.shots_time) if x == 1: self.sound.play() image1 = 'graphics/enemy_bullet1.png' image2 = 'graphics/enemy_bullet2.png' image = random.choice([image1, image2]) b1 = load_image(image, -1) bomb = bullet.bullet(b1, self.screen, -500, -500, self.width, self.height, False) bomb.shoot(self.x, self.y) self.sprite_group.add(bomb) self.bomb_group.add(bomb) if self.x_time < pygame.time.get_ticks() and self.x_time > 0: self.kill()
def update(self, *args): if self.hp <= 0: self.kill() return self.rect.y += self.speed_y self.rect.x += self.speed_x self.speed_y += 0.2 g_floor = args[0] g_projec = args[1] s = pygame.sprite.spritecollideany(self, g_floor) if s != None and self.speed_y > 0: self.speed_y *= -.7 pygame.key.set_repeat(True) keys = pygame.key.get_pressed() if keys[pygame.K_SPACE]: g_projec.add(bullet.bullet()) elif keys[pygame.K_LEFT]: self.speed_x = -abs(self.speed_x) elif keys[pygame.K_RIGHT]: self.speed_x = abs(self.speed_x)
def fireWeapon(self): startingPosition = (self.position[0] + self.sprite.get_width() / 2, self.position[1] + self.sprite.get_height()) startingVelocity = 3 if self.fireAtOnce == 1: self.firedWeapons.append( bullet.bullet(startingPosition, startingVelocity, self.firingAngle, self.scale, self.isRed)) elif self.firingPattern == 2: step = 2 * self.angleSpread / self.fireAtOnce for outAngle in linspace(self.firingAngle - self.angleSpread, self.firingAngle + self.angleSpread, self.fireAtOnce): self.firedWeapons.append( bullet.bullet(startingPosition, startingVelocity, outAngle, self.scale, self.isRed))
def shoot(self,key): print "time" + str(time.clock()) print "last" + str(self.lastshot) if (time.clock()) > self.lastshot: b = bullet(self.x+55, self.y-10,10) self.lastshot = time.clock()+self.timeBetweenShots self.bullets.append(b)
def shoot(self, time, player_point): if time % 30 == 0 and time <= 1200: ###Shoots bullets every second. bullet = bull.bullet() bullet.obj_x = self.x ###Initial position bullet.obj_y = self.y bullet.obj_vy = -10 ###Initial velocity bullet.obj_vx = 0 return bullet elif time >= 1200 and time % 20 == 0: ###Shoots bullets every 2/3 of a second. bullet = bull.bullet() bullet.obj_x = self.x bullet.obj_y = self.y bullet.obj_vy = -10 bullet.obj_vx = 0 return bullet else: return None
def ship_gun(x, y, modifiers): #modifiers = stats #create bullet object/class if cooldown = 0 bullet = b.bullet() #??, make var bullet an object bullet from bullet.py bullet.obj_x = x bullet.obj_y = y bullet.obj_vy = 10 return bullet
def loop(self, elapsed): #write this out self.time_since_reload += elapsed if self.time_since_reload > self.reload_time: newBullet = bullet.bullet(self.screen, self.x, self.y) game.addBullet(newBullet) newBullet.setVelocity(self.direction) self.time_since_reload = 0 print(self.time_since_reload)
def main(): #~ State Variables t0 = 0 tf = .3 dt = .001 times = arange(t0, tf + dt, dt) #/~ State Variables #~ Bullet-specific Variables name = '50 ATV BT' b = bullet(name, mass=50., bc=0.242, model=G1) #~/ Bullet-Specific Variables #~ Get Samples from sample_data import samples vm = samples[name]['v'][:, 1][0] sight = samples[name]['st'][:, 0][2] x = samples[name]['st'][:, 0] y = samples[name]['st'][:, 1] #/~ Get Samples #~ Integrate theta = find_angle(sight, vm, b, times) print "THETA:", theta y0 = [0., 0., vm * cos(theta), vm * sin(theta)] states = odeint(b.shoot, y0, times) states = array(states) #/~ Integrate #~ Plot fig, ax = subplots() r_mark, = ax.plot(x, y, 'ro-', alpha=.8) b_mark, = ax.plot(states[:, 0] / 3., states[:, 1] * 12., 'b-', 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' + '\n' + r'$\theta\approx' + str(round(theta, 6)) + r'$ radians', 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(self, time, player_point): if time % 10 == 0: bullet = bull.bullet() bullet.obj_x = self.x bullet.obj_y = self.y bullet.obj_vy = -10 bullet.obj_vx = (-self.x + player_point["x"]) / player_point["y"] return bullet else: return None
def shoot(self, time, player_point): if time % 10 == 0: ###Shoots bullets every 1/3 of a second. bullet = bull.bullet() bullet.obj_x = self.x ###Initial position bullet.obj_y = self.y bullet.obj_vy = -10 ###Initial velocity bullet.obj_vx = (-self.x + player_point["x"]) / player_point["y"] return bullet else: return None
def createBullet(self, shooter): if (len(self.deadBulletPool) != 0): b = self.deadBulletPool.pop() else: b = bullet() b.init(shooter) self.bulletPool.append(b) self.bulletsFired += 1 if (self.bulletsFired % 100 == 0): self.firedHitBulletHistory.append([self.bulletsFired, self.bulletsHit]) self.bulletsHit = 0
def main(): # ~ State Variables t0 = 0 tf = 0.3 dt = 0.001 times = arange(t0, tf + dt, dt) # /~ State Variables # ~ Bullet-specific Variables name = "50 ATV BT" b = bullet(name, mass=50.0, bc=0.242, model=G1) # ~/ Bullet-Specific Variables # ~ Get Samples from sample_data import samples vm = samples[name]["v"][:, 1][0] sight = samples[name]["st"][:, 0][2] x = samples[name]["st"][:, 0] y = samples[name]["st"][:, 1] # /~ Get Samples # ~ Integrate theta = find_angle(sight, vm, b, times) print "THETA:", theta y0 = [0.0, 0.0, vm * cos(theta), vm * sin(theta)] states = odeint(b.shoot, y0, times) states = array(states) # /~ Integrate # ~ Plot fig, ax = subplots() r_mark, = ax.plot(x, y, "ro-", alpha=0.8) b_mark, = ax.plot(states[:, 0] / 3.0, states[:, 1] * 12.0, "b-", lw=3, alpha=0.8) legend([r_mark, b_mark], ["Sample Trajectory", "Simulated (" + str(b) + ")"], numpoints=1) configure( ax=ax, title=r"G1 Model of Remington .233 cartridge" + "\n" + r"$\theta\approx" + str(round(theta, 6)) + r"$ radians", 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 ship_gun(x, y, ex, ho, pi, dam): #modifiers = stats #create bullet object/class if cooldown = 0 bullet = b.bullet() #??, make var bullet an object bullet from bullet.py bullet.obj_x = x bullet.obj_y = y bullet.obj_vy = 10 bullet.modifiers["explosive"] = ex bullet.modifiers["homing"] = ho bullet.modifiers["piercing"] = pi bullet.damage = dam return bullet
def createBullet(self, shooter): if (len(self.deadBulletPool) != 0): b = self.deadBulletPool.pop() else: b = bullet() b.init(shooter) self.bulletPool.append(b) self.bulletsFired += 1 if (self.bulletsFired % 100 == 0): self.firedHitBulletHistory.append( [self.bulletsFired, self.bulletsHit]) self.bulletsHit = 0
def handle_shoot(self, FrameRate): """handle shooting""" self.shoot_cooldown -= FrameRate if self.shoot_cooldown < 0.0: self.shoot_cooldown = 0.0 if self.shoot == True and self.shoot_cooldown == 0.0: new_bullet = bullet(self.rect.left + 16, self.rect.top, math.pi/2) self.projectiles.append(new_bullet) self.shoot_cooldown = 2.0 for i, projectile in enumerate(self.projectiles): if not projectile.update(FrameRate): self.projectiles.pop(i)
def __shoot_bullet(self): bullet_offset = 10 if ((self.bullet_ammo > 0) and (self.bullet_reload_time is 0)): new_bullet_position = vector2.vector2(self.position.x - bullet_offset,self.position.y + self.image.get_height()/2) print ("spawned bullet at %d %d") % (new_bullet_position.x, new_bullet_position.y) #if player facing right, offset bullet spawn position to his right side if(self.direction == 1): new_bullet_position.x += self.image.get_width() + 2*bullet_offset self.bullet_ammo -= 1 #spawn bullet at new_bullet_position with speed left or right depending on facing direction bullet.bullet_list.append(bullet.bullet(new_bullet_position.x,new_bullet_position.y,bullet.bullet_speed * self.direction,0))
def shoot(self): self.mousePos = self.mouseX, self.mouseY = pygame.mouse.get_pos() if self.direction == "left": if self.mouseX > self.rect.x + self.gunX: self.bulletDirection = "right" else: self.bulletDirection = "left" if (self.rect.x-self.mouseX) == 0: if self.rect.y-self.mouseY > 0: self.theta = 3*pi/2 else: self.theta = pi/2 else: self.theta = atan((self.rect.y-self.mouseY)/(self.rect.x-self.mouseX)) else: if self.mouseX > self.rect.x + self.width - self.gunX: self.bulletDirection = "right" else: self.bulletDirection = "left" if (self.rect.x+self.width-self.mouseX) == 0: if self.rect.y-self.mouseY > 0: self.theta = 3*pi/2 else: self.theta = pi/2 else: self.theta = atan((self.rect.y-self.mouseY)/(self.rect.x+self.width-self.mouseX)) if self.direction == "left": return bullet(self.x+self.gunX, self.y+self.gunY, self.bulletImage, self.theta, self.bulletVelocity, self.bulletDirection, checkClass(self)) else: return bullet(self.x+self.width-self.gunX, self.y+self.gunY, self.bulletImage, self.theta, self.bulletVelocity, self.bulletDirection, checkClass(self))
def check_keydown_event(event, ai_settings, screen, ship, bullets): '''捕获按键按下操作''' if event.key == pygame.K_RIGHT: ship.moving_rigth = True if event.key == pygame.K_LEFT: ship.moving_left = True if event.key == pygame.K_SPACE: if len(bullets) < ai_settings.bulltes_allowed: new_bullet = bullet(ai_settings, screen, ship) bullets.add(new_bullet) if event.key == pygame.K_q: pygame.quit() sys.exit()
def shoot(self, FrameRate): self.shoot_cooldown -= FrameRate if self.shoot_cooldown < 0.0: self.shoot_cooldown = 0.0 if self.shoot_cooldown == 0.0: if not self.dragon: new_bullet = bullet(self.rect.left+16, self.rect.bottom, -math.pi/2) self.bad_projectiles.append(new_bullet) self.shoot_cooldown = 6.0 else: new_fireball = fireball(self.rect.left+16, self.rect.bottom, -math.pi/2) self.bad_projectiles.append(new_fireball) self.shoot_cooldown = 4.0
def handle_shoot(self, FrameRate): self.shoot_cooldown -= FrameRate if self.shoot_cooldown < 0.0: self.shoot_cooldown = 0.0 if self.shoot == True and self.shoot_cooldown == 0.0: self.energy +=1 if not self.dragon: new_bullet = bullet(self.rect.left+16, self.rect.top, math.pi/2) self.projectiles.append(new_bullet) self.shoot_cooldown = 2.0 else: new_fireball = fireball(self.rect.left+16, self.rect.top, math.pi/2) self.projectiles.append(new_fireball) self.shoot_cooldown = 1.5 for i, projectile in enumerate(self.projectiles): if not projectile.update(FrameRate): self.projectiles.pop(i)
def update(self, keys, screen_width, screen_height, obstacle_list): if keys[pygame.K_LEFT]: self.angle -= min(abs(self.speed), 5) elif keys[pygame.K_RIGHT]: self.angle += min(abs(self.speed), 5) self.angle = self.angle % 360 if keys[pygame.K_UP] and self.speed < 20: self.speed += 1 elif keys[pygame.K_DOWN] and self.speed > -20: self.speed -= 1 if self.bullet_timeout > 0: self.bullet_timeout = self.bullet_timeout - 1 elif keys[pygame.K_RETURN] or keys[pygame.K_SPACE]: # Space is held, there is an autofire limit obstacle_list.append( bullet(screen_width, screen_height, self.center_x, self.center_y, self.angle, 0)) self.bullet_timeout = 9 else: # Space is released, we can fire immediately after. self.bullet_timeout = 0 self.speed = self.speed * 0.95 radians = self.angle * math.pi / 180. self.delta_x = math.cos(radians) * self.speed self.delta_y = math.sin(radians) * self.speed # wall collision x if (self.center_x + self.delta_x < 5 or self.center_x + self.delta_x > screen_width or self.center_y + self.delta_y < 5 or self.center_y + self.delta_y > screen_height): self.speed = self.speed * -0.1 self.delta_x = math.cos(radians) * self.speed self.delta_y = math.sin(radians) * self.speed self.x += self.delta_x self.y += self.delta_y self.center_x = int(self.x + self.width / 2) self.center_y = int(self.y + self.height / 2)
def update(self, asteroids: pygame.sprite.Group, dt: float, bullets: list): if self.status == ROCKET_STATUS.ALIVE: """ Calculates the angle made by the mouse pointer with the horizontal """ (mousex, mousey) = pygame.mouse.get_pos() mousex -= self.position[0] mousey -= self.position[1] magnitude = (mousex**2 + mousey**2)**0.5 angle_sin = mousey / magnitude angle_cos = mousex / magnitude self.angle = np.arctan2(-mousey, mousex) """ Accelerate towards mouse pointer if LMB is pressed """ if pygame.mouse.get_pressed(num_buttons=3)[0]: self.velocity[0] += rocket_accel_coeff * dt * angle_cos self.velocity[1] += rocket_accel_coeff * dt * angle_sin """ Fire if last shot was fired > 0.2 seconds ago and RMB is pressed """ if pygame.mouse.get_pressed()[2] and \ (pygame.time.get_ticks() - self.last_shot_tick)/1000 >= 0.1: bullets.append(bullet.bullet(self.position.copy(), self.angle)) self.last_shot_tick = pygame.time.get_ticks() """ Update position, rotate image, check for collisions """ self.position[0] += rocket_velocity_coeff * dt * self.velocity[0] self.position[1] += rocket_velocity_coeff * dt * self.velocity[1] self.image = pygame.transform.rotate(self.unrotated_image, np.degrees(self.angle) - 90) self.rect = self.image.get_rect() self.rect.center = (self.position[0], self.position[1]) for asteroid in asteroids: if pygame.sprite.collide_mask(self, asteroid): self.status = ROCKET_STATUS.DEAD if self.position[0] < 0 or self.position[0] > window_width or \ self.position[1] < 0 or self.position[1] > window_height: self.status = ROCKET_STATUS.DEAD
def shoot(settings, screen, player, bullets): # shoot bullets if len(bullets) < settings.bullets_allowed: new_bullet = bullet(settings, screen, player) bullets.add(new_bullet)
def main(): score = 0 score_font = pygame.font.Font(None, 36) runing = True clock = pygame.time.Clock() pygame.mixer.music.play() enemies = pygame.sprite.Group() #所有敌机 enemy1 = pygame.sprite.Group() #敌机1 en1 = add_enemy1(enemies, enemy1, randint(3, 5)) enemy2 = pygame.sprite.Group() #敌机2 en2 = add_enemy2(enemies, enemy2, randint(5, 10)) bullets = pygame.sprite.Group() #子弹 spbullets = pygame.sprite.Group() #超级子弹 en1bullets = pygame.sprite.Group() bd = False en1left = 0 en2left = 0 k = 1 #此参数用于将游戏结束后剩余飞机计数删除 delay = 100 #延时参数 delay2 = 100 #延时参数 delay3 = 100 #延时参数 delay4 = 100 #延时参数 run = 1 x = 0 #延时参数 y = 0 #延时参数 num1 = 0 num2 = 0 num3 = 0 level = 0 #难度计数 while runing: status = 0 screen.blit(bg, bg_rect) #背景打印 screen.blit(bg2, bg2_rect) bg_rect.top += 5 bg2_rect.top += 5 print(bg_rect.top) print(bg2_rect.top) if bg2_rect.top == height: bg2_rect.top = -bg2_rect.height - (bg_rect.height - height) if bg_rect.top == height: bg_rect.top = -bg2_rect.height - (bg_rect.height - height) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() score_text = score_font.render("Score:%s" % score, True, (255, 255, 255)) screen.blit(score_text, (10, 5)) bt = bullet.bullet(bgsize, Plane.rect.top, Plane.rect.left, Plane.speed) key_pressed = pygame.key.get_pressed() if key_pressed[K_w] or key_pressed[K_UP]: Plane.moveup() if key_pressed[K_s] or key_pressed[K_DOWN]: Plane.movedown() if key_pressed[K_a] or key_pressed[K_LEFT]: Plane.moveleft() status = -1 if key_pressed[K_d] or key_pressed[K_RIGHT]: Plane.moveright() status = 1 if key_pressed[K_j] or key_pressed[K_SPACE]: if level < 3: if not delay % 10: add_bullet(bullets) else: if not delay % 5: add_bulletx2(bullets) delay -= 1 if delay == 0: delay == 100 if key_pressed[K_p] or key_pressed[K_c]: if not delay2 % 10: sp = add_spbullet(spbullets) delay2 -= 1 if delay2 == 0: delay2 == 100 for each in enemy1: if each.active: enemy1.remove(each) while pygame.sprite.spritecollide(each, enemy1, False, pygame.sprite.collide_mask): each.rect.top -= 200 enemy1.add(each) screen.blit(each.image1, each.rect) each.move() ##敌机生成发射子弹集合 if level > 2: if not delay4 % 80: add_en1bullet(en1bullets, each.rect.top, each.rect.left, each.speed) delay4 -= 1 if delay4 == 0: delay4 = 100 print('yesyes') else: each.rect.top += 20 enemy1.remove(each) while pygame.sprite.spritecollide(each, enemy1, False, pygame.sprite.collide_mask): each.rect.top += 20 enemy1.add(each) screen.blit(destroyed_en1[num1], each.rect) print('num1:' + str(num1)) num1 += 1 if num1 == 6: num1 = 0 enemy1.remove(each) if Plane.active: score += 2000 for each in enemy2: if each.active: screen.blit(each.image1, each.rect) each.move() else: screen.blit(destroyed[num2], each.rect) num2 += 1 if num2 == 6: enemy2.remove(each) if Plane.active: score += 1000 num2 = 0 for each in bullets: screen.blit(each.image1, each.rect) each.launch() for it in enemy1: bd = pygame.sprite.collide_rect(each, it) if bd: it.life -= 1 if not it.life: it.active = False bullets.remove(each) for p in enemy2: bd2 = pygame.sprite.collide_rect(each, p) if bd2: p.life -= 1 if not p.life: p.active = False bullets.remove(each) if each.rect.top < 0: bullets.remove(each) for each in spbullets: if each.active: screen.blit(each.image1, each.rect) each.launch() else: screen.blit(each.image2[y], each.rect2) if not (delay3 % 6): y += 1 delay3 -= 1 if delay3 == 0: delay3 = 100 print(y) if y == 3: spbullets.remove(each) y = 0 for i in enemy1: bd3 = pygame.sprite.collide_rect(i, each) if bd3: for p in enemy1: p.active = False for e in enemy2: e.active = False each.active = False for e in enemy2: bd4 = pygame.sprite.collide_rect(e, each) if bd4: for p in enemy1: p.active = False for e in enemy2: e.active = False each.active = False for each in en1bullets: screen.blit(each.image1, each.rect) each.launch() bd5 = pygame.sprite.collide_rect(each, Plane) if bd5: Plane.active = False if each.rect.top > height: en1bullets.remove(each) ed = pygame.sprite.spritecollide(Plane, enemy1, False, pygame.sprite.collide_mask) ed2 = pygame.sprite.spritecollide(Plane, enemy2, False, pygame.sprite.collide_mask) if ed or ed2: Plane.active = False for e in enemies: e.active = False if not enemy1 and not enemy2 and Plane.active: level += 1 enemies = pygame.sprite.Group() #所有敌机 enemy1 = pygame.sprite.Group() #敌机1 en1 = add_enemy1(enemies, enemy1, 10) enemy2 = pygame.sprite.Group() #敌机2 en2 = add_enemy2(enemies, enemy2, randint(10, 15)) if level == 3: pass if Plane.active: if status == 0: screen.blit(Plane.image1, Plane.rect) elif status == 1: screen.blit(Plane.image3, Plane.rect) elif status == -1: screen.blit(Plane.image2, Plane.rect) else: screen.blit(gameover, (0, 0)) with open('record.txt', 'r') as f: score_recorded = int(f.read()) if score > score_recorded: with open('record.txt', 'w') as f: f.write(str(score)) over_text = score_font.render("Best Score: %s" % score_recorded, True, (255, 255, 255)) screen.blit(over_text, (220, 250)) screen.blit(playagain, (250, 300)) for i in enemy1: i.active = False for e in enemy2: e.active = False run = 0 if pygame.mouse.get_pressed()[0]: pos = pygame.mouse.get_pos() if 250 < pos[0] < 400 and 300 < pos[1] < 375: Plane.active = True score = 0 level = 0 x += 1 if x == 3: num3 += 1 x = 0 if num3 == 8: num3 = 0 pygame.display.update() pygame.display.flip() clock.tick(30)
def update(self): # Quit game when needed x, y = pygame.mouse.get_pos() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE and self.player.bananas > 0 and not self.player.isDestroyed( ): self.player.bananas -= 1 self.entities.append( bullet.bullet(self.player.rect.x, self.player.rect.y, x, y)) enemycounter = 0 for entity in self.entities: entity.update() # Check for bullet-enemy collision if isinstance(entity, bullet.bullet): for collision_entity in self.entities: if isinstance( collision_entity, enemy.Enemy ) and entity.isactive and entity.rect.colliderect( collision_entity.rect): entity.disable() collision_entity.hascollided = True self.sounds['impact'].play() elif isinstance( collision_entity, Player.Player ) and not entity.isactive and entity.rect.colliderect( collision_entity.rect): collision_entity.bananas += 1 entity.hascollided = True # Check for player-enemy collision elif isinstance(entity, Player.Player): for collision_entity in self.entities: if isinstance(collision_entity, enemy.Enemy) and entity.rect.colliderect( collision_entity.rect): entity.hascollided = True self.sounds['gameover'].play() for i in self.music: self.music[i].stop() self.gameOver() return if (self.win): for mapentitylist in self.mapobjects: for mapentity in mapentitylist: if mapentity.bridge and entity.rect.colliderect( mapentity.rect): self.sounds['stagecomplete'].play() self.win = 0 self.level += 1 self.initVars(self.level) return elif isinstance(entity, enemy.Enemy): enemycounter += 1 for mapentitylist in self.mapobjects: for mapentity in mapentitylist: for collision_entity in self.entities: if mapentity.collision and isinstance( collision_entity, Player.Player) and mapentity.rect.colliderect( collision_entity.rect): if collision_entity.rect.x < mapentity.rect.x: collision_entity.rect.x -= config.PLAYER_MOVEMENT_SPEED elif collision_entity.rect.x > mapentity.rect.x: collision_entity.rect.x += config.PLAYER_MOVEMENT_SPEED if collision_entity.rect.y < mapentity.rect.y: collision_entity.rect.y -= config.PLAYER_MOVEMENT_SPEED elif collision_entity.rect.y > mapentity.rect.y: collision_entity.rect.y += config.PLAYER_MOVEMENT_SPEED mapentity.refresh = 4 elif (isinstance(collision_entity, enemy.Enemy) or isinstance(collision_entity, Player.Player) or isinstance(collision_entity, bullet.bullet) ) and mapentity.rect.colliderect( collision_entity.rect): mapentity.refresh = 2 if enemycounter == 0: self.win = True self.entities = [x for x in self.entities if not x.isDestroyed()]
def start(self): ''' Runs the game screen. param list:(object) only needs self return: (int) returns the score the player got ''' move = [False, False] done = False while not done: self.alien.append(aliens.aliens(self.image[1])) self.spritealien.add(self.alien) if len(self.alien) % 15 == 0: self.speed += 1 for a in range(len(self.alien)): while self.alien[a].rect.y < 700: pygame.time.delay(5) self.alien[a].move(self.speed) self.display.blit(self.background, (0, 0)) self.spriteship.draw(self.display) self.spritealien.draw(self.display) self.spritebullet.draw(self.display) self.display.blit(self.value, (30, 30)) pygame.display.flip() for event in pygame.event.get(): if event.type == pygame.QUIT: done = True elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: move[0] = True elif event.key == pygame.K_RIGHT: move[1] = True elif event.key == pygame.K_SPACE: self.bullet.append( bullet.bullet(self.ship.rect.x + 60, self.ship.rect.y)) self.spritebullet.add(self.bullet) elif event.type == pygame.KEYUP: if event.key == pygame.K_LEFT: move[0] = False elif event.key == pygame.K_RIGHT: move[1] = False if move[0]: self.ship.moveLeft(self.speed) elif move[1]: self.ship.moveRight(self.speed) for b in range(len(self.bullet)): if self.bullet[b].rect.y > -20: self.bullet[b].shootBullet() if self.bullet[b].rect.colliderect( self.alien[a].rect ) and self.bullet[b].rect.y > 65: self.bullet[b].kill() self.alien[a].kill() self.bullet[b].exit() self.alien[a].exit() self.score.increase() self.value = self.font.render( 'Score: ' + str(self.score.count), True, (0, 255, 0)) self.spriteship.draw(self.display) self.spritealien.draw(self.display) self.spritebullet.draw(self.display) pygame.display.flip() if self.ship.rect.colliderect(self.alien[a].rect): return self.score.count elif 640 <= self.alien[a].rect.y <= 700: return self.score.count self.display.blit(self.background, (0, 0)) self.spriteship.draw(self.display) self.spritealien.draw(self.display) self.spritebullet.draw(self.display) self.display.blit(self.value, (30, 30)) pygame.display.flip()
def main(): WIDTH = 500 HEIGHT = 800 player = mob.player((0, 0), 6, 10) clock = pygame.time.Clock() enemy = mob.enemy((HEIGHT / 2, WIDTH / 2), 3, 10) screen = pygame.display.set_mode((HEIGHT, WIDTH)) all_entities = pygame.sprite.Group() enemies = pygame.sprite.Group() all_entities.add(player) bullets = [] ADDENEMY = pygame.USEREVENT + 1 pygame.time.set_timer(ADDENEMY, 2500) isRunning = True while isRunning: screen.fill((0, 0, 0)) #Check for input for event in pygame.event.get(): #exit button if event.type == pygame.QUIT: pygame.quit() isRunning = False #key input elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() isRunning = False #mouse input elif event.type == pygame.MOUSEBUTTONDOWN: target = pygame.mouse.get_pos() bullets.append(bullet.bullet(player.get_XY(), 3, target)) elif event.type == ADDENEMY: yEnemy = random.randint(1, HEIGHT) xEnemy = random.randint(1, WIDTH) enemies.add(mob.enemy((yEnemy, xEnemy), 3, 10)) key = pygame.key.get_pressed() if key[pygame.K_d]: player.move("right") if key[pygame.K_s]: player.move("down") if key[pygame.K_a]: player.move("left") if key[pygame.K_w]: player.move("up") #Events surf = pygame.Surface(screen.get_size()) surf.fill((150, 0, 50)) screen.blit(surf, (0, 0)) player.draw(screen, (0, 128, 255)) for enemy in enemies: enemy.draw(screen, (0, 255, 0)) enemy.path() for aBullet in bullets: if aBullet.move() == 0: pass else: aBullet.draw(screen) aBullet.move() for enemy in enemies: if pygame.sprite.collide_rect(aBullet, enemy): enemy.kill() #display pygame.display.flip() #Framess clock.tick(30)
running = splash.show_splash(screen) screen.blit(bg_image, (0, 0)) pygame.display.flip() elif event.key== K_ESCAPE: running = splash.show_splash(screen) screen.blit(bg_image, (0, 0)) pygame.display.flip() if event.key == K_LEFT or keys_pressed[K_LEFT]: s.moveL() elif event.key== K_RIGHT or keys_pressed[K_RIGHT]: s.moveR() if event.key== K_SPACE or keys_pressed[K_SPACE]: if spacebar_timer < pygame.time.get_ticks(): s_shooting.play() b_image =load_resources.load_image('graphics/bullet.png') b= bullet.bullet(b_image, screen, -500, -500, width, height, True) b.shoot(s.x, s.y) sprites.add(b) bullets.add(b) spacebar_timer= pygame.time.get_ticks() + 450 ###Creates UFO if enemy2_time < pygame.time.get_ticks(): e2 = enemies.enemy2(width, height) sprites.add(e2) enemy_group.add(e2) enemy2_time = pygame.time.get_ticks() + random.randrange(15000, 35000) ###Check for bullets to collide with enemies for hit_enemies in pygame.sprite.groupcollide(bullets, enemy_group, False, False).values(): for e in hit_enemies: score.add(e.get_points()) for hit_enemies in pygame.sprite.groupcollide(enemy_group, bullets, False, True).keys():
def shoot(self): return bullet(self.x + self.width / 2, self.y + self.height / 2, -1, self.colour, self.screen)
global_stuff.screen_length) # full board fb.prepare_board() board = gameboard.gameboard( global_stuff.screen_height, global_stuff.screen_length) # Partial board displayed on the screen # Write to the partial board on the screen board.write_full_on_board(fb, 0) h = hero() # Hero e = enemy() # Enemy # MAKE THE ENEMY COME IN THE 1st SCREEN IF IN TESTING MODE global_stuff.homework() if(global_stuff.test_enemy == 1): global_stuff.enemy_come = 1 # BULLETS bullet_list = [bullet() for _ in range(10)] for i in range(global_stuff.bullets_left): bullet_list[i].make_deployable() if(global_stuff.debug == 1): print('Game starts at '+str(global_stuff.game_start_time)) # TIME MANAGEMENT global_stuff.game_start_time = time.time() # get the start time of the game # INITIALISE THE LOCAL COUNTERS USED gravity_ok = 0 restore_bullet = 0 # OTHER LOCAL GAME VARIABLES isdead = 'Alive' gravity_counter = 0
def main(): pygame.init() pygame.mixer.pre_init() player = score.score() #pygame.mixer.music.load('betsky.ogg') #pygame.mixer.music.play(loops = 15, start = 0.0) screen = pygame.display.set_mode((600,600)) background = pygame.Surface(screen.get_size()) background = background.convert() nimbus = ship.ship(100.0,100.0,90) #pewpew = bullet.bullet(nimbus.rect.x,nimbus.rect.y,nimbus.angle) aster = asteriod.asteriod(100,100,90) background.fill((0,0,0)) white = (250, 250,250) screen.blit(background,(0,0)) laser = bullet.bullet(10,10,0) #pygame.transform.scale(aster, (20, 20)) #pygame.transform.scale(pewpew, (5, 5)) pygame.display.flip() randx = random.randrange(300) randy = random.randrange(300) allsprites = pygame.sprite.Group((aster)) shp = pygame.sprite.Group((nimbus,laser)) clock = pygame.time.Clock() pygame.key.set_repeat(1,10) start_screen = True game_screen = False end_screen = False #TM = pygame.USEREVENT+1 #evnt = pygame.event.Event(TM, asteroid) #tmr = pygame.time.set_timer(pygame.USEREVENT +1, 4000) while start_screen == True: myfont = pygame.font.SysFont("Britannic Bold", 40) intro = myfont.render("Welcome, press enter to start", 1,white) game_over = myfont.render(" G A M E O V E R", 4,white) for event in pygame.event.get(): if event.type == pygame.QUIT: return keys = pygame.key.get_pressed() if keys[pygame.K_KP_ENTER ]: print("test") start_screen = False game_screen = True screen.blit(intro,(100,100)) pygame.display.flip() while game_screen == True: screen.blit(background,(0,0)) clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: return #if event.type == evnt: #return crash = pygame.sprite.collide_rect(aster, nimbus) counter = 0 if crash: nimbus.rect.x =(300) nimbus.rect.y =(300) #counter += 1 nimbus.livesUpdate() if nimbus.health<0: game_screen = False end_screen = True print('health:',nimbus.health) print(counter) if counter == 1: screen.blit(game_over,(100,100)) #player.score = 0 shot = pygame.sprite.spritecollide(laser,allsprites,True) if shot: allsprites.add(aster) aster.rect.x =random.randrange(250) aster.rect.y =random.randrange(250) laser.rect.x = 6000 laser.rect.y = 6000 pygame.display.flip() player.points(50) print('hit') keys = pygame.key.get_pressed() nimbus.move(keys) nimbus.shoot(keys) if keys[pygame.K_e]: coor = nimbus.shoot(keys) laser.setCoor(coor[0] + 30,coor[1],coor[2]) #if event.type == pygame.event.Event(crash)+1: # allsprites.add(aster) #allsprites.add(laser) aster.move(aster.angle) currentscore = str(player.current()) pygame.display.set_caption(currentscore) laser.update() allsprites.draw(screen) shp.draw(screen) screen.blit(nimbus.image,nimbus.rect) screen.blit(laser.image,laser.rect) pygame.display.flip() #quit() while end_screen == True: playerscore = player.player() playerscore = 'High Score' + ':' + str(playerscore) myfont = pygame.font.SysFont("Britannic Bold", 40) intro = myfont.render("Gameover, press enter to continue", 1,white) scorer = myfont.render(playerscore, 0 , white) scorer = myfont.render(playerscore, 0 , white) for event in pygame.event.get(): if event.type == pygame.QUIT: return keys = pygame.key.get_pressed() if keys[pygame.K_KP_ENTER ]: print("test") end_screen = False start_screen = True screen.blit(intro,(100,100)) screen.blit(scorer,(100,50)) pygame.display.flip()
def shoot(self): self.bullet = bullet(self.position) self.bullets.append(self.bullet)
def main(): pygame.init() pygame.mixer.pre_init() player = score.score() screen = pygame.display.set_mode((600,600)) background = pygame.Surface(screen.get_size()) background = background.convert() nimbus = ship.ship(100.0,100.0,90) #pewpew = bullet.bullet(nimbus.rect.x,nimbus.rect.y,nimbus.angle) aster = asteriod.asteriod(100,100,90) background.fill((0,0,0)) white = (250, 250,250) screen.blit(background,(0,0)) laser = bullet.bullet(10,10,0) #pygame.transform.scale(aster, (20, 20)) #pygame.transform.scale(pewpew, (5, 5)) pygame.display.flip() randx = random.randrange(300) randy = random.randrange(300) allsprites = pygame.sprite.Group((nimbus,aster,)) clock = pygame.time.Clock() pygame.key.set_repeat(1,10) start_screen = True game_screen = False end_screen = False while start_screen == True: myfont = pygame.font.SysFont("Britannic Bold", 40) intro = myfont.render("Welcome, press enter to start", 1,white) game_over = myfont.render(" G A M E O V E R", 4,white) for event in pygame.event.get(): if event.type == pygame.QUIT: return keys = pygame.key.get_pressed() if keys[pygame.K_KP_ENTER ]: print("test") start_screen = False game_screen = True screen.blit(intro,(100,100)) pygame.display.flip() while game_screen == True: screen.blit(background,(0,0)) clock.tick(120) for event in pygame.event.get(): if event.type == pygame.QUIT: return #pygame.mixer.music.load('theme.mp3') #plays music #pygame.mixer.music.play( loops = -1, start = 0.0) counter = 0 '''if pygame.sprite.collide_rect(aster,nimbus): for i in range counter collision: counter += 1 print('cross') #print(counter)''' if counter == 5: screen.blit(game_over,(100,100)) if pygame.sprite.collide_rect(aster,laser): print('hit') keys = pygame.key.get_pressed() nimbus.move(keys) nimbus.shoot(keys) if keys[pygame.K_e]: coor = nimbus.shoot(keys) laser.setCoor(coor[0] + 30,coor[1],coor[2]) allsprites.add(laser) currentscore = str(player.current()) pygame.display.set_caption(currentscore) laser.update() allsprites.draw(screen) pygame.display.flip() #quit() while end_screen == True: playerscore = player.player() playerscore = 'High Score' + ':' + str(up) print("up", up) myfont = pygame.font.SysFont("Britannic Bold", 40) intro = myfont.render("Gameover, press enter to continue", 1,white) scorer = myfont.render(up, 0 , white) for event in pygame.event.get(): if event.type == pygame.QUIT: return keys = pygame.key.get_pressed() if keys[pygame.K_KP_ENTER]: print("test") end_screen = False start_screen = True screen.blit(intro,(100,100)) screen.blit(scorer,(100,200)) pygame.display.flip()
def add_bullet(g2): bt = bullet.bullet(bgsize, Plane.rect.top, Plane.rect.left, Plane.speed) g2.add(bt)
def fire_bullets(ai_settings,screen,ship_1,bullets): if len(bullets) < ai_settings.bullets_allowed: new_bullet=bullet(ai_settings,screen,ship_1) bullets.add(new_bullet)