def _clear_board(self): self.attacked = CoordinateSet() self.hit = CoordinateSet() self.miss = CoordinateSet() self.occupied = CoordinateSet() self.ships = { Ship('Carrier'): CoordinateSet(), Ship('Battleship'): CoordinateSet(), Ship('Destroyer'): CoordinateSet(), Ship('Submarine'): CoordinateSet(), Ship('Patrol Boat'): CoordinateSet() } self.symbols = [EMPTY_COORDINATE for _ in range(100)] self.sunk = []
def run_game(): # init game and create screen object pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") # create a new ship ship = Ship(ai_settings, screen) aliens = Group() # create alien's group gf.create_fleet(ai_settings, screen, ship, aliens) # create a group to store the bullet bullets = Group() # start game's main circulation while True: # listen mouse and keyboard gf.check_events(ai_settings, screen, ship, bullets) ship.update() gf.update_bullets(aliens, bullets) gf.update_aliens(ai_settings, aliens) # redraw screen every circulation # let last screen be visible gf.update_screen(ai_settings, screen, ship, aliens, bullets)
def prep_ships(self): self.ships = Group() for ship_number in range(self.stats.ships_left): ship = Ship(self.cfg, self.screen) ship.rect.x = 10 + ship_number * ship.rect.width ship.rect.y = 10 self.ships.add(ship)
def smallest_unsunk_ship(self) -> Ship: """Return the smallest unsunk ship.""" smallest = Ship('Carrier') for ship, mask in self.ships.items(): if len(ship) != len(mask) and len(ship) < len(smallest): smallest = ship return smallest
def __init__(self): """ Initialize the game and creates game resources""" pygame.init() self.settings = Settings() # for windowed mode # self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height)) # for the fullscreen mode self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) self.settings.screen_width = self.screen.get_rect().width self.settings.screen_height = self.screen.get_rect().height pygame.display.set_caption("Alien Invasion") # Create an instance to store game statistics and create a scoreboard self.stats = GameStats(self) self.sb = ScoreBoard(self) self.ship = Ship(self) self.bullets = pygame.sprite.Group() self.stars = pygame.sprite.Group() self.aliens = pygame.sprite.Group() self._populate_sky() self._create_fleet() self.play_button = Button(self, 'Play')
def prep_ships(self): """Mostra quantas espaçonaves restam.""" self.ships = Group() for ship_number in range(self.stats.ships_left): ship = Ship(self.ai_settings, self.screen) ship.rect.x = 10 + ship_number * ship.rect.width ship.rect.y = 10 self.ships.add(ship)
def prep_ships(self): """ Show how many ships are left """ self.ships = pygame.sprite.Group() for ship_number in range(self.stats.ships_left): ship = Ship(self.ai_game) ship.rect.x = 10 + ship_number * ship.rect.width ship.rect.y = 10 self.ships.add(ship)
def run_game(): # 初始化游戏并创建一个屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) # screen = pygame.display.set_mode((1200, 800)) pygame.display.set_caption("Alian Invasion") # 创建Play按钮 play_button = Button(ai_settings, screen, "Play") # 设置背景颜色 bg_color = (85, 204, 220) # 创建一艘飞船 ship = Ship(ai_settings, screen) # 创建一个用于存储子弹的编组 bullets = Group() # 创建一艘飞船、一个子弹编组和一个外星人编组 aliens = Group() # 创建一个外星人 alien = Alien(ai_settings, screen) # 开始游戏的主循环 while True: gf.check_events(ai_settings, screen, play_button, ship, bullets) ship.update() # bullets.update() # 删除已消失的子弹 # for bullet in bullets.copy(): # if bullet.rect.bottom <= 0: # bullet.remove(bullet) print(len(bullets)) gf.update_bullets(bullets) gf.update_screen(ai_settings, screen, ship, alien, bullets, play_button) gf.update_screen(ai_settings, screen, ship, aliens, bullets) # 创建外星人群 gf.create_fleet(ai_settings, screen, ship, aliens) # 监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exeit() # 每次循环时都重绘屏幕 screen.fill(ai_settings.bg_color) # screen.fill(bg_color) ship.blitme() # 让最终绘制的屏幕可见 pygame.display.flip()
def run_game(): # Inicializa o jogo e cria um objeto para a tela pygame.init() ai_settings = Settings() screen = pygame.display.set_mode(( ai_settings.screen_width, ai_settings.screen_height, )) pygame.display.set_caption('Alien Invasion') # Cria o botão Play play_button = Button(ai_settings, screen, 'Play') # Cria uma instância para armazenar dados estatísticos do jogo stats = GameStats(ai_settings) sb = Scoreboard(ai_settings, screen, stats) # Cria uma espaçonave, um grupo de projéteis e um grupo de alienígenas ship = Ship(ai_settings, screen) bullets = Group() aliens = Group() # Cria a frota de alienígenas gf.create_fleet(ai_settings, screen, ship, aliens) # Inicia o laço principal do jogo while True: gf.check_events( ai_settings, screen, stats, sb, play_button, ship, aliens, bullets, ) if stats.game_active: ship.update() gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens, bullets) gf.update_aliens(ai_settings, screen, stats, sb, ship, aliens, bullets) gf.update_screen( ai_settings, screen, stats, sb, ship, aliens, bullets, play_button, )
def run_game(): # Initialize game and create a screen object. pygame.init() settings = Settings() screen = pygame.display.set_mode( (settings.screen_width, settings.screen_heigth)) pygame.display.set_caption("Alien Invasion 3000") ship = Ship(screen) # Start the main loop for the game. while True: gf.check_events(ship) gf.update_screen(settings, screen, ship)
def __init__(self): pygame.init() self.settings = Settings() self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) self.settings.screen_width = self.screen.get_rect().width self.settings.screen_height = self.screen.get_rect().height pygame.display.set_caption("Alien Invasion") self.stats = GameStats(self) self.sb = Scoreboard(self) self.ship = Ship(self) self.bullets = pygame.sprite.Group() self.aliens = pygame.sprite.Group() self._create_fleet() self.play_button = Button(self, 'Play')
def run_game(): # init pygame.init() # config cfg = Settings() screen = pygame.display.set_mode((cfg.screen_width, cfg.screen_height)) pygame.display.set_caption("Alien Invasion") # 创建飞船 ship = Ship(cfg, screen) # 创建子弹 bullets = Group() # 创建外星人 # alien = Alien(cfg, screen) aliens = Group() game_funcs.create_fleet(cfg, screen, aliens, ship) # 游戏统计信息 stats = GameStats(cfg) sb = Scoreboard(cfg, screen, stats) # 按钮控制 play_button = Button(cfg, screen, "Play") over_all = OverAll(cfg, screen, ship, bullets, aliens, stats, sb) # usage print("started game. press keyboard to start playing.") while True: game_funcs.check_events(cfg, screen, ship, bullets, aliens, stats, play_button, sb) if stats.game_active: ship.update() game_funcs.update_bullets(cfg, screen, ship, bullets, aliens, stats, sb) game_funcs.update_aliens(cfg, screen, ship, bullets, aliens, stats, sb) game_funcs.update_screen(cfg, screen, ship, bullets, aliens, stats, play_button, sb)
def run_game(): """运行游戏""" setting = Settings() screen = pygame.display.set_mode([setting.screen_width, setting.screen_height]) # 飞船 ship = Ship(setting, screen) # 子弹 bullets = Group() # 外星人 aliens = Group() gf.create_fleet(setting, screen, ship, aliens) # title pygame.display.set_caption("Alien Invasion") bg_color = (255, 255, 255) while True: gf.check_event(setting, screen, ship, bullets) ship.update() gf.update_aliens(setting, aliens) gf.update_bullets(bullets) gf.update_screen(setting, screen, ship, bullets, aliens)
def _ship_update(self, ship_info): if self.player_ship and ship_info.player_id == context.Player.room_player_id: return for ship in self.ships: if ship.id_ == ship_info.id: ship.spos = (ship_info.x, ship_info.y) # ship.player_id = ship_info.player_id ship.angle = ship_info.angle ship.thruttle = ship_info.thruttle ship.reverse_thruttle = ship_info.reverse_thruttle ship.life = ship.life return new_ship = Ship() new_ship.spos = (ship_info.x, ship_info.y) new_ship.player_id = ship_info.player_id new_ship.angle = ship_info.angle new_ship.thruttle = ship_info.thruttle new_ship.reverse_thruttle = ship_info.reverse_thruttle new_ship.life = ship.life if new_ship.player_id == context.Player.room_player_id: self.player_ship = new_ship self.add_ship(new_ship)
import pygame from game.ship import Ship # Define some colors black = (0, 0, 0) white = (255, 255, 255) green = (0, 255, 0) red = (255, 0, 0) pygame.init() # Set the width and height of the screen [width,height] size = [700, 500] screen = pygame.display.set_mode(size) ship = Ship(screen) pygame.display.set_caption("SeaFarers") #Loop until the user clicks the close button. done = False # Used to manage how fast the screen updates clock = pygame.time.Clock() # -------- Main Program Loop ----------- while not done: milliseconds = clock.tick(100) # milliseconds passed since last frame seconds = milliseconds / 1000.0 # seconds passed since last frame (float) # ALL EVENT PROCESSING SHOULD GO BELOW THIS COMMENT