def on_point(): #RETURNS TRUE IF BOTH CHARACTERS X & Y = meeting_point's X & Y (are on meeting_point) on = 0 for character in Character.List: if character.x == Tile.get_tile(Tile.MAP['point']).x and character.y == Tile.get_tile(Tile.MAP['point']).y: on += 1 if on == len(Character.List): return True
def interaction(screen, survivor): Mpos = pygame.mouse.get_pos() # [x, y] Mx = Mpos[0] / Tile.width My = Mpos[1] / Tile.height for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): tile.type = 'solid' tile.walkable = False break keys = pygame.key.get_pressed() if keys[pygame.K_w]: # North future_tile_number = survivor.get_number() - Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('n') survivor.y -= survivor.height if keys[pygame.K_s]: # South future_tile_number = survivor.get_number() + Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('s') survivor.y += survivor.height if keys[pygame.K_a]: # West future_tile_number = survivor.get_number() - Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('w') survivor.x -= survivor.width if keys[pygame.K_d]: # East future_tile_number = survivor.get_number() + Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('e') survivor.x += survivor.width
def respawn(): for character in Character.List: if character.name == 'Bill': character.x, character.y = Tile.get_tile( Tile.MAP['spawn'][0]).x, Tile.get_tile( Tile.MAP['spawn'][0]).y else: character.x, character.y = Tile.get_tile( Tile.MAP['spawn'][1]).x, Tile.get_tile( Tile.MAP['spawn'][1]).y
def run(self): pygame.display.set_caption(self.caption) if self.state == S_MENU: play_button = Button( 'PLAY', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 200, self.button_size[0], self.button_size[1], 'PLAY GAME') builder_button = Button( 'DEVELOP', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 300, self.button_size[0], self.button_size[1], 'DEVELOP LEVEL') while self.state == S_MENU: self.state = functions.get_state() self.screen.blit(self.menubackground, (0, 0)) Button.draw_buttons(self.screen) menu_interaction(self.screen) pygame.display.flip() self.clock.tick(self.FPS) if self.state == S_GAME: Tile.create_tiles() bill = Character('Bill') bull = Character('Bull') functions.load_level(1) sound = pygame.mixer.Sound("audio/music.wav") sound.set_volume(.25) sound.play(-1) print Tile.MAP while self.state == S_GAME: self.state = functions.get_state() self.screen.blit(self.gamebackground, (0, 0)) Tile.draw_tiles(self.screen) Character.update_characters(bill, bull) Character.draw_characters(self.screen) interaction(self.screen, bill, bull) bill.movement() bull.movement() pygame.display.flip() self.clock.tick(self.FPS) if self.state == S_ESC: pass
def interaction(screen, survivor): Mpos = pygame.mouse.get_pos() # [x, y] Mx = Mpos[0] / Tile.width My = Mpos[1] / Tile.height for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): tile.type = 'solid' tile.walkable = False break keys = pygame.key.get_pressed() if keys[pygame.K_w]: # North future_tile_number = survivor.get_number() - Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) # survivor.y -= survivor.height if keys[pygame.K_s]: # South future_tile_number = survivor.get_number() + Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) # survivor.y += survivor.height if keys[pygame.K_a]: # West future_tile_number = survivor.get_number() - Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) # survivor.x -= survivor.width if keys[pygame.K_d]: # East future_tile_number = survivor.get_number() + Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile)
def run(self): pygame.display.set_caption(self.caption) if self.state == S_MENU: play_button = Button('PLAY', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 200, self.button_size[0], self.button_size[1], 'PLAY GAME') builder_button = Button('DEVELOP', Tile.screen_size[0] / 2 - self.button_size[0] / 2, 300, self.button_size[0], self.button_size[1], 'DEVELOP LEVEL') while self.state == S_MENU: self.state = functions.get_state() self.screen.blit(self.menubackground, (0,0)) Button.draw_buttons(self.screen) menu_interaction(self.screen) pygame.display.flip() self.clock.tick(self.FPS) if self.state == S_GAME: Tile.create_tiles() bill = Character('Bill') bull = Character('Bull') functions.load_level(1) sound = pygame.mixer.Sound("audio/music.wav") sound.set_volume(.25) sound.play(-1) print Tile.MAP while self.state == S_GAME: self.state = functions.get_state() self.screen.blit(self.gamebackground, (0,0)) Tile.draw_tiles(self.screen) Character.update_characters(bill, bull) Character.draw_characters(self.screen) interaction(self.screen, bill, bull) bill.movement() bull.movement() pygame.display.flip() self.clock.tick(self.FPS) if self.state == S_ESC: pass
def load_level(level = 1): #SETS ALL LEVEL VARIABLES AND TILE TYPES ACCORDING TO LEVEL try: List = [] Tile.moves = 0 print 'Loading level {}...'.format(level) filename = 'level/level{}.csv'.format(level) levelfile = open(filename) csv_levelfile = csv.reader(levelfile) i = 0 Tile.clear_map_dict() for row in csv_levelfile: if i == 0: Tile.MAP['level'] = int(row[0]) elif i == 1: for element in row: Tile.MAP['spawn'].append(int(element)) elif i == 2: Tile.MAP['point'] = int(row[0]) elif i == 3: for element in row: Tile.MAP['holes'].append(int(element)) elif i == 4: for element in row: Tile.MAP['solids'].append(int(element)) elif i == 5: i = 0 i += 1 for character in Character.List: character.tx, character.ty = None, None character.unnatural = False levelfile.close() Tile.retype() Character.respawn() except Exception, e: print 'Could not load level {}'.format(level) pygame.quit() sys.exit()
def load_level( level=1): #SETS ALL LEVEL VARIABLES AND TILE TYPES ACCORDING TO LEVEL try: List = [] Tile.moves = 0 print 'Loading level {}...'.format(level) filename = 'level/level{}.csv'.format(level) levelfile = open(filename) csv_levelfile = csv.reader(levelfile) i = 0 Tile.clear_map_dict() for row in csv_levelfile: if i == 0: Tile.MAP['level'] = int(row[0]) elif i == 1: for element in row: Tile.MAP['spawn'].append(int(element)) elif i == 2: Tile.MAP['point'] = int(row[0]) elif i == 3: for element in row: Tile.MAP['holes'].append(int(element)) elif i == 4: for element in row: Tile.MAP['solids'].append(int(element)) elif i == 5: i = 0 i += 1 for character in Character.List: character.tx, character.ty = None, None character.unnatural = False levelfile.close() Tile.retype() Character.respawn() except Exception, e: print 'Could not load level {}'.format(level) pygame.quit() sys.exit()
def get_surrounding_tiles(base_node): array =( (base_node.number + N), (base_node.number + NE), (base_node.number + E), (base_node.number + SE), (base_node.number + S), (base_node.number + SW), (base_node.number + W), (base_node.number + NW), ) tiles = [] onn = base_node.number diagonals = [onn + NE, onn + NW, onn + SE, onn + SW] for tile_number in array: surrounding_tile = Tile.get_tile(tile_number) if tile_number not in range(1, Tile.total_tiles + 1): continue if surrounding_tile.walkable and surrounding_tile not in closed_list: # tiles.append(surrounding_tile) # Diagonal movement tiles = blocky(tiles, diagonals, surrounding_tile) return tiles
def get_surrounding_tiles(base_node): array = ( (base_node.number + N), (base_node.number + NE), (base_node.number + E), (base_node.number + SE), (base_node.number + S), (base_node.number + SW), (base_node.number + W), (base_node.number + NW), ) tiles = [] #to add valid tiles onn = base_node.number diagonals = [onn + NE, onn + NW, onn + SE, onn + SW] for tile_number in array: surrounding_tile = Tile.get_tile(tile_number) if tile_number not in range(1, Tile.total_tiles + 1): continue if surrounding_tile.walkable and surrounding_tile not in closed_list: # tiles.append(surrounding_tile) # Diagonal movement tiles = blocky(tiles, diagonals, surrounding_tile) return tiles
def update_characters(bill, bull): #LOOKS FOR CHARACTERS FALLING IN HOLES OR STANDING ON MEETING POINT. IF loading_level IS TRUE, TELEPORTS CHARACTERS TO SPAWNING POINTS for character in Character.List: if Tile.get_tile(character.get_number()).type == 'hole': if Tile.get_tile(character.get_number()).x == character.x and Tile.get_tile(character.get_number()).y == character.y: if not character.has_target(): Tile.freeze = True functions.load_level(Tile.MAP['level']) if Tile.loading_level == True: Character.respawn(bill, bull) Tile.loading_level = False if bill.x == Tile.get_tile(Tile.MAP['point']).x and bill.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point(): bill.status = 'happy' bull.status = 'sad' elif bull.x == Tile.get_tile(Tile.MAP['point']).x and bull.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point(): bull.status = 'happy' bill.status = 'sad' elif Character.on_point(): bill.status = 'happy' bull.status = 'happy' Tile.freeze = True functions.load_level(Tile.MAP['level'] + 1) else: bill.status = 'sad' bull.status = 'sad'
def update_characters(bill, bull): #LOOKS FOR CHARACTERS FALLING IN HOLES OR STANDING ON MEETING POINT. try: for character in Character.List: if Tile.get_tile(character.get_number()).type == 'hole': if Tile.get_tile(character.get_number()).x == character.x and Tile.get_tile(character.get_number()).y == character.y: if not character.has_target(): functions.load_level(Tile.MAP['level']) if bill.x == Tile.get_tile(Tile.MAP['point']).x and bill.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point(): bill.status = 'happy' bull.status = 'sad' elif bull.x == Tile.get_tile(Tile.MAP['point']).x and bull.y == Tile.get_tile(Tile.MAP['point']).y and not Character.on_point(): bull.status = 'happy' bill.status = 'sad' elif Character.on_point(): bill.status = 'happy' bull.status = 'happy' functions.load_level(Tile.MAP['level'] + 1) else: bill.status = 'sad' bull.status = 'sad' except Exception, e: functions.load_level(Tile.MAP['level'])
def interaction(screen, survivor): Mpos = pygame.mouse.get_pos() # [x, y] Mx = Mpos[0] / Tile.width My = Mpos[1] / Tile.height for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): tile.type = 'solid' tile.walkable = False break if event.type == pygame.KEYDOWN: if event.key == pygame.K_w: # North future_tile_number = survivor.get_number() - Tile.V if Tile.get_tile(future_tile_number).walkable: survivor.y -= survivor.height if event.key == pygame.K_s: # South future_tile_number = survivor.get_number() + Tile.V if Tile.get_tile(future_tile_number).walkable: survivor.y += survivor.height if event.key == pygame.K_a: # West future_tile_number = survivor.get_number() - Tile.H if Tile.get_tile(future_tile_number).walkable: survivor.x -= survivor.width if event.key == pygame.K_d: # East future_tile_number = survivor.get_number() + Tile.H if Tile.get_tile(future_tile_number).walkable: survivor.x += survivor.width
def player_input(screen,player): Mpos=pygame.mouse.get_pos() #[x,y] Mx=Mpos[0]//Tile.width My=Mpos[1]//Tile.height #print("Mx="+str(Mx)+" My="+str(My)) #for all events check for terminate for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: #toggle tile solid/empty for tile in Tile.List: if tile.x==(Mx*Tile.width) and tile.y==(My*Tile.height): if tile.type=='empty': tile.type='solid' tile.walkable=False else: tile.type='empty' tile.walkable=True break if event.type == pygame.KEYDOWN: if event.key==pygame.K_w: #North future_tile_number=player.get_number()-Tile.V if Tile.get_tile(future_tile_number).walkable: player.y-=player.height if event.key==pygame.K_s: #South future_tile_number=player.get_number()+Tile.V if Tile.get_tile(future_tile_number).walkable: player.y+=player.height if event.key==pygame.K_a: #West future_tile_number=player.get_number()-Tile.H if Tile.get_tile(future_tile_number).walkable: player.x-=player.width if event.key==pygame.K_d: #East future_tile_number=player.get_number()+Tile.H if Tile.get_tile(future_tile_number).walkable: player.x+=player.width
def spawn(total_frames, FPS): if total_frames % (2*FPS) == 0: if total_frames %(6*FPS)==0: r=randint(0,2) sounds=[pygame.mixer.Sound('Audio/zs1.ogg'),pygame.mixer.Sound('Audio/zs2.ogg'), pygame.mixer.Sound('Audio/zs3.ogg')] sound=sounds[r] sound.play() r = randint(0, len(Zombie.spawn_tiles) - 1) tile_num = Zombie.spawn_tiles[r] spawn_node = Tile.get_tile(tile_num) Zombie(spawn_node.x, spawn_node.y)
def spawn(totalFrames, FPS): if totalFrames % (FPS) == 0: if totalFrames % (FPS * 6) == 0: r = randint(0,2) sound = [pygame.mixer.Sound('Audio/zs1.ogg'), pygame.mixer.Sound('Audio/zs2.ogg'), pygame.mixer.Sound('Audio/zs3.ogg')] sound = sound[ r ] sound.play() r = randint(0, len(Zombie.d) - 1) tile_num = Zombie.d[r] spawnNode = Tile.getTile(tile_num) Zombie(spawnNode.x, spawnNode.y)
def spawn(total_frames, FPS): if total_frames % (FPS) == 0: if total_frames % (FPS) == 0: r = randint(0, 2) sounds = [ pygame.mixer.Sound('audio/zs1.ogg'), pygame.mixer.Sound('audio/zs2.ogg'), pygame.mixer.Sound('audio/zs3.ogg') ] sound = sounds[r] sound.play() r = randint(0, len(Zombie.spawn_tiles) - 1) tile_num = Zombie.spawn_tiles[r] spawn_node = Tile.get_tile(tile_num) Zombie(spawn_node.x, spawn_node.y)
def draw_tiles(screen): for tile in Tile.List: pygame.draw.aaline(screen, (100, 100, 100), (tile.x, tile.y), (tile.x, tile.y + Tile.height)) pygame.draw.aaline(screen, (100, 100, 100), (tile.x, tile.y + Tile.height), (tile.x + Tile.width, tile.y + Tile.height)) if (tile.walkable): if tile.number < Tile.total_tiles - Tile.V: tile_below = Tile.get_tile(tile.number + Tile.V) if (tile_below.walkable): if tile.type == 'point': screen.blit(Tile.point_block, (tile)) elif tile.type == 'hole': screen.blit(Tile.hole_block, (tile)) elif tile.type == 'spawnbill': screen.blit(Tile.bill_spawn, (tile)) elif tile.type == 'spawnbull': screen.blit(Tile.bull_spawn, (tile)) else: screen.blit(Tile.solid_block, (tile)) else: if tile.type == 'point': screen.blit(Tile.point_block_edge, (tile)) elif tile.type == 'hole': screen.blit(Tile.hole_block_edge, (tile)) elif tile.type == 'spawnbill': screen.blit(Tile.bill_spawn, (tile)) elif tile.type == 'spawnbull': screen.blit(Tile.bull_spawn, (tile)) else: screen.blit(Tile.solid_block_edge, (tile)) for tile in Tile.List: #SETS NEW TILE TYPES. SAME AS IN Tile.create_tiles FUNCTION, JUST REFRESHING FOR NEW MAP if tile.number in Tile.MAP['solids']: tile.type = 'solid' elif tile.number == Tile.MAP['point']: tile.type = 'point' elif tile.number in Tile.MAP['holes']: tile.type = 'hole' else: tile.type = 'empty' if tile.type == 'empty': tile.walkable = False else: tile.walkable = True
def spawn(total_frames, FPS): if total_frames % (FPS) == 0: if total_frames % (FPS * 48) == 0: # higher the multiplying value to slow the zombie spawn rate r = randint(0, 2) sounds = [pygame.mixer.Sound('audio/zs1.ogg'), pygame.mixer.Sound('audio/zs2.ogg'), pygame.mixer.Sound('audio/zs2.ogg') ] sounds = sounds[r] sounds.play() r = randint(0, len(Zombie.spawn_tiles) - 1) # pick a randon spawn tile tile_num = Zombie.spawn_tiles[r] spawn_node = Tile.get_tile(tile_num) Zombie(spawn_node.x, spawn_node.y)
def draw_tiles(screen): for tile in Tile.List: pygame.draw.aaline(screen, (100, 100, 100), (tile.x, tile.y), (tile.x, tile.y + Tile.height)) pygame.draw.aaline( screen, (100, 100, 100), (tile.x, tile.y + Tile.height), (tile.x + Tile.width, tile.y + Tile.height) ) if tile.walkable: if tile.number < Tile.total_tiles - Tile.V: tile_below = Tile.get_tile(tile.number + Tile.V) if tile_below.walkable: if tile.type == "point": screen.blit(Tile.point_block, (tile)) elif tile.type == "hole": screen.blit(Tile.hole_block, (tile)) elif tile.type == "spawnbill": screen.blit(Tile.bill_spawn, (tile)) elif tile.type == "spawnbull": screen.blit(Tile.bull_spawn, (tile)) else: screen.blit(Tile.solid_block, (tile)) else: if tile.type == "point": screen.blit(Tile.point_block_edge, (tile)) elif tile.type == "hole": screen.blit(Tile.hole_block_edge, (tile)) elif tile.type == "spawnbill": screen.blit(Tile.bill_spawn, (tile)) elif tile.type == "spawnbull": screen.blit(Tile.bull_spawn, (tile)) else: screen.blit(Tile.solid_block_edge, (tile)) for tile in Tile.List: # SETS NEW TILE TYPES. SAME AS IN Tile.create_tiles FUNCTION, JUST REFRESHING FOR NEW MAP if tile.number in Tile.MAP["solids"]: tile.type = "solid" elif tile.number == Tile.MAP["point"]: tile.type = "point" elif tile.number in Tile.MAP["holes"]: tile.type = "hole" else: tile.type = "empty" if tile.type == "empty": tile.walkable = False else: tile.walkable = True
def get_surrounding_tiles(parent_tile): surrounding_tile_numbers=( parent_tile.number+N, parent_tile.number+S, parent_tile.number+E, parent_tile.number+W, parent_tile.number+NW, parent_tile.number+NE, parent_tile.number+SW, parent_tile.number+SE) #print(surrounding_tile_numbers) tiles=[] pnum=parent_tile.number diagonals=[pnum+NE,pnum+NW,pnum+SE,pnum+SW] for tile_number in surrounding_tile_numbers: surrounding_tile=Tile.get_tile(tile_number) if surrounding_tile.walkable and surrounding_tile not in closed_list: #tiles.append(surrounding_tile) #consider diagonal directions blocky(tiles,diagonals,surrounding_tile) return tiles
def get_surrounding_tiles(base_node): array = ( (base_node.number + N), (base_node.number + NE), (base_node.number + E), (base_node.number + SE), (base_node.number + S), (base_node.number + SW), (base_node.number + W), (base_node.number + NW), ) # print array tiles = [] # all valid tiles for tile_number in array: surrounding_tile = Tile.get_tile(tile_number) if surrounding_tile.walkable and surrounding_tile not in closed_list: tiles.append(surrounding_tile) return tiles
def get_surrounding_tiles(parent_tile): surrounding_tile_numbers=( parent_tile.number+N, parent_tile.number+S, parent_tile.number+E, parent_tile.number+W, parent_tile.number+NW, parent_tile.number+NE, parent_tile.number+SW, parent_tile.number+SE) #print(surrounding_tile_numbers) tiles=[] pnum=parent_tile.number diagonals=[pnum+NE,pnum+NW,pnum+SE,pnum+SW] for tile_number in surrounding_tile_numbers: surrounding_tile=Tile.get_tile(tile_number) #prevent out-of-bounds path finding if tile_number not in range(1,Tile.total_tiles+1): continue if surrounding_tile.walkable and surrounding_tile not in closed_list: #tiles.append(surrounding_tile) #consider diagonal directions blocky(tiles,diagonals,surrounding_tile) return tiles
def update_characters( bill, bull ): #LOOKS FOR CHARACTERS FALLING IN HOLES OR STANDING ON MEETING POINT. try: for character in Character.List: if Tile.get_tile(character.get_number()).type == 'hole': if Tile.get_tile(character.get_number( )).x == character.x and Tile.get_tile( character.get_number()).y == character.y: if not character.has_target(): functions.load_level(Tile.MAP['level']) if bill.x == Tile.get_tile( Tile.MAP['point']).x and bill.y == Tile.get_tile( Tile.MAP['point']).y and not Character.on_point(): bill.status = 'happy' bull.status = 'sad' elif bull.x == Tile.get_tile( Tile.MAP['point']).x and bull.y == Tile.get_tile( Tile.MAP['point']).y and not Character.on_point(): bull.status = 'happy' bill.status = 'sad' elif Character.on_point(): bill.status = 'happy' bull.status = 'happy' functions.load_level(Tile.MAP['level'] + 1) else: bill.status = 'sad' bull.status = 'sad' except Exception, e: functions.load_level(Tile.MAP['level'])
def interaction(screen, bill, bull): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() keys = pygame.key.get_pressed() #WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW if keys[pygame. K_w] and not bill.has_target() and not bull.has_target(): # North future_tile_number_bill = bill.get_number() - Tile.V future_tile_number_bull = bull.get_number() - Tile.V if future_tile_number_bill and future_tile_number_bull in range( 1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP[ 'point'] and not Tile.get_tile( future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) #SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS if keys[pygame. K_s] and not bill.has_target() and not bull.has_target(): # South future_tile_number_bill = bill.get_number() + Tile.V future_tile_number_bull = bull.get_number() + Tile.V if future_tile_number_bill and future_tile_number_bull in range( 1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP[ 'point'] and not Tile.get_tile( future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) #AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA if keys[pygame. K_a] and not bill.has_target() and not bull.has_target(): # West future_tile_number_bill = bill.get_number() - Tile.H future_tile_number_bull = bull.get_number() - Tile.H if future_tile_number_bill and future_tile_number_bull in range( 1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP[ 'point'] and not Tile.get_tile( future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) #DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD if keys[pygame. K_d] and not bill.has_target() and not bull.has_target(): # East future_tile_number_bill = bill.get_number() + Tile.H future_tile_number_bull = bull.get_number() + Tile.H if future_tile_number_bill and future_tile_number_bull in range( 1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP[ 'point'] and not Tile.get_tile( future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull))
def interaction(screen, survivor): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_e: survivor.current += 1 survivor.current %= 3 #always remains 0-2 keys = pygame.key.get_pressed() if keys[pygame.K_w]: # North futureTileNumber = survivor.getNumber() - Tile.V if futureTileNumber in range(1, Tile.totalTiles + 1): futureTile = Tile.getTile(futureTileNumber) if futureTile.walkable: survivor.setTarget(futureTile) survivor.rotate('n') # survivor.y -= survivor.height if keys[pygame.K_s]: # South futureTileNumber = survivor.getNumber() + Tile.V if futureTileNumber in range(1, Tile.totalTiles + 1): futureTile = Tile.getTile(futureTileNumber) if futureTile.walkable: survivor.setTarget(futureTile) survivor.rotate('s') # survivor.y += survivor.height if keys[pygame.K_a]: # West futureTileNumber = survivor.getNumber() - Tile.H if futureTileNumber in range(1, Tile.totalTiles + 1): futureTile = Tile.getTile(futureTileNumber) if futureTile.walkable: survivor.setTarget(futureTile) survivor.rotate('w') # survivor.x -= survivor.width if keys[pygame.K_d]: # East futureTileNumber = survivor.getNumber() + Tile.H if futureTileNumber in range(1, Tile.totalTiles + 1): futureTile = Tile.getTile(futureTileNumber) if futureTile.walkable: survivor.setTarget(futureTile) survivor.rotate('e') # survivor.x += survivor.width if keys[pygame.K_LEFT]: survivor.rotate('w') #rorate west Bullet(survivor.centerx,survivor.centery, -10,0,'w',survivor.getBulletType()) elif keys[pygame.K_RIGHT]: survivor.rotate('e') Bullet(survivor.centerx,survivor.centery, 10,0,'e',survivor.getBulletType()) elif keys[pygame.K_UP]: survivor.rotate('n') Bullet(survivor.centerx,survivor.centery, 0,-10,'n',survivor.getBulletType()) elif keys[pygame.K_DOWN]: survivor.rotate('s') Bullet(survivor.centerx,survivor.centery, 0,10,'s',survivor.getBulletType())
def interaction(screen, survivor): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() # if a key is pressed if event.type == pygame.KEYDOWN: if event.key == pygame.K_e: survivor.current += 1 survivor.current %= 3 keys = pygame.key.get_pressed() if keys[pygame.K_w]: # North future_tile_number = survivor.get_number() - Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('n') # survivor.y -= survivor.height if keys[pygame.K_s]: # South future_tile_number = survivor.get_number() + Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('s') # survivor.y += survivor.height if keys[pygame.K_a]: # West future_tile_number = survivor.get_number() - Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('w') # survivor.x -= survivor.width if keys[pygame.K_d]: # East future_tile_number = survivor.get_number() + Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('e') # survivor.x += survivor.width if keys[pygame.K_LEFT]: survivor.rotate('w') Bullet(survivor.centerx, survivor.centery, -10, 0, 'w', survivor.get_bullet_type()) elif keys[pygame.K_RIGHT]: survivor.rotate('e') Bullet(survivor.centerx, survivor.centery, 10, 0, 'e', survivor.get_bullet_type()) elif keys[pygame.K_UP]: survivor.rotate('n') Bullet(survivor.centerx, survivor.centery, 0, -10, 'n', survivor.get_bullet_type()) elif keys[pygame.K_DOWN]: survivor.rotate('s') Bullet(survivor.centerx, survivor.centery, 0, 10, 's', survivor.get_bullet_type())
def interaction(screen, survivor): Mpos = pygame.mouse.get_pos() # [x, y] Mx = Mpos[0] / Tile.width My = Mpos[1] / Tile.height for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): tile.type = 'solid' tile.walkable = False break if event.type == pygame.KEYDOWN: if event.key==pygame.K_e: survivor.current+=1 survivor.current%=3 keys=pygame.key.get_pressed() if keys[pygame.K_UP]: # North future_tile_number = survivor.get_number() - Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: # survivor.y -= survivor.height survivor.set_target(future_tile) survivor.rotate('n') if keys[pygame.K_DOWN]: # South future_tile_number = survivor.get_number() + Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('s') # survivor.y += survivor.height if keys[pygame.K_LEFT]: # West future_tile_number = survivor.get_number() - Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('w') # survivor.x -= survivor.width if keys[pygame.K_RIGHT]: # East future_tile_number = survivor.get_number() + Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('e') # survivor.x += survivor.width if keys[pygame.K_w]: survivor.rotate('n') Bullet(survivor.centerx,survivor.centery,0,-10,'n',survivor.get_bullet_type()) elif keys[pygame.K_a]: survivor.rotate('w') Bullet(survivor.centerx,survivor.centery,-10,0,'w',survivor.get_bullet_type()) elif keys[pygame.K_s]: survivor.rotate('s') Bullet(survivor.centerx,survivor.centery,0,10,'s',survivor.get_bullet_type()) elif keys[pygame.K_d]: survivor.rotate('e') Bullet(survivor.centerx,survivor.centery,10,0,'e',survivor.get_bullet_type())
def build_controls(screen): Mpos = pygame.mouse.get_pos() # [x, y] Mx = Mpos[0] / Tile.width My = Mpos[1] / Tile.height LEFT = 1 MIDDLE = 2 RIGHT = 3 block_type = block_default.get() for event in pygame.event.get(): if event.type == pygame.QUIT: print Tile.MAP pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if event.button == LEFT: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): print 'Trying to create {} block on tile: {}'.format( block_type, tile.number) if block_type == 'solid': if tile.type == 'empty': Tile.MAP['solids'].append(tile.number) elif tile.number == Tile.MAP['point']: tile.MAP['point'] = 0 elif tile.number in Tile.MAP['holes']: Tile.MAP['holes'].remove(tile.number) elif block_type == 'point': if tile.type == 'empty': if Tile.get_tile( Tile.MAP['point']) in Tile.List: Tile.get_tile( Tile.MAP['point']).type = 'empty' Tile.get_tile( Tile.MAP['point']).walkable = False Tile.MAP['point'] = tile.number if tile.number in Tile.MAP['solids']: if Tile.get_tile( Tile.MAP['point']) in Tile.List: Tile.get_tile( Tile.MAP['point']).type = 'empty' Tile.get_tile( Tile.MAP['point']).walkable = False Tile.MAP['point'] = tile.number Tile.MAP['solids'].remove(tile.number) elif tile.number in Tile.MAP['holes']: if Tile.get_tile( Tile.MAP['point']) in Tile.List: Tile.get_tile( Tile.MAP['point']).type = 'empty' Tile.get_tile( Tile.MAP['point']).walkable = False Tile.MAP['point'] = tile.number Tile.MAP['holes'].remove(tile.number) elif block_type == 'hole': if tile.type == 'empty': Tile.MAP['holes'].append(tile.number) if tile.number in Tile.MAP['solids']: Tile.MAP['solids'].remove(tile.number) elif tile.number == Tile.MAP['point']: Tile.MAP['point'] = 0 elif block_type == 'spawnbill': elements = 0 for i in range(0, Tile.total_tiles + 1): if i in Tile.MAP['spawn']: elements += 1 if elements == 1: Tile.MAP['spawn'].append(1) elif elements > 2 or elements == 0: Tile.MAP['spawn'] = [1, 1] if tile.type == 'empty': if Tile.get_tile( Tile.MAP['spawn'][0]) in Tile.List: Tile.get_tile( Tile.MAP['spawn'][0]).type = 'empty' Tile.get_tile( Tile.MAP['spawn'][0]).walkable = False Tile.MAP['spawn'][0] = tile.number if tile.number in Tile.MAP['solids']: if Tile.get_tile( Tile.MAP['spawn'][0]) in Tile.List: Tile.get_tile( Tile.MAP['spawn'][0]).type = 'empty' Tile.get_tile( Tile.MAP['spawn'][0]).walkable = False Tile.MAP['spawn'][0] = tile.number elif tile.number in Tile.MAP['holes']: if Tile.get_tile( Tile.MAP['spawn'][0]) in Tile.List: Tile.get_tile( Tile.MAP['spawn'][0]).type = 'empty' Tile.get_tile( Tile.MAP['spawn'][0]).walkable = False Tile.MAP['spawn'][0] = tile.number Tile.MAP['holes'].remove(tile.number) elif block_type == 'spawnbull': elements = 0 for i in range(0, Tile.total_tiles + 1): if i in Tile.MAP['spawn']: elements += 1 if elements == 1: Tile.MAP['spawn'].append(1) elif elements > 2 or elements == 0: Tile.MAP['spawn'] = [1, 1] if tile.type == 'empty': if Tile.get_tile( Tile.MAP['spawn'][1]) in Tile.List: Tile.get_tile( Tile.MAP['spawn'][1]).type = 'empty' Tile.get_tile( Tile.MAP['spawn'][1]).walkable = False Tile.MAP['spawn'][1] = tile.number if tile.number in Tile.MAP['solids']: if Tile.get_tile( Tile.MAP['spawn'][1]) in Tile.List: Tile.get_tile( Tile.MAP['spawn'][1]).type = 'empty' Tile.get_tile( Tile.MAP['spawn'][1]).walkable = False Tile.MAP['spawn'][1] = tile.number elif tile.number in Tile.MAP['holes']: if Tile.get_tile( Tile.MAP['spawn'][1]) in Tile.List: Tile.get_tile( Tile.MAP['spawn'][1]).type = 'empty' Tile.get_tile( Tile.MAP['spawn'][1]).walkable = False Tile.MAP['spawn'][1] = tile.number Tile.MAP['holes'].remove(tile.number) tile.type = block_type tile.walkable = True if Tile.get_tile(tile.number).type == block_type: print 'Success!' else: print 'Failed.' elif event.button == RIGHT: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): i = 0 if tile.type == 'empty': print 'Tile is already empty.' else: print 'Trying to remove {} block from tile: {}'.format( tile.type, tile.number) i = 1 if tile.type == 'point': Tile.MAP['point'] = 0 else: if tile.number in Tile.MAP['solids']: Tile.MAP['solids'].remove(tile.number) elif tile.number in Tile.MAP['holes']: Tile.MAP['holes'].remove(tile.number) elif tile.number in Tile.MAP['spawn']: Tile.MAP['spawn'].remove(tile.number) tile.type = 'empty' tile.walkable = False if tile.type == 'empty' and i == 1: print 'Sucess!' else: print 'Failed.'
def get_tile(self): return Tile.get_tile(self.get_number())
import pygame, develop, functions from tileC import Tile from object_classes import Character from interaction import interaction pygame.init() screen = pygame.display.set_mode(Tile.screen_size) pygame.display.set_caption("PointBlocks Level Builder v1.2") clock = pygame.time.Clock() FPS = 60 Tile.create_tiles() bill = Character('Bill') bull = Character('Bull') while True: screen.fill((200,200,200)) develop.draw_tiles(screen) develop.show_inter_window() #develop.show_info(screen) if develop.testing == True: try: Character.update_characters(bill, bull) Character.draw_characters(screen) interaction(screen, bill, bull)
pygame.init() pygame.font.init() invalids = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198) screen = pygame.display.set_mode((720, 440)) for y in range(0, screen.get_height(), 40): for x in range(0, screen.get_width(), 40): if Tile.total_tiles in invalids: Tile(x, y, 'solid') else: Tile(x, y, 'empty') clock = pygame.time.Clock() FPS = 24 total_frames = 0 zombie1 = Zombie(200, 240) survivor = Survivor(400, 120) while True: screen.fill([0, 0, 0]) A_Star(screen, survivor) interaction(screen, survivor) Tile.draw_tiles(screen)
def player_input(screen,player): Mpos=pygame.mouse.get_pos() #[x,y] Mx=Mpos[0]//Tile.width My=Mpos[1]//Tile.height #print("Mx="+str(Mx)+" My="+str(My)) #for all events check for terminate for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() #Wall Creation & Removal if event.type == pygame.MOUSEBUTTONDOWN: #toggle tile solid/empty for tile in Tile.List: if tile.x==(Mx*Tile.width) and tile.y==(My*Tile.height): if tile.type=='empty': tile.type='solid' tile.walkable=False else: tile.type='empty' tile.walkable=True break #Player Weapon Selection if event.type==pygame.KEYDOWN: if event.key==pygame.K_e: player.gun=(player.gun+1)%3 #gun 0,1,2,0,1,2 #Player Movement # if event.type == pygame.KEYDOWN: keys=pygame.key.get_pressed() if keys[pygame.K_w]: #North future_tile_number=player.get_number()-Tile.V if future_tile_number in range(1,Tile.total_tiles+1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: player.set_target(future_tile) player.rotate('n') # player.y-=player.height if keys[pygame.K_s]: #South future_tile_number=player.get_number()+Tile.V if future_tile_number in range(1,Tile.total_tiles+1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: player.set_target(future_tile) player.rotate('s') # player.y+=player.height if keys[pygame.K_a]: #West future_tile_number=player.get_number()-Tile.H if future_tile_number in range(1,Tile.total_tiles+1): future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: player.set_target(future_tile) player.rotate('w') # player.x-=player.width if keys[pygame.K_d]: #East future_tile_number=player.get_number()+Tile.H if future_tile_number in range(1,Tile.total_tiles+1): # print("Out of bounds",future_tile_number,Tile.get_tile(future_tile_number)) future_tile=Tile.get_tile(future_tile_number) if future_tile.walkable: player.set_target(future_tile) player.rotate('e') # player.x+=player.width #Player Rotation if keys[pygame.K_LEFT]: player.rotate('w') Projectile(player.centerx,player.centery,-10,0,'w',player.get_bullet_type()) elif keys[pygame.K_RIGHT]: player.rotate('e') Projectile(player.centerx,player.centery,10,0,'e',player.get_bullet_type()) elif keys[pygame.K_UP]: player.rotate('n') Projectile(player.centerx,player.centery,0,-10,'n',player.get_bullet_type()) elif keys[pygame.K_DOWN]: player.rotate('s') Projectile(player.centerx,player.centery,0,10,'s',player.get_bullet_type())
def spawn(total_frames, FPS): if total_frames % (FPS * 3) == 0: r = randint(0, len(Zombie.spawn_tiles) - 1) tile_num = Zombie.spawn_tiles[r] spawn_node = Tile.get_tile(tile_num) Zombie(spawn_node.x, spawn_node.y)
def interaction(screen, bill, bull): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() keys = pygame.key.get_pressed() #WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW if keys[pygame.K_w] and not bill.has_target() and not bull.has_target(): # North future_tile_number_bill = bill.get_number() - Tile.V future_tile_number_bull = bull.get_number() - Tile.V if future_tile_number_bill and future_tile_number_bull in range(1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP['point'] and not Tile.get_tile(future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) #SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS if keys[pygame.K_s] and not bill.has_target() and not bull.has_target(): # South future_tile_number_bill = bill.get_number() + Tile.V future_tile_number_bull = bull.get_number() + Tile.V if future_tile_number_bill and future_tile_number_bull in range(1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP['point'] and not Tile.get_tile(future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) #AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA if keys[pygame.K_a] and not bill.has_target() and not bull.has_target(): # West future_tile_number_bill = bill.get_number() - Tile.H future_tile_number_bull = bull.get_number() - Tile.H if future_tile_number_bill and future_tile_number_bull in range(1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP['point'] and not Tile.get_tile(future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) #DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD if keys[pygame.K_d] and not bill.has_target() and not bull.has_target(): # East future_tile_number_bill = bill.get_number() + Tile.H future_tile_number_bull = bull.get_number() + Tile.H if future_tile_number_bill and future_tile_number_bull in range(1, Tile.total_tiles + 1): if future_tile_number_bull == Tile.MAP['point'] and not Tile.get_tile(future_tile_number_bill).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if future_tile_number_bill != bull.get_number(): if Tile.get_tile(future_tile_number_bill).walkable: bill.set_target(Tile.get_tile(future_tile_number_bill)) if future_tile_number_bull != bill.get_number(): if Tile.get_tile(future_tile_number_bull).walkable: bull.set_target(Tile.get_tile(future_tile_number_bull)) if keys[pygame.K_u] and not bill.has_target() and not bull.has_target(): # North bill.unnatural = True bill.set_target(Tile.get_tile(Tile.MAP['spawn'][1])) if keys[pygame.K_ESCAPE]: functions.state = 3
from classes import * from interaction import interaction from A_Star import A_Star from time import sleep pygame.init() pygame.font.init() pygame.mixer.init() pygame.mixer.music.load('Audio/zombie_theme.ogg') pygame.mixer.music.play(-1) #-1 : iur music will replay again, never stops screen = pygame.display.set_mode((704, 448)) # 32, 32 Tile.preInit(screen) #tiles are made using function. clock = pygame.time.Clock() FPS = 20 totalFrames = 0 dungeon = pygame.image.load('images/dungeon.jpg') survivor = Survivor(32 * 2, 32 * 4) while True: screen.blit(dungeon, (0,0) ) Zombie.spawn(totalFrames, FPS)
def build_controls(screen): Mpos = pygame.mouse.get_pos() # [x, y] Mx = Mpos[0] / Tile.width My = Mpos[1] / Tile.height LEFT = 1 MIDDLE = 2 RIGHT = 3 block_type = block_default.get() for event in pygame.event.get(): if event.type == pygame.QUIT: print Tile.MAP pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if event.button == LEFT: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): print "Trying to create {} block on tile: {}".format(block_type, tile.number) if block_type == "solid": if tile.type == "empty": Tile.MAP["solids"].append(tile.number) elif tile.number == Tile.MAP["point"]: tile.MAP["point"] = 0 elif tile.number in Tile.MAP["holes"]: Tile.MAP["holes"].remove(tile.number) elif block_type == "point": if tile.type == "empty": if Tile.get_tile(Tile.MAP["point"]) in Tile.List: Tile.get_tile(Tile.MAP["point"]).type = "empty" Tile.get_tile(Tile.MAP["point"]).walkable = False Tile.MAP["point"] = tile.number if tile.number in Tile.MAP["solids"]: if Tile.get_tile(Tile.MAP["point"]) in Tile.List: Tile.get_tile(Tile.MAP["point"]).type = "empty" Tile.get_tile(Tile.MAP["point"]).walkable = False Tile.MAP["point"] = tile.number Tile.MAP["solids"].remove(tile.number) elif tile.number in Tile.MAP["holes"]: if Tile.get_tile(Tile.MAP["point"]) in Tile.List: Tile.get_tile(Tile.MAP["point"]).type = "empty" Tile.get_tile(Tile.MAP["point"]).walkable = False Tile.MAP["point"] = tile.number Tile.MAP["holes"].remove(tile.number) elif block_type == "hole": if tile.type == "empty": Tile.MAP["holes"].append(tile.number) if tile.number in Tile.MAP["solids"]: Tile.MAP["solids"].remove(tile.number) elif tile.number == Tile.MAP["point"]: Tile.MAP["point"] = 0 elif block_type == "spawnbill": elements = 0 for i in range(0, Tile.total_tiles + 1): if i in Tile.MAP["spawn"]: elements += 1 if elements == 1: Tile.MAP["spawn"].append(1) elif elements > 2 or elements == 0: Tile.MAP["spawn"] = [1, 1] if tile.type == "empty": if Tile.get_tile(Tile.MAP["spawn"][0]) in Tile.List: Tile.get_tile(Tile.MAP["spawn"][0]).type = "empty" Tile.get_tile(Tile.MAP["spawn"][0]).walkable = False Tile.MAP["spawn"][0] = tile.number if tile.number in Tile.MAP["solids"]: if Tile.get_tile(Tile.MAP["spawn"][0]) in Tile.List: Tile.get_tile(Tile.MAP["spawn"][0]).type = "empty" Tile.get_tile(Tile.MAP["spawn"][0]).walkable = False Tile.MAP["spawn"][0] = tile.number elif tile.number in Tile.MAP["holes"]: if Tile.get_tile(Tile.MAP["spawn"][0]) in Tile.List: Tile.get_tile(Tile.MAP["spawn"][0]).type = "empty" Tile.get_tile(Tile.MAP["spawn"][0]).walkable = False Tile.MAP["spawn"][0] = tile.number Tile.MAP["holes"].remove(tile.number) elif block_type == "spawnbull": elements = 0 for i in range(0, Tile.total_tiles + 1): if i in Tile.MAP["spawn"]: elements += 1 if elements == 1: Tile.MAP["spawn"].append(1) elif elements > 2 or elements == 0: Tile.MAP["spawn"] = [1, 1] if tile.type == "empty": if Tile.get_tile(Tile.MAP["spawn"][1]) in Tile.List: Tile.get_tile(Tile.MAP["spawn"][1]).type = "empty" Tile.get_tile(Tile.MAP["spawn"][1]).walkable = False Tile.MAP["spawn"][1] = tile.number if tile.number in Tile.MAP["solids"]: if Tile.get_tile(Tile.MAP["spawn"][1]) in Tile.List: Tile.get_tile(Tile.MAP["spawn"][1]).type = "empty" Tile.get_tile(Tile.MAP["spawn"][1]).walkable = False Tile.MAP["spawn"][1] = tile.number elif tile.number in Tile.MAP["holes"]: if Tile.get_tile(Tile.MAP["spawn"][1]) in Tile.List: Tile.get_tile(Tile.MAP["spawn"][1]).type = "empty" Tile.get_tile(Tile.MAP["spawn"][1]).walkable = False Tile.MAP["spawn"][1] = tile.number Tile.MAP["holes"].remove(tile.number) tile.type = block_type tile.walkable = True if Tile.get_tile(tile.number).type == block_type: print "Success!" else: print "Failed." elif event.button == RIGHT: for tile in Tile.List: if tile.x == (Mx * Tile.width) and tile.y == (My * Tile.width): i = 0 if tile.type == "empty": print "Tile is already empty." else: print "Trying to remove {} block from tile: {}".format(tile.type, tile.number) i = 1 if tile.type == "point": Tile.MAP["point"] = 0 else: if tile.number in Tile.MAP["solids"]: Tile.MAP["solids"].remove(tile.number) elif tile.number in Tile.MAP["holes"]: Tile.MAP["holes"].remove(tile.number) elif tile.number in Tile.MAP["spawn"]: Tile.MAP["spawn"].remove(tile.number) tile.type = "empty" tile.walkable = False if tile.type == "empty" and i == 1: print "Sucess!" else: print "Failed."
def interaction(screen, survivor): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_e: # cycle through weapons array survivor.current_weapon +=1 survivor.current_weapon %=2 # back to 0 keys = pygame.key.get_pressed() if keys[pygame.K_w]: # North future_tile_number = survivor.get_number() - Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): # stops from going out of bounds future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('n') if keys[pygame.K_s]: # South future_tile_number = survivor.get_number() + Tile.V if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('s') if keys[pygame.K_a]: # West future_tile_number = survivor.get_number() - Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('w') if keys[pygame.K_d]: # East future_tile_number = survivor.get_number() + Tile.H if future_tile_number in range(1, Tile.total_tiles + 1): future_tile = Tile.get_tile(future_tile_number) if future_tile.walkable: survivor.set_target(future_tile) survivor.rotate('e') if keys[pygame.K_LEFT]: survivor.rotate('w') Bullet(survivor.centerx, survivor.centery, -10, 0, 'w', survivor.get_bullet_type()) elif keys[pygame.K_RIGHT]: survivor.rotate('e') Bullet(survivor.centerx, survivor.centery, 10, 0, 'e', survivor.get_bullet_type()) elif keys[pygame.K_UP]: survivor.rotate('n') Bullet(survivor.centerx, survivor.centery, 0, -10, 'n', survivor.get_bullet_type()) elif keys[pygame.K_DOWN]: survivor.rotate('s') Bullet(survivor.centerx, survivor.centery, 0, 10, 's', survivor.get_bullet_type())
pygame.init() #initializing pygame pygame.font.init() #displaying font in screen pygame.mixer.init() #initializing mixed components of pygame pygame.mixer.music.load('audio/zombie_theme.ogg') pygame.mixer.music.play(-1) #-1 means the music will play infinite times until the game stop screen = pygame.display.set_mode((704, 448)) # 32, 32 #creating display """ putting tiles to our screen """ for y in range(0, screen.get_height(), 32): for x in range(0, screen.get_width(), 32): if Tile.total_tiles in Tile.invalids: Tile(x, y, 'solid') else: Tile(x, y, 'empty') """ """ clock = pygame.time.Clock() FPS = 20 total_frames = 0 dungeon = pygame.image.load('images/dungeon.jpg') survivor = Survivor(32 * 2, 32 * 4) while True:
from tileC import Tile from object_classes import * from interaction import interaction from A_Star import A_Star from time import sleep pygame.init() pygame.font.init() pygame.mixer.init() #pygame.mixer.music.load('audio/zombie_theme.ogg') #pygame.mixer.music.play(-1) screen = pygame.display.set_mode((704, 448)) # 32, 32 Tile.pre_init(screen) clock = pygame.time.Clock() FPS = 60 total_frames = 0 dungeon = pygame.image.load('images/dungeon.jpg') # zombie1 = Zombie(80, 80) survivor = Survivor(32 * 2, 32 * 4) while True: screen.blit(dungeon, (0, 0)) Zombie.spawn(total_frames, FPS)
def spawn(total_frames, FPS): if total_frames % (FPS * 3) == 0: r = randint(0, len(Coin.spawn_tiles) - 1) tile_num = Coin.spawn_tiles[r] spawn_node = Tile.get_tile(tile_num) Coin(spawn_node.x, spawn_node.y)
from tileC import Tile from classes import * from interaction import interaction from A_Star import A_Star from time import sleep pygame.init() pygame.font.init() pygame.mixer.init() pygame.mixer.music.load('Audio/zombie_theme.ogg') pygame.mixer.music.play(-1) #-1 : iur music will replay again, never stops screen = pygame.display.set_mode((704, 448)) # 32, 32 Tile.preInit(screen) #tiles are made using function. clock = pygame.time.Clock() FPS = 20 totalFrames = 0 dungeon = pygame.image.load('images/dungeon.jpg') survivor = Survivor(32 * 2, 32 * 4) while True: screen.blit(dungeon, (0, 0)) Zombie.spawn(totalFrames, FPS) Zombie.update(screen, survivor)
def getTile(self): return Tile.getTile(self.getNumber())
def spawn(total_frames, FPS): if total_frames % (FPS & 2) == 0: r = randint(0, len(Zombie.spawn_tiles) - 1) tile_num = Zombie.spawn_tiles[r] spawn_node = Tile.get_tile(tile_num) Zombie(spawn_node.x, spawn_node.y)
from object_classes import * from interaction import interaction from A_Star import A_Star pygame.init() pygame.font.init() pygame.mixer.init() pygame.mixer.music.load('audio/tristram.mp3') pygame.mixer.music.play(-1) pygame.mixer.music.set_volume(.25) screen = pygame.display.set_mode((1280, 960)) # 40, 30 Tile.pre_init(screen) clock = pygame.time.Clock() FPS = 20 total_frames = 0 dungeon = pygame.image.load('images/map1.png') survivor = Survivor(128, 512) while True: screen.blit(dungeon, (0,0) ) Zombie.spawn(total_frames, FPS) survivor.movement() Bullet.super_massive_jumbo_loop(screen)
def respawn(bill, bull): bill.x, bill.y = Tile.get_tile(Tile.MAP['spawn'][0]).x, Tile.get_tile(Tile.MAP['spawn'][0]).y bull.x, bull.y = Tile.get_tile(Tile.MAP['spawn'][1]).x, Tile.get_tile(Tile.MAP['spawn'][1]).y