def __init__(self): self.__playing_board = Playing_board(40, 40) self.__blocks = { Block(8, i) for i in list(range(5)) + list(range(35, 40)) }.union( Block(i, 8) for i in list(range(5)) + list(range(35, 40))).union( Block(31, i) for i in list(range(5)) + list(range(35, 40))).union( Block(i, 31) for i in list(range(5)) + list(range(35, 40))).union( Block(random.randint(10, 30), random.randint(10, 30)) for i in range(100)).union( Block(random.randint(5, 35), random.randint(5, 35), True) for i in range(400)) self.__players = [ Player(random.randint(0, 4), random.randint(0, 4), 1), Player(random.randint(35, 39), random.randint(0, 4), 2), Player(random.randint(0, 4), random.randint(35, 39), 3), Player(random.randint(35, 39), random.randint(35, 39), 4) ] self.__bombs = []
def restart(): global game_stop, flag_gravity, debug_mode, upgrading_timer, stars, mouse_position, player, timer, boss_mode, intro, bgs, boss_score game_stop = 0 flag_gravity = False debug_mode = False boss_mode = False intro = False stars = [] timer = 0 upgrading_timer = upgrade_bin boss_score = boss_bin player = Player('rocket', pos=(WIDTH / 2, HEIGHT / 2)) play('deepspacetravels', -1) bgs = bg_restart()
def parse(message): message = message.split('%') type_of_elem = message[0] elem = message[1].split(',') if type_of_elem == "<class 'game_objects.Player'>": return Player(x=int(elem[0][3:]), y=int(elem[1][4:]), id=int(elem[2][5:])) elif type_of_elem == "<class 'game_objects.Bomb'>": #print(elem) return Bomb(x=int(elem[0][3:]), y=int(elem[1][4:]), range=int(elem[2][8:]), timer=float(elem[3][8:]))
def initial_game_state(self): assets = self.asset_factory terrain = [ Terrain(initial_pos=pygame.Vector2(-200, 800), animations=assets.wall_animation(900, 100)), Terrain(initial_pos=pygame.Vector2(-200, 0), animations=assets.wall_animation(20, 800)), Terrain(initial_pos=pygame.Vector2(700, 0), animations=assets.wall_animation(50, 900)), Terrain(initial_pos=pygame.Vector2(300, 300), animations=assets.wall_animation(50, 50)), Terrain(initial_pos=pygame.Vector2(200, 500), animations=assets.platform_animation(300, 8), platform=True), Terrain(initial_pos=pygame.Vector2(200, 600), animations=assets.platform_animation(300, 8), platform=True) ] background_layers = defaultdict(list) fence_width = 373 for bg in [ Background(assets.background(), pygame.Vector2(0, 0), 0), Background(assets.foothills(), pygame.Vector2(-50, 50), 15), Background(assets.mountains(), pygame.Vector2(-50, 50), 30), Background(assets.chain_fence(), pygame.Vector2(400, 1090), 1), Background(assets.chain_fence(), pygame.Vector2(400 + fence_width, 1090), 1) ]: background_layers[bg.z].append(bg) state = GameState( player=Player(animations=assets.player_animations(), initial_pos=pygame.Vector2(320, 550)), enemies=[ *[ enemy_classes.AssaultSoldier( initial_pos=pygame.Vector2(50 + x, 400), move_speed=random.randint(3, 6), animations=assets.assault_soldier_green()) for x in range(50, 600, 25) ] ], terrain=terrain, background_layers=background_layers, clock=pygame.time.Clock(), hud={'font': pygame.font.Font(None, 20)}) return state
def player_load(): exists = False common.app_dir = pyglet.resource.get_settings_path(common.app_name) common.player_filename = os.path.join(common.app_dir, common.player_filename) if not os.path.exists(common.player_filename): print( str(common.player_filename) + " file not found, creating Anonymous player...") common.player = Player("Anonymous", None, [None, None, None, None, None, None]) with open(common.player_filename, 'wb') as output: pickle.dump(common.player, output, pickle.HIGHEST_PROTOCOL) else: exists = True with open(common.player_filename, 'rb') as input_data: common.player = pickle.load(input_data) for i in range(len(common.scores)): common.scores[i] = common.player.scores[i] common.player.online = common.ONLINE return exists
def load_map(self, filename, resources): with open(str(filename), 'r') as f: tile_map_populated = False tiles = [] rows, cols = 0, 0 tile_w, tile_h = 64, 64 this_cols = 0 y = 0 collides = True layer = 0 offset_x, offset_y = 0, 0 tile_repeat = 1 row_repeat = 1 background = False for line in f.readlines(): line_strip = line.strip() if len(line_strip) == 0: if tile_map_populated: tile_map = TileMap(res=resources, tile_h=tile_h, tile_w=tile_w) tile_map.add(tiles) tile_map.rows = rows tile_map.cols = cols tile_map.collides = collides tile_map.background = background self.tilemaps[layer] = tile_map if type(layer) is int: layer += 1 else: layer += "1" tile_map_populated = False tiles = [] rows, cols = 0, 0 tile_w, tile_h = 64, 64 offset_x, offset_y = 0, 0 collides = True tile_repeat = 1 row_repeat = 1 background = False else: continue elif (line_strip[0] == "/"): continue elif line_strip[0] == "@": tokens = line_strip.split() if tokens[0] == "@offset": if len(tokens) >= 3: if tokens[1].isalnum() and tokens[2].isalnum(): offset_x, offset_y = int(tokens[1]), int( tokens[2]) y = 0 elif tokens[0] == "@pad": if len(tokens) >= 3: if tokens[1].isalnum() and tokens[2].isalnum(): offset_x += int(tokens[1]) y += int(tokens[2]) elif tokens[0] == "@tile_size": if len(tokens) >= 3: tile_w, tile_h = int(tokens[1]), int(tokens[2]) elif tokens[0] == "@collide": if len(tokens) >= 2: if tokens[1] == "off": collides = False else: collides = True elif tokens[0] == "@layer": if len(tokens) >= 2: if tokens[1].isalnum(): layer = int(tokens[1]) else: layer = tokens[1] elif tokens[0] == "@repeat_h": if len(tokens) >= 2: if tokens[1].isalnum(): tile_repeat = int(tokens[1]) elif tokens[0] == "@repeat_v": if len(tokens) >= 2: if tokens[1].isalnum(): row_repeat = int(tokens[1]) elif tokens[0] == "@tile_grid": if len(tokens) >= 3: if tokens[1].isalnum() and tokens[2].isalnum(): tile_repeat = int(tokens[1]) row_repeat = int(tokens[2]) elif tokens[0] == "@bg": layer = "bg" continue else: tile_ids = [x.strip() for x in line_strip.split(",")] * tile_repeat tile_repeat = 1 row_len = len(tile_ids) #print("row ",row_len) tile_ids *= row_repeat row_repeat = 1 x = 0 this_cols = 0 for id in tile_ids: if id.isalnum(): tile_res = resources[id] if tile_res.type == "tile": tile = Tile(rect=pygame.Rect( offset_x + x, offset_y + y, tile_res.image.get_width(), tile_res.image.get_height()), image=resources[id].get_image()) tiles.append(tile) tile_map_populated = True elif tile_res.type == "player": rect = pygame.Rect(offset_x + x, offset_y + y, tile_res.image.get_width(), tile_res.image.get_height()) self.player = Player(image=tile_res.image, rect=rect) else: self.entities.append( self.entity_spawn(resource=tile_res, x_pos=offset_x + x, y_pos=offset_y + y)) x += tile_w this_cols += 1 if this_cols >= row_len: y += tile_w this_cols = 0 rows += 1 x = 0 if this_cols > cols: cols = this_cols #y += tile_h rows += 1 if tile_map_populated: tile_map = TileMap(res=resources, tile_h=tile_h, tile_w=tile_w) tile_map.add(tiles) tile_map.rows = rows tile_map.cols = cols tile_map.collides = collides self.tilemaps[layer] = tile_map #print(layer) self.tilemaps = OrderedDict( sorted(self.tilemaps.items(), key=lambda x: x[0], reverse=True)) return self.player, self.tilemaps, self.entities
if if_walk: man.actions.walk = True elif (keys[K_RIGHT] or keys[K_d]): man.s_actions.right = True if if_walk: man.actions.walk = True arrow_list = pygame.sprite.Group() enemy_list = pygame.sprite.Group() man_list = pygame.sprite.Group() sprites_list = pygame.sprite.Group() #mainloop man = Player(200, GROUND_LEVEL, 64, 64, arrow_list) sprites_list.add(man) man_list.add(man) for _ in range(ENEMY_COUNT): __enemy = Enemy(random.randint(40, 660), GROUND_LEVEL, 64, 64, man_list, arrow_list) enemy_list.add(__enemy) sprites_list.add(__enemy) run = True while run: clock.tick(FRAMERATE) for event in pygame.event.get(): keys = pygame.key.get_pressed() if event.type == pygame.QUIT or keys[pygame.K_ESCAPE]: run = False
def generate_level(level): global loaded_level if loaded_level == 'level_dark.txt': pygame.mixer.music.load('data/music/dark.mp3') pygame.mixer.music.play(-1) elif loaded_level == 'level_light.txt': pygame.mixer.music.load('data/music/light.mp3') pygame.mixer.music.play(-1) for y in range(len(level)): for x in range(len(level[y])): # Base if level[y][x] == '@': if loaded_level == 'level_light.txt': StaticTile('light_floor', x, y) Player(x, y) else: StaticTile('floor', x, y) Player(x, y) if level[y][x] == '#': SolidTile('wall', x, y) if level[y][x] == '.': StaticTile('floor', x, y) if level[y][x] == 'q': StaticTile('floor_black', x, y) if level[y][x] == ',': StaticTile('light_floor', x, y) # Special if level[y][x] == 'b': StaticTile('floor', x, y) Box('box', x, y) if level[y][x] == 'l': LavaTile('lava0', x, y) # Entity if level[y][x] == 'z': if loaded_level == 'level_light.txt': StaticTile('light_floor', x, y) Entity('diamond', x, y, 'diamond') else: StaticTile('floor', x, y) Entity('diamond', x, y, 'diamond') if level[y][x] == 'd': StaticTile('floor', x, y) Entity('closed_door', x, y, 'door') if level[y][x] == 'k': StaticTile('floor', x, y) Entity('key', x, y, 'key') # Enemy if level[y][x] == 'm': StaticTile('floor', x, y) Enemy(1, x, y) if level[y][x] == 'M': StaticTile('floor', x, y) Enemy(2, x, y) # Wall doors if level[y][x] == '5': StaticTile('floor', x, y) Entity('button', x, y, 'button', key=0) if level[y][x] == '6': StaticTile('floor', x, y) Entity('button', x, y, 'button', key=1) if level[y][x] == '7': StaticTile('floor', x, y) Entity('button', x, y, 'button', key=2) if level[y][x] == '8': StaticTile('floor', x, y) Entity('button', x, y, 'button', key=3) if level[y][x] == '9': StaticTile('floor', x, y) Entity('button', x, y, 'button', key=4) if level[y][x] == '0': StaticTile('floor', x, y) WallDoor(x, y, 0) if level[y][x] == '1': StaticTile('floor', x, y) WallDoor(x, y, 1) if level[y][x] == '2': StaticTile('floor', x, y) WallDoor(x, y, 2) if level[y][x] == '3': StaticTile('floor', x, y) WallDoor(x, y, 3) if level[y][x] == '4': StaticTile('floor', x, y) WallDoor(x, y, 4) # End if level[y][x] == 'c': StaticTile('floor', x, y) Entity('strange_circle', x, y, 'strange_circle') if level[y][x] == 'C': StaticTile('light_floor', x, y) Entity('light_circle', x, y, 'light_circle') if level[y][x] == 'p': StaticTile('light_floor', x, y) SolidTile('wall_door_l1', x, y) if level[y][x] == 'P': StaticTile('light_floor', x, y) SolidTile('wall_door_l2', x, y) if level[y][x] == 'u': StaticTile('light_floor', x, y) SolidTile('corner1', x, y) if level[y][x] == 'U': StaticTile('light_floor', x, y) SolidTile('corner2', x, y) if level[y][x] == 'I': StaticTile('light_floor', x, y) SolidTile('corner3', x, y) if level[y][x] == 'i': StaticTile('light_floor', x, y) SolidTile('corner4', x, y)
import os import pygame import random import time from settings import SIZE, WHITE, HEIGHT, WIDHT, BGCOLOR from game_objects import Player, Bullet, EnemyAircraft from math import pi, cos, sin os.environ['SDL_VIDEO_CENTERED'] = '1' pygame.init() game_over = False win = pygame.display.set_mode(SIZE) pygame.display.set_caption("Shooter") player = Player() enemies = [] exampleEnemy = EnemyAircraft(2, 270) enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(1, 3 * pi / 2, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT * 3 // 4, -10] playerBullets = [] numberbgCadr = 0 intervalPlayerSnaryad = 0 intervalEnemySnaryad = 0
def level11(win, money): print( "rmervmeivmiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" ) # __________________________БЛОК ПЕРЕМЕННЫХ начинается___________________________ player = Player() coins = [] exampleCoin = Coin(1, 1) exampleCoin.image = pygame.transform.scale(exampleCoin.image, (25, 25)) exampleCoin.rect.center = [20, 20] event = 0 enemies = [] exampleEnemy = EnemyAircraft(270, 1, 10) enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(270, 1, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT * 3 // 4, -10] playerBullets = [] numberbgCadr = 0 intervalPlayerSnaryad = 0 intervalEnemySnaryad = 0 intervalCoin = 0 intervalCoin2 = 0 intervalPause12 = 0 intervalPause23 = 0 global numberCoinImg numberCoinImg = 1 global numberCoinImg2 numberCoinImg2 = 1 playerTimerSnaryad = True enemiesTimerSnaryad = True mouseCoords = [] clock = pygame.time.Clock() rightleftGun = 30 constantShooting = -1 global player_live player_live = 3 hearts = [] for staff2 in range(player_live): hearts.append(Heart(staff2)) hearts[staff2].centerx = WIDHT - 25 - staff2 * 35 hearts[staff2].centery = 25 pause = False restart = False allEnemiesZero = False font_name = pygame.font.match_font('Comic Sans MS') # __________________________БЛОК ПЕРЕМЕННЫХ закончился___________________________ # __________________________БЛОК ФУНКЦИЙ начинается___________________________ def draw_text(surf, text, size, x, y): font = pygame.font.Font(font_name, size) text_surface = font.render(text, True, WHITE) text_rect = text_surface.get_rect() text_rect.midtop = (x, y) surf.blit(text_surface, text_rect) def game_over(): """Функция для вывода надписи Game Over и результатов в случае завершения игры и выход из игры""" play_surface = pygame.display.set_mode((500, 650)) bg = pygame.image.load('sprites/gameover_bg.jpg') play_surface.blit(bg, (0, 0)) pygame.display.set_caption('Shooter') draw_text(play_surface, str('Game over'), 72, WIDHT // 2, HEIGHT // 2 - 200) play_surface.blit(exampleCoin.image, exampleCoin.rect) draw_text(play_surface, str(money), 20, 60, 11) draw_text(play_surface, str(money), 50, WIDHT // 2, HEIGHT // 2 - 50) pygame.display.flip() time.sleep(3) pygame.quit() os.sys.exit() # функция получения названия картинки фона по номеру def winner(): play_surface = pygame.display.set_mode((500, 650)) pygame.display.set_caption('Shooter') bg = pygame.image.load('sprites/winner_bg.jpg') play_surface.blit(bg, (0, 0)) draw_text(play_surface, str('You win!'), 72, WIDHT // 2, HEIGHT // 2 - 200) play_surface.blit(exampleCoin.image, exampleCoin.rect) draw_text(play_surface, str(money), 20, 60, 11) draw_text(play_surface, str(money), 50, WIDHT // 2, HEIGHT // 2 - 50) draw_text(play_surface, str('press \'Esc\' to exit...'), 10, WIDHT // 2, HEIGHT - 40) pygame.display.flip() winner = True while winner: keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_ESCAPE]: winner = False pygame.quit() os.sys.exit() def bgCadr(i): i = str(i) while len(i) < 4: i = '0' + i return ('bg/Видеофон Звёздное небо ' + i + '.jpg') def pausedddd(): nonlocal pause nonlocal restart play_surface = pygame.display.set_mode((500, 650)) pygame.display.set_caption('Shooter') bg = pygame.image.load('sprites/pause_bg.jpg') play_surface.blit(bg, (0, 0)) while pause or not restart: keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_r]: restart = True if keys[pygame.K_p]: pause = False break draw_text(play_surface, str('Pause...'), 72, WIDHT // 2, HEIGHT // 2 - 200) play_surface.blit(exampleCoin.image, exampleCoin.rect) draw_text(play_surface, str(money), 20, 60, 11) draw_text(play_surface, str(money), 50, WIDHT // 2, HEIGHT // 2 - 50) draw_text(play_surface, str('press \'R\' to restart game...'), 10, WIDHT // 2, HEIGHT - 40) for staff2 in range(player_live): win.blit(hearts[staff2].image, hearts[staff2].rect) pygame.display.flip() pygame.display.update() # функция обновления экрана def drawWindow(win): bg = pygame.image.load(bgCadr(numberbgCadr)) win.blit(bg, (0, 0)) for playerBullet in playerBullets: win.blit(playerBullet.image, playerBullet.rect) for coin in coins: if coin.imageInd == 1: coin.image = pygame.image.load('sprites/coin' + str(coin.imageInd) + '/coin' + str(numberCoinImg) + '.png') elif coin.imageInd == 2: coin.image = pygame.image.load('sprites/coin' + str(coin.imageInd) + '/coin' + str(numberCoinImg2) + '.png') win.blit(coin.image, coin.rect) for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: win.blit(enemyBullet.image, enemyBullet.rect) if type(enemy) == type(exampleEnemy): win.blit(enemy.image, enemy.rect) win.blit(player.image, player.rect) for staff2 in range(player_live): win.blit(hearts[staff2].image, hearts[staff2].rect) draw_text(win, str(money), 20, 60, 11) win.blit(exampleCoin.image, exampleCoin.rect) pygame.display.update() # двигаю снаряды врагов и удаляю улетевшие def movingEnemiesBullets(): for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: if inWindow(enemyBullet) == 1: enemyBullet.rect.centery += enemyBullet.vel * \ (-round(sin(enemyBullet.angle*pi/180), 3)) enemyBullet.rect.centerx += enemyBullet.vel * \ (round(cos(enemyBullet.angle*pi/180), 3)) else: enemyBullets.pop(enemyBullets.index(enemyBullet)) # двигаю снаряды игрока и удаляю улетевшие def movingPlayerBullets(): for playerBullet in playerBullets: if inWindow(playerBullet) == 1: delta = round(random.random()) playerBullet.rect.centery -= playerBullet.vel + delta * 3 playerBullet.rect.bottom -= playerBullet.vel + delta * 3 else: playerBullets.pop(playerBullets.index(playerBullet)) # обработка поражения врагов пулями def defeatOfEnemies(): realEnemies = [] for enemy in enemies: if type(enemy) == type(exampleEnemy): realEnemies.append(enemy) enemiesGroup = pygame.sprite.Group(realEnemies) playerBulletsGroup = pygame.sprite.Group(playerBullets) hits = pygame.sprite.groupcollide(enemiesGroup, playerBulletsGroup, True, True) for hit in hits: if hit: if allEnemiesZero == False: imageInd = 1 coins.append(Coin(numberCoinImg, imageInd)) coins[len(coins) - 1].rect.center = enemies[enemies.index( hit)].rect.center coins[len(coins) - 1].image = pygame.image.load('sprites/coin' + str(imageInd) + '/coin' + str(numberCoinImg) + '.png') elif allEnemiesZero == True and iteration3 == False: imageInd = 2 coins.append(Coin(numberCoinImg, imageInd)) coins[len(coins) - 1].rect.center = enemies[enemies.index( hit)].rect.center coins[len(coins) - 1].image = pygame.image.load('sprites/coin' + str(imageInd) + '/coin' + str(numberCoinImg) + '.png') enemies[enemies.index(hit)] = 0 def takeCoins(): nonlocal money for coin in coins: distance = (coin.rect.centerx - player.rect.centerx)**2 + \ (coin.rect.centery - player.rect.centery)**2 if distance <= 25**2: if coin.imageInd == 1: coins.pop(coins.index(coin)) money += 1 elif coin.imageInd == 2: coins.pop(coins.index(coin)) money += 2 # обработка поражения игрока пулями def defeatOfPlayer(): global player_live for enemy in enemies: enemyBullets = enemiesBullets[enemies.index(enemy)] for enemyBullet in enemyBullets: # обработка столкновения врагов с игроком distance = (enemyBullet.rect.centerx - player.rect.centerx)**2 + \ (enemyBullet.rect.centery - player.rect.centery)**2 if distance <= 25**2: enemyBullets.pop(enemyBullets.index(enemyBullet)) # уничтожение пули player_live -= 1 if player_live <= 0: time.sleep(0) print('Game over') print(player_live) game_over() def inWindow(sprite): if sprite.rect.left > WIDHT or sprite.rect.right < 0 or sprite.rect.top > HEIGHT or sprite.rect.bottom < 0: return (0) else: return (1) # __________________________БЛОК ФУНКЦИЙ закончился________________________ # __________________________ОСНОВНОЙ БЛОК начинается___________________________ # __________________________итерация 1_________________________________ i = 1 while not allEnemiesZero: clock.tick(45) intervalPlayerSnaryad += 1 intervalEnemySnaryad += 1 intervalCoin += 1 # счетчик для анимированного фона if numberbgCadr < 7325: numberbgCadr += 1 else: numberbgCadr = 0 movingEnemiesBullets() movingPlayerBullets() takeCoins() defeatOfEnemies() defeatOfPlayer() # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos # движение врагов staff1 = 0 for enemy in enemies: if type(enemy) == type(exampleEnemy): if inWindow(enemy) == 1: enemy.rect.centery += enemy.vel * \ (-sin(enemy.angle*pi/180)) enemy.rect.centerx += enemy.vel * \ cos(enemy.angle*pi/180) # обработка столкновения врагов с игроком distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if distance <= 30**2: time.sleep(0) print('Game over') print(player_live) game_over() else: enemy = 0 staff1 += 1 else: staff1 += 1 if staff1 == 3: allEnemiesZero = True # UPDATE - СОЗДАНИЕ ПУЛЬ стрельба врагов if enemiesTimerSnaryad == True: for enemy in enemies: if type(enemy) == type(exampleEnemy): enemyBullets = enemiesBullets[enemies.index(enemy)] enemyBullets.append(Bullet(enemy.angle, 1, 6)) enemyBullets[len(enemyBullets) - 1].rect.centerx = enemy.rect.centerx enemyBullets[len(enemyBullets) - 1].rect.centery = enemy.rect.centery enemiesTimerSnaryad = False # стрельба игрока if keys[pygame. K_f] or event.type == pygame.MOUSEBUTTONDOWN or constantShooting > 0: if playerTimerSnaryad == True: playerBullets.append(Bullet(90, 2, 20)) playerBullets[len(playerBullets) - 1].rect.centerx = mouseCoords[0] - rightleftGun playerBullets[len(playerBullets) - 1].rect.centery = mouseCoords[1] rightleftGun *= -1 playerTimerSnaryad = False drawWindow(win) # проверка счетчика интервала между пулями if intervalPlayerSnaryad >= 5: playerTimerSnaryad = True intervalPlayerSnaryad = 0 if intervalEnemySnaryad >= 30: enemiesTimerSnaryad = True intervalEnemySnaryad = 0 if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 #allEnemiesZero = True # __________________итерация 2_________________________________________ allEnemiesZero = True intervalEnemySnaryad = 9 enemiesTimerSnaryad = True iteration3 = False enemy1Count = 0 enemy2Count = 0 """ """ # """ enemies = [] enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(270, 1, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT*3 // 4, -10] enemiesBullets = [] for e in range(3): enemies.append(EnemyAircraft(270, 1, 1)) enemiesBullets.append([]) enemies[1].vel = 2 [enemies[0].rect.centerx, enemies[0].rect.centery] = [WIDHT // 4, -10] [enemies[1].rect.centerx, enemies[1].rect.centery] = [WIDHT // 2, -10] [enemies[2].rect.centerx, enemies[2].rect.centery] = [WIDHT*3 // 4, -10] """ exampleEnemy = EnemyAircraft(270, 1, 1) enemies = [] enemiesBullets = [] while intervalPause12 <= 100: intervalPause12 += 1 intervalCoin += 1 takeCoins() # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos movingPlayerBullets() if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 drawWindow(win) enemies.append(EnemyAircraft(0, 2, 10, 2)) enemiesBullets.append([]) [enemies[0].rect.centerx, enemies[0].rect.centery] = [0, WIDHT // 2] enemies.append(EnemyAircraft(-90, 2, 10, 1.3, 10)) enemies[len(enemies) - 1].image_copy = enemies[len(enemies) - 1].image enemiesBullets.append([]) [ enemies[len(enemies) - 1].rect.centerx, enemies[len(enemies) - 1].rect.centery ] = [WIDHT // 3, 0] # # # здесь должен быть код с созданием врагов второй итерации # # playerBullets = [] # while not iteration3: clock.tick(45) intervalPlayerSnaryad += 1 intervalEnemySnaryad += 1 intervalCoin2 += 1 intervalCoin += 1 # счетчик для анимированного фона if numberbgCadr < 7325: numberbgCadr += 1 else: numberbgCadr = 0 movingEnemiesBullets() movingPlayerBullets() takeCoins() defeatOfEnemies() defeatOfPlayer() """ staff1 = 0 for enemy in enemies: if type(enemy) == type(exampleEnemy): enemy.rect.centery += enemy.vel * \ (-sin(enemy.angle*pi/180)) enemy.rect.centerx += enemy.vel * \ cos(enemy.angle*pi/180) # обработка столкновения врагов с игроком distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if distance <= 30**2: time.sleep(0) print('Game over') print(player_live) game_over() else: staff1 += 1 if staff1 == 3: allEnemiesZero = True """ for enemy in enemies: if type(enemy) == type(exampleEnemy): if enemies.index(enemy) == 0: enemy.rect.centery += enemy.vel * \ (-round(sin(enemy.angle*pi/180), 3)) enemy.rect.centerx += enemy.vel * \ (round(cos(enemy.angle*pi/180), 3)) enemy.rotate() distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if inWindow(enemy) == 0: enemies[0] = EnemyAircraft(0, 2, 10, 2) [enemies[0].rect.centerx, enemies[0].rect.centery] = [0, WIDHT // 2] enemy1Count += 1 if enemy1Count == 3: enemies[0] = 0 elif enemies.index(enemy) == 1: enemy.rect.centery += enemy.vel * \ (-round(sin(enemy.angle*pi/180), 3)) enemy.rect.centerx += enemy.vel * \ (round(cos(enemy.angle*pi/180), 3)) enemy.rotate() distance = (enemy.rect.centerx - player.rect.centerx)**2 + \ (enemy.rect.centery - player.rect.centery)**2 if inWindow(enemy) == 0: enemies[len(enemies) - 1] = EnemyAircraft( -90, 2, 10, 1.3, 10) enemies[len(enemies) - 1].image_copy = enemies[len(enemies) - 1].image [ enemies[len(enemies) - 1].rect.centerx, enemies[len(enemies) - 1].rect.centery ] = [WIDHT // 4, 0] enemy2Count += 1 if enemy2Count == 3: enemies[1] = 0 if distance <= 30**2: time.sleep(0) print('Game over') print(player_live) game_over() # # # # # # # здесь будет функция с движением игроков второй итерации # # # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos # UPDATE - СОЗДАНИЕ ПУЛЬ стрельба врагов if enemiesTimerSnaryad == True: for enemy in enemies: if type(enemy) == type(exampleEnemy): enemyBullets = enemiesBullets[enemies.index(enemy)] enemyBullets.append(Bullet(enemy.angle, 1, 15)) enemyBullets[len(enemyBullets) - 1].rect.centerx = enemy.rect.centerx enemyBullets[len(enemyBullets) - 1].rect.centery = enemy.rect.centery enemiesTimerSnaryad = False # стрельба игрока if keys[pygame. K_f] or event.type == pygame.MOUSEBUTTONDOWN or constantShooting > 0: if playerTimerSnaryad == True: playerBullets.append(Bullet(pi / 2, 2, 20)) playerBullets[len(playerBullets) - 1].rect.centerx = mouseCoords[0] - rightleftGun playerBullets[len(playerBullets) - 1].rect.centery = mouseCoords[1] rightleftGun *= -1 playerTimerSnaryad = False drawWindow(win) # проверка счетчика интервала между пулями if intervalPlayerSnaryad >= 7: playerTimerSnaryad = True intervalPlayerSnaryad = 0 if intervalEnemySnaryad >= 3: enemiesTimerSnaryad = True intervalEnemySnaryad = 0 if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 if intervalCoin2 >= 20 and numberCoinImg2 < 6: numberCoinImg2 += 1 intervalCoin2 = 0 elif numberCoinImg2 >= 6: numberCoinImg2 = 1 if (enemy1Count >= 3 or enemies[0] == 0) and (enemy2Count >= 3 or enemies[1] == 0): iteration3 = True enemies = [] enemiesBullets = [] while intervalPause23 <= 100: intervalPause23 += 1 intervalCoin += 1 takeCoins() # обработка некоторых клавиш (выхода и постоянной стрельбы) events = pygame.event.get() keys = pygame.key.get_pressed() for event in events: if event.type == pygame.QUIT: os.sys.exit() if keys[pygame.K_e]: os.sys.exit(0) if keys[pygame.K_c]: constantShooting *= -1 if keys[pygame.K_p]: pause = True pausedddd() # движение игрока за стрелкой if event.type == pygame.MOUSEMOTION: [player.rect.centerx, player.rect.centery] = event.pos mouseCoords = event.pos movingPlayerBullets() if intervalCoin >= 5 and numberCoinImg < 6: numberCoinImg += 1 intervalCoin = 0 elif numberCoinImg >= 6: numberCoinImg = 1 drawWindow(win) winner()
from game_objects import Player from game_server import OneNight from roles import Werewolf, Seer, Villager, Mason, Minion, Robber, Troublemaker, Insomniac if __name__ == "__main__": _roles = [ Werewolf(), Werewolf(), Minion(), Seer(), Robber(), Troublemaker(), Mason(), Mason(), Insomniac(), Villager(), Villager() ] _players = [Player("Player{}".format(i)) for i in range(len(_roles))] game = OneNight(_players, _roles) game.run() # The game end should be somehow dependent upon the current participating roles. # Input and output should be decoupled from the core BL. # Async streams should be used as message buses in both communication directions.
import sys import pygame from game_objects import Player, Background from settings import WIDTH, HEIGHT pygame.init() pygame.display.set_caption('My game') screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() all_objects = pygame.sprite.Group() bullets = pygame.sprite.Group() player = Player(clock, bullets) background = Background() all_objects.add(background) all_objects.add(player) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() screen.fill((255, 255, 255)) all_objects.update() bullets.update() all_objects.draw(screen)
[('assets/asteroid_explode{}.png'.format(i + 1), 50) for i in range(4)], loop=False) music = pygame.mixer.Sound('assets/Scene1.ogg') music.play(-1) # Groups all_objects = pygame.sprite.Group() plasmoids = pygame.sprite.Group() meteors = pygame.sprite.Group() explosions = [] # Game objects background = Background() player = Player(clock, plasmoids) all_objects.add(background) all_objects.add(player) # plasmoids.add(Plasmoid(player.rect.midtop)) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit(0) screen.fill(WHITE) # background.update() Meteorite.process_meteors(clock, meteors)
def StartGame(): pygame.init() pygame.display.set_caption('TestGame') screen = pygame.display.set_mode(SIZE) clock = pygame.time.Clock() #Group objects objects = pygame.sprite.Group() bullets = pygame.sprite.Group() asteroids = pygame.sprite.Group() #Game objects player = Player(bullets, clock) background = Background() objects.add(background) objects.add(player) active = True while active: for event in pygame.event.get(): if event.type == pygame.QUIT: active = False #Respoun asteroid Asteroid.respoun(asteroids, clock) #Change state player objects.update() bullets.update() asteroids.update() #Collise pygame.sprite.groupcollide(bullets, asteroids, True, True) if pygame.sprite.spritecollide(player, asteroids, True): badaboom = BadaBoom(player.rect.midtop) badaboom.draw(screen) pygame.display.flip() pygame.time.delay(1000) active = False #Fill background screen.fill(COLOR_BACKGROUND) #Draw Background background.draw(screen) #Draw player player.draw(screen) #Draw bullet bullets.draw(screen) #Draw asteroid asteroids.draw(screen) #Show frame pygame.display.flip() # Delay game loop -- frame per second clock.tick(60) pygame.quit() sys.exit(0)
def load(self) -> LevelObject: return LevelObject(Player(self.objects, self.start_x, self.start_y), self.objects, self.drawables)
import game_fuction as gf from stats import GameStats from button import Button pygame.init() pygame.display.set_caption('Catch This') ct_settings = Settings() screen = pygame.display.set_mode((ct_settings.width, ct_settings.height)) clock = pygame.time.Clock() stats = GameStats(ct_settings) sb = Scoreboard(ct_settings, stats, screen) play_button = Button(screen, 'Play') #Groups friends = Group() enemies = Group() bonus = Group() #Game objects player = Player(ct_settings, screen) background = Background(ct_settings, screen) while True: gf.check_events(bonus, ct_settings, enemies, friends, play_button, player, sb, stats) if stats.game_active: player.update() gf.update_enemies(bonus, clock, ct_settings, enemies, friends, player, sb, stats) gf.update_friends(ct_settings, clock, sb, stats, player, friends) gf.update_bonus(bonus, clock, ct_settings, player, sb, stats) gf.update_screen(background, bonus, ct_settings, sb, screen, stats, play_button, player, friends, enemies) clock.tick(30)
number_of_players = input('How many players? ') valid_number_of_players = validation_helper.is_valid_number_of_players( number_of_players) if not valid_number_of_players: message = validation_helper.number_of_players_validity_message( number_of_players) print(message + '\n') number_of_players = 0 else: number_of_players = int(number_of_players) for i in range(number_of_players): name = input('\nEnter player ' + str(i + 1) + '\'s name.\n') new_player = Player(name, (i + 1), 0) players.append(new_player) game_is_active = True order_index = 0 while game_is_active: current_player = players[order_index] valid_score = False proceed_to_next_player = False print(current_player.name + '\'s turn\n') while not valid_score: score = input('Enter score: ("s" to skip, "e" to end game)\n') valid_score = validation_helper.is_number(score)
import pygame import sys from settings import SIZE from game_objects import Player, Background, Mob pygame.init() pygame.display.set_caption("Surprise, mutherfucker!") screen = pygame.display.set_mode(SIZE) running = True #Game objects player = Player() background = Background() #Groups of sprites all_sprites = pygame.sprite.Group() bullets = pygame.sprite.Group() mobs = pygame.sprite.Group() for i in range(4): mob = Mob() mobs.add(mob) all_sprites.add(mob) while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False
'explosion': path('explosion.ogg', 'sound'), 'sound': path('hot.ogg', 'sound') } process.resource = resource if FS: screen = pygame.display.set_mode(SCREEN_SIZE, FULLSCREEN, display.bitsize) else: screen = pygame.display.set_mode((800, 600), 0, display.bitsize) clock = pygame.time.Clock() FPS = 60 background = pygame.image.load(resource['bg']).convert() # Player player = Player(200, 400, resource['spacecraft']) # Enemy for i, inimigos in enumerate(range(10)): fn = Enemy(0, 10, resource['enemy00']) def stereo_pan(x, width): rv = float(x)/width lv = 1.0 - rv return(lv, rv) last_key = None while True:
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption("PyPong Neural") clock = pygame.time.Clock() # Score score = 0 score_record = 0 score_font = pygame.font.SysFont("Arial", 18) # Controles moving_left = False moving_right = False move_direction = "standby" # Objetos Juego ai_player = Player(150, 20, WINDOW_WIDTH / 2.5, WINDOW_HEIGHT - 20) # Width, height, x position, y position my_ball = Ball(350, 0) # x position, y position # Preparar neural network neural_network = NeuralNetwork() losses_count = 0 while True: clock.tick(100) # 100 FPS for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() # A.I Direcciones
'explosion': path('explosion.ogg', 'sound'), 'sound': path('hot.ogg', 'sound') } process.resource = resource if FS: screen = pygame.display.set_mode(SCREEN_SIZE, FULLSCREEN, display.bitsize) else: screen = pygame.display.set_mode((800, 600), 0, display.bitsize) clock = pygame.time.Clock() FPS = 60 background = pygame.image.load(resource['bg']).convert() # Player player = Player(200, 400, resource['spacecraft']) # Enemy for i, inimigos in enumerate(range(10)): fn = Enemy(0, 10, resource['enemy00']) def stereo_pan(x, width): rv = float(x) / width lv = 1.0 - rv return (lv, rv) last_key = None while True: