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 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 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(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 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)
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 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): 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 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 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
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())
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)
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 get_tile(self): return Tile.get_tile(self.get_number())
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 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