Active recipe in top right corner. Shift cycles recipes.

This commit is contained in:
Cameron Smart
2020-04-22 21:58:33 -07:00
parent 68f572124a
commit 05a9900687
4 changed files with 72 additions and 31 deletions

View File

@@ -47,7 +47,7 @@ class Config(object):
DEBUG = False DEBUG = False
#Monster Count to be spawned #Monster Count to be spawned
MONSTER_COUNT = 20 MONSTER_COUNT = 0
class Enums(Enum): class Enums(Enum):

View File

@@ -15,6 +15,7 @@ from config import Config
from map import Dungeon from map import Dungeon
from mobs import Player, Enemy from mobs import Player, Enemy
from projectiles import Temp from projectiles import Temp
from recipe import ActiveRecipe
class FPSCounter: class FPSCounter:
@@ -56,6 +57,7 @@ class Game(arcade.Window):
self.physics_engine = None # Our physics engine self.physics_engine = None # Our physics engine
# Used to keep track of our scrolling # Used to keep track of our scrolling
self.view_bottom = self.view_left = 0 self.view_bottom = self.view_left = 0
self.active_recipe = []
arcade.set_background_color(arcade.color.BLACK) arcade.set_background_color(arcade.color.BLACK)
@@ -78,6 +80,9 @@ class Game(arcade.Window):
self.player.center_x, self.player.center_y = level.center() self.player.center_x, self.player.center_y = level.center()
# x, y = level.center() # x, y = level.center()
self.active_recipe = ActiveRecipe()
self.active_recipe.set_ghosts()
#Set up monsters #Set up monsters
for count in range(Config.MONSTER_COUNT): for count in range(Config.MONSTER_COUNT):
mob = Enemy(filename="resources/images/monsters/ghost/ghost1.png", dungeon=self.dungeon) mob = Enemy(filename="resources/images/monsters/ghost/ghost1.png", dungeon=self.dungeon)
@@ -86,28 +91,7 @@ class Game(arcade.Window):
mob.scale = 4 mob.scale = 4
mob.monster_type = 'ghost' mob.monster_type = 'ghost'
self.enemy_list.append(mob) self.enemy_list.append(mob)
'''
mob = Mob(filename="resources/images/monsters/ghost/ghost1.png", dungeon=self.dungeon)
mob.center_x, mob.center_y = random.choice(self.dungeon.levelList).center()
mob.target = self.player
mob.scale = 4
self.enemy_list.append(mob)
mob = Mob(filename="resources/images/monsters/ghost/ghost1.png", dungeon=self.dungeon)
mob.center_x, mob.center_y = random.choice(self.dungeon.levelList).center()
mob.target = self.player
mob.scale = 4
self.enemy_list.append(mob)
mob = Mob(filename="resources/images/monsters/ghost/ghost1.png", dungeon=self.dungeon)
mob.center_x, mob.center_y = random.choice(self.dungeon.levelList).center()
mob.target = self.player
mob.scale = 4
self.enemy_list.append(mob)
mob = Mob(filename="resources/images/monsters/ghost/ghost1.png", dungeon=self.dungeon)
mob.center_x, mob.center_y = random.choice(self.dungeon.levelList).center()
mob.target = self.player
mob.scale = 4
self.enemy_list.append(mob)
'''
# Setup viewport # Setup viewport
self.view_bottom = self.player.center_x - (0.5 * Config.SCREEN_WIDTH) + 300 self.view_bottom = self.player.center_x - (0.5 * Config.SCREEN_WIDTH) + 300
self.view_left = self.player.center_x - (0.5 * Config.SCREEN_WIDTH) self.view_left = self.player.center_x - (0.5 * Config.SCREEN_WIDTH)
@@ -116,10 +100,6 @@ class Game(arcade.Window):
self.view_bottom, self.view_bottom,
Config.SCREEN_HEIGHT + self.view_bottom) Config.SCREEN_HEIGHT + self.view_bottom)
# Create monsters
# self.enemy_list.append(Enemy("resources/images/monsters/ghost/ghost1.png", 200, 200, 4))
# self.enemy_list.append(Enemy("resources/images/monsters/frog/frog1.png", 200, 1000, 4))
# Create the 'physics engine' # Create the 'physics engine'
self.physics_engine = arcade.PhysicsEngineSimple(self.player, self.dungeon.getWalls()) self.physics_engine = arcade.PhysicsEngineSimple(self.player, self.dungeon.getWalls())
@@ -135,6 +115,7 @@ class Game(arcade.Window):
self.enemy_list.draw() self.enemy_list.draw()
self.active_enemies.draw() self.active_enemies.draw()
self.bullet_list.draw() self.bullet_list.draw()
self.active_recipe.render()
if Config.DEBUG: if Config.DEBUG:
x, y = self.player.position x, y = self.player.position
@@ -191,6 +172,8 @@ class Game(arcade.Window):
self.prev_keypress.append(key) self.prev_keypress.append(key)
elif key == 65307: elif key == 65307:
self.close() self.close()
elif key == 65505:
self.active_recipe.next_recipe()
def on_key_release(self, key, modifiers): def on_key_release(self, key, modifiers):
"""Called when the user releases a key. """ """Called when the user releases a key. """
@@ -207,6 +190,7 @@ class Game(arcade.Window):
elif key == arcade.key.RIGHT or key == arcade.key.D: elif key == arcade.key.RIGHT or key == arcade.key.D:
self.player.change_x = 0 self.player.change_x = 0
self.prev_keypress.remove(key) self.prev_keypress.remove(key)
if self.prev_keypress: if self.prev_keypress:
self.on_key_press(self.prev_keypress.pop(0), 0) self.on_key_press(self.prev_keypress.pop(0), 0)
@@ -215,8 +199,6 @@ class Game(arcade.Window):
Called whenever the mouse is clicked. Called whenever the mouse is clicked.
""" """
# Create a bullet TEMP SPRITE, currently wielding frog slingshot # Create a bullet TEMP SPRITE, currently wielding frog slingshot
bullet = Temp() bullet = Temp()
# Position the bullet at the player's current location # Position the bullet at the player's current location
@@ -322,7 +304,6 @@ class Game(arcade.Window):
self.player.add_kill(enemy_hit_list[0].monster_type) self.player.add_kill(enemy_hit_list[0].monster_type)
enemy_hit_list[0].remove_from_sprite_lists() enemy_hit_list[0].remove_from_sprite_lists()
# If the bullet flies off-screen, remove it. TEMP change to range calc # If the bullet flies off-screen, remove it. TEMP change to range calc
if ( if (
bullet.bottom < self.view_bottom or bullet.bottom < self.view_bottom or

View File

@@ -63,7 +63,7 @@ class Player(Mob):
# Adds a kill to kill_list. If 3 or more check the recipe then give a power up if it matches. # Adds a kill to kill_list. If 3 or more check the recipe then give a power up if it matches.
self.kill_list.append(creature) self.kill_list.append(creature)
if self.cur_recipe == self.kill_list: if self.cur_recipe.sort() == self.kill_list.sort():
print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++") print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++")
self.kill_list = [] self.kill_list = []

60
triple-dungeon/recipe.py Normal file
View File

@@ -0,0 +1,60 @@
'''
Recipes are combinations of three monsters. When a player fills a recipe they get an updgrade
'''
import arcade
from enum import Enum
class Recipe(Enum):
'''A class of different recipes'''
GHOSTS = ['ghost', 'ghost', 'ghost']
FROGS = ['frog', 'frog', 'frog']
GHOST_FROG = ['ghost', 'ghost', 'frog']
FROG_GHOST = ['ghost', 'frog', 'frog']
class ActiveRecipe(arcade.SpriteList):
'''
Keeps track of the active recipe and draws it.
'''
def __init__(self):
super().__init__()
self.active = Recipe.GHOSTS
self.cycle_recipes = [self.set_frogs, self.set_ghosts]
self.pos = 0
def render(self) -> None:
x = 0
for sprite in self.sprite_list:
screen_right = arcade.get_viewport()[1] - 100
screen_top = arcade.get_viewport()[3] - 80
sprite.scale = 4
sprite.center_x = screen_right - x
sprite.center_y = screen_top
x += 70
sprite.draw()
def next_recipe(self):
self.cycle_recipes[self.pos]()
self.pos += 1
if self.pos == len(self.cycle_recipes):
self.pos = 0
def set_ghosts(self) -> None:
self.active = Recipe.GHOSTS
self.sprite_list = []
self.sprite_list.append(arcade.Sprite(filename="resources/images/monsters/ghost/ghost1.png"))
self.sprite_list.append(arcade.Sprite(filename="resources/images/monsters/ghost/ghost1.png"))
self.sprite_list.append(arcade.Sprite(filename="resources/images/monsters/ghost/ghost1.png"))
def set_frogs(self) -> None:
self.active = Recipe.FROGS
self.sprite_list = []
self.sprite_list.append(arcade.Sprite(filename="resources/images/monsters/frog/frog1.png"))
self.sprite_list.append(arcade.Sprite(filename="resources/images/monsters/frog/frog1.png"))
self.sprite_list.append(arcade.Sprite(filename="resources/images/monsters/frog/frog1.png"))