import pygame import sys from random import randint from config import WINDOW_HEIGHT, WINDOW_WIDTH, GRID_HEIGHT, GRID_WIDTH, HOUSE_CAPACITY, FPS, GC_X, GC_Y from DataModels.Grass import Grass from DataModels.House import House from DataModels.Dump import Dump from DataModels.Road import Road from DataModels.GC import GC pygame_sprites = pygame.sprite.Group() FPS_CLOCK = pygame.time.Clock() GAME_WINDOW = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32) map = open(sys.argv[1], 'r') map.readline() map.readline() map_objects = [[None for y in range(0, GRID_WIDTH)] for x in range(0, GRID_HEIGHT)] def generate(letter): key = 'D' if letter in ['B', 'G', 'Y'] else letter letter_mapping = { 'E': lambda x, y: Grass(x, y), 'H': lambda x, y, max_rubbish, yellow, green, blue: House(x, y, max_rubbish, yellow, green, blue), 'D': lambda x, y, max_rubbish, dump_type: Dump(x, y, max_rubbish, dump_type), 'R': lambda x, y: Road(x, y) } return letter_mapping[key] i = 0 for y in map.readlines(): for x in y.split(): x_coord = i % GRID_WIDTH y_coord = (i-x_coord)//GRID_WIDTH yellow, green, blue = [randint(0, HOUSE_CAPACITY // 2), randint( 0, HOUSE_CAPACITY // 2), randint(0, HOUSE_CAPACITY // 2)] if x is 'E': map_objects[x_coord][y_coord] = generate(x)(x_coord, y_coord) elif x is 'H': map_objects[x_coord][y_coord] = generate(x)( x_coord, y_coord, HOUSE_CAPACITY, yellow, green, blue) elif x is 'B': map_objects[x_coord][y_coord] = generate( x)(x_coord, y_coord, 100, "Dump_Blue") elif x is 'G': map_objects[x_coord][y_coord] = generate( x)(x_coord, y_coord, 100, "Dump_Green") elif x is 'Y': map_objects[x_coord][y_coord] = generate( x)(x_coord, y_coord, 100, "Dump_Yellow") elif x is 'R': map_objects[x_coord][y_coord] = generate(x)(x_coord, y_coord) i += 1 for line in map_objects: for item in line: pygame_sprites.add(item) gc = GC(GC_X, GC_Y, 2) print("GC: " + str(GC_X) + str(GC_Y)) pygame_sprites.add(gc) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYUP: if event.key == pygame.K_UP: gc.move("up", map_objects) elif event.key == pygame.K_DOWN: gc.move("down", map_objects) elif event.key == pygame.K_LEFT: gc.move("left", map_objects) elif event.key == pygame.K_RIGHT: gc.move("right", map_objects) elif event.key == pygame.K_SPACE: gc.collect(map_objects) pygame_sprites.update() pygame_sprites.draw(GAME_WINDOW) pygame.display.flip() FPS_CLOCK.tick(FPS)