Mobs now takes an x, y location and places the sprite there.

This commit is contained in:
Cameron Smart
2020-04-18 22:47:27 -07:00
parent 1bb5aeb3c1
commit 3b81bcfc65
2 changed files with 16 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ import arcade
from config import Config from config import Config
from map import Level from map import Level
from mobs import Player from mobs import Player
from mobs import Enemy
class Game(arcade.Window): class Game(arcade.Window):
@@ -24,6 +25,7 @@ class Game(arcade.Window):
# go into a list. # go into a list.
self.wall_list = None self.wall_list = None
self.floor_list = None self.floor_list = None
self.enemy_list = None
self.player_list = None self.player_list = None
# Separate variable that holds the player sprite # Separate variable that holds the player sprite
@@ -46,6 +48,7 @@ class Game(arcade.Window):
# Create the Sprite lists # Create the Sprite lists
self.wall_list = arcade.SpriteList() self.wall_list = arcade.SpriteList()
self.floor_list = arcade.SpriteList() self.floor_list = arcade.SpriteList()
self.enemy_list = arcade.SpriteList()
# Set up the player, specifically placing it at these coordinates. # Set up the player, specifically placing it at these coordinates.
Player.setup(self) Player.setup(self)
@@ -53,6 +56,10 @@ class Game(arcade.Window):
# Create the level # Create the level
self.floor_list, self.wall_list = Level.load_file('resources/levels/box.json') self.floor_list, self.wall_list = Level.load_file('resources/levels/box.json')
# Create monsters
self.enemy_list.append(Enemy(image_source, 100, 100).get_enemy())
self.enemy_list.append(Enemy(image_source, Config.SCREEN_WIDTH / 2 + 10, Config.SCREEN_HEIGHT / 2 + 10).get_enemy())
# Create the 'physics engine' # Create the 'physics engine'
self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list) self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list)
@@ -61,10 +68,11 @@ class Game(arcade.Window):
# Clear the screen to the background color # Clear the screen to the background color
arcade.start_render() arcade.start_render()
# Draw our sprites # Draw our sprites
self.floor_list.draw() self.floor_list.draw()
self.player_sprite.draw() self.player_sprite.draw()
self.enemy_list.draw()
self.wall_list.draw() self.wall_list.draw()
def on_key_press(self, key, modifiers): def on_key_press(self, key, modifiers):

View File

@@ -12,11 +12,14 @@ class Mob(object):
""" """
Represents a Mob. No defined behaviour, it has no intelligence. Represents a Mob. No defined behaviour, it has no intelligence.
""" """
def __init__(self, sprite, max_health=100, max_armor=0) -> None: def __init__(self, sprite, x, y, max_health=100, max_armor=0) -> None:
self.sprite_path = sprite self.sprite_path = sprite
self.sprite = arcade.Sprite(self.sprite_path, Config.CHARACTER_SCALING) self.sprite = arcade.Sprite(self.sprite_path, Config.CHARACTER_SCALING)
self.max_health, self.max_armor = max_health, max_armor self.max_health, self.max_armor = max_health, max_armor
self.health, self.armor = max_health, max_armor self.health, self.armor = max_health, max_armor
self.sprite.scale = 4
self.sprite.center_x = x
self.sprite.center_y = y
def tick(self) -> None: def tick(self) -> None:
""" """
@@ -56,6 +59,9 @@ class Enemy(Mob):
def __init__(self, *args, **kwargs) -> None: def __init__(self, *args, **kwargs) -> None:
super(Enemy, self).__init__(*args, **kwargs) super(Enemy, self).__init__(*args, **kwargs)
def get_enemy(self):
return self.sprite
def tick(self) -> None: def tick(self) -> None:
""" """
A on_update function, the Enemy Mob should scan for the player, decide how to path to it, and A on_update function, the Enemy Mob should scan for the player, decide how to path to it, and