import pygame as pg import json from Enemy import enemy from world import World from turret import Turret import Constants as c # Initialize pygame pg.init() # Create clock clock = pg.time.Clock() # Create game window screen = pg.display.set_mode((c.SCREEN_WIDTH + c.SIDE_PANEL, c.SCREEN_HEIGHT)) pg.display.set_caption("Tower Defence") # Load images # Map map_image = pg.image.load('TowerDefenceAssets/level.png').convert_alpha() # Enemies enemy_image = pg.image.load('TowerDefenceAssets/Enemies/enemy_1.png').convert_alpha() #buttons buy_turret_image = pg.image.load('TowerDefenceAssets/Buttons/buy_turret.png').convert_alpha() cancel_image = pg.image.load('TowerDefenceAssets/Buttons/cancel.png').convert_alpha() # Load JSON data for level with open('TowerDefenceAssets/level.tmj') as file: world_data = json.load(file) def create_turret(mouse_pos): mouse_tile_x = mouse_pos[0] // c.TILE_SIZE mouse_tile_y = mouse_pos[1] // c.TILE_SIZE #calculate the sequential number of the tile mouse_tile_num = (mouse_tile_y * c.COLS) + mouse_tile_x #check if that tile is grass if world.tile_map[mouse_tile_num] == 7: #check that there isn't already a turret there space_is_free = True for turret in turret_group: if (mouse_tile_x, mouse_tile_y) == (turret.tile_x, turret.tile_y): space_is_free = False #if it is a free space then create turret if space_is_free == True: new_turret = Turret(cursor_turret, mouse_tile_x, mouse_tile_y) turret_group.add(new_turret) # Create world world = World(world_data, map_image) world.process_data() # Individual turret image for mouse cursor cursor_turret = pg.image.load('TowerDefenceAssets/Purple/Weapons/turret_02_mk1.gif').convert_alpha() # Create groups enemy_group = pg.sprite.Group() turret_group = pg.sprite.Group() # Create an enemy instance enemy = enemy(world.waypoints, enemy_image) enemy_group.add(enemy) # Game loop run = True while run: clock.tick(c.FPS) screen.fill("grey100") # Draw level world.draw(screen) # Update groups enemy_group.update() # Draw groups enemy_group.draw(screen) turret_group.draw(screen) # Event handler for event in pg.event.get(): # Quit program if event.type == pg.QUIT: run = False # Mouse click if event.type == pg.MOUSEBUTTONDOWN and event.button == 1: mouse_pos = pg.mouse.get_pos() #check if mouse is on the game area if mouse_pos[0] < c.SCREEN_WIDTH and mouse_pos[1] < c.SCREEN_HEIGHT: create_turret(mouse_pos) # Update display pg.display.flip() pg.quit()