def __init__(self, game, name, color): self.game = game self.name = name self.score = 0 self.keys_state = 0 self.alive = True common_randomizer = random_of(self.game.common_random_seed) def random(): if self.game.net_config.WORM_SYNC_HOLES: return common_randomizer else: return self.game.random() self.worm = Worm(random, config.WORM_AREA_SIZE, self.game.net_config, self.game.worm_area, color) self.reset()
def emplace_worm(self, x, y, orient=0, weights=None, saturation=100): new_worm = Worm(self.act_id, x, y, orient, weights) new_worm.set_saturation(saturation) self.worms.append(new_worm) self.act_id += 1 self.act_worms += 1 return True
def __init__(self, screen): self.screen = screen self.running = True self.blue_worms = [] self.red_worms = [] # noinspection PyArgumentList self.blue_worms.append(Worm(Team.BLUE, pygame.Vector2(600, 300))) # noinspection PyArgumentList self.red_worms.append(Worm(Team.RED, pygame.Vector2(700, 300))) # noinspection PyArgumentList self.blue_worms.append(Worm(Team.BLUE, pygame.Vector2(800, 300))) # noinspection PyArgumentList self.red_worms.append(Worm(Team.RED, pygame.Vector2(900, 300))) self.background = pygame.image.load("assets/background.png") self.foreground = pygame.image.load( "assets/foreground.png").convert_alpha() self.mask_image = pygame.image.load("assets/mask.png").convert_alpha() self.mask = None self.masked_foreground = None self.recalculate_mask() self.active_worm = self.worms()[0] self.active_worm.walking_credits = 200 self.last_blue = -1 self.last_red = -1 self.projectile = None self.state = GameState.WF_PLAYER_ACTION self.current_team = self.active_worm.team self.skip_next_round_end_check = False self.original_wind_arrow = pygame.image.load( "assets/wind_arrow.png").convert_alpha() self.wind = None self.wind_arrow = None self.wind_font = pygame.font.Font("assets/font.ttf", 40) self.game_over_font = pygame.font.Font("assets/font.ttf", 80) self.wind_text = None self.randomize_wind() self.clock = pygame.time.Clock()
import random from Food import Food from Worm import Worm w = 500 h = 500 screen = pygame.display.set_mode((w, h)) clock = pygame.time.Clock() pygame.mixer.init() chomp = pygame.mixer.Sound("chomp.wav") score = 0 worm = Worm(screen) food = Food(screen) running = True while running: screen.fill((0, 0, 0)) worm.move() worm.draw() food.draw() if worm.crashed: running = False elif worm.x <= 0 or worm.x >= w - 1: running = False elif worm.y <= 0 or worm.y >= h - 1: running = False
def game(levels): global level level = levels global foodlet global wormlet foodlet = Food() prt1 = Loc(250, 250) wormlet = Worm([prt1]) game = True while game == True: last = copy.deepcopy(wormlet.get(wormlet.length() - 1)) events = pygame.event.get() for event in events: if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: wormlet.setdir('left') elif event.key == pygame.K_RIGHT: wormlet.setdir('right') elif event.key == pygame.K_UP: wormlet.setdir('up') elif event.key == pygame.K_DOWN: wormlet.setdir('down') elif event.key == pygame.K_q: game = False elif event.key == pygame.K_p: a = pause() if a == 'menu': game = False wormlet.update() #advances worm in its direction first = wormlet.get(0) if foodlet.getlocation() == wormlet.getlocation(): wormlet.add(last) foodlet.reset() while (level.checkloc(foodlet.getlocation()) == True or wormlet.checkloc(foodlet.getlocation()) == True): foodlet.reset() display() if (level.checkloc(first) == True): game = False for x in range(1, wormlet.length()): if first == wormlet.get(x): game = False window.blit(pygame.transform.smoothscale(screen, (ssize)), (0, 0)) pygame.display.flip() pygame.display.update() if level.num == 2: pygame.time.wait(45) elif level.num == 1: pygame.time.wait(65) else: pygame.time.wait(80)
player = Player(playerx, playery, playercharacter, board) def printboard(): #set the playercharacter to the board for drawing board[player.y][player.x] = playercharacter for line in range(player.y - 12, player.y + 11): for column in range(player.x - 40, player.x + 40): print(board[line][column], end="") print("") #after rendering, remove the character from the board board[player.y][player.x] = ' ' worm = Worm(0, 0, board, player) worm.floodfill() level1.createdoors() level1.clearrandchars() print(' \n' * 80) print("Welcome to the Lazy Stronghold, press any key to play") print("Controls are as follows: WASD for directions, q to quit and h for help") print(level1.wallchar + " signs are walls, you are the " + player.character + " and " + level1.outofboundschar + " is out of bounds" ) print(time.clock() - inittime)
def game(levels): global level level = levels global foodlet global wormlet foodlet = Food() prt1=Loc(250,250) wormlet = Worm([prt1]) game = True while game == True: last = copy.deepcopy(wormlet.get(wormlet.length()-1)) events = pygame.event.get() for event in events: if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: wormlet.setdir('left') elif event.key == pygame.K_RIGHT: wormlet.setdir('right') elif event.key == pygame.K_UP: wormlet.setdir('up') elif event.key == pygame.K_DOWN: wormlet.setdir('down') elif event.key == pygame.K_q: game = False elif event.key == pygame.K_p: a = pause() if a == 'menu': game = False wormlet.update() #advances worm in its direction first=wormlet.get(0) if foodlet.getlocation() == wormlet.getlocation(): wormlet.add(last) foodlet.reset() while (level.checkloc(foodlet.getlocation()) == True or wormlet.checkloc(foodlet.getlocation()) == True): foodlet.reset() display() if (level.checkloc(first) == True): game = False for x in range (1, wormlet.length()): if first == wormlet.get(x): game = False window.blit(pygame.transform.smoothscale(screen,(ssize)),(0,0)) pygame.display.flip() pygame.display.update() if level.num == 2: pygame.time.wait(45) elif level.num == 1: pygame.time.wait(65) else: pygame.time.wait(80)
class Player(object): def __init__(self, game, name, color): self.game = game self.name = name self.score = 0 self.keys_state = 0 self.alive = True common_randomizer = random_of(self.game.common_random_seed) def random(): if self.game.net_config.WORM_SYNC_HOLES: return common_randomizer else: return self.game.random() self.worm = Worm(random, config.WORM_AREA_SIZE, self.game.net_config, self.game.worm_area, color) self.reset() def __repr__(self): return '<%s(%s)>' % (self.__class__.__name__, self.name) def color(self): return self.worm.color def reset(self): """Resets the player and worm parameters to level-start state. Note this uses random and is therefore only callable after random seed synchronization (or followed by a sync_players_states)""" width, height = config.WORM_AREA_SIZE outline_width = config.POS_RANDOM_OUTLINE_WIDTH random = self.game.random() pos = (random.randrange(outline_width, width - outline_width), random.randrange(outline_width, height - outline_width)) self.worm.reset(pos) self.alive = True def kill(self): self.alive = False def increase_score(self): self.score += 1 def update(self): if not self.alive: return angle_diff = math.radians(float(self.game.net_config.ANGLES_PER_SECOND) / self.game.net_config.GAME_ITERATIONS_PER_SECOND) if self.keys_state & PlayerController.LEFT: self.worm.left(angle_diff) elif self.keys_state & PlayerController.RIGHT: self.worm.right(angle_diff) try: self.worm.forward(self.game.speed) except Collision: self.kill() raise PlayerDied() def key_event(self, is_down, event): # Ignore keys by default pass