From 46c9270c19ff91248d6ea8a659cbc410591fc3eb Mon Sep 17 00:00:00 2001 From: Cameron Smart Date: Sat, 18 Apr 2020 22:47:27 -0700 Subject: [PATCH 1/2] Mobs now takes an x, y location and places the sprite there. --- triple-dungeon/main.py | 12 +++++++++--- triple-dungeon/mobs.py | 8 +++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/triple-dungeon/main.py b/triple-dungeon/main.py index 8d80d0a..2fe1a86 100644 --- a/triple-dungeon/main.py +++ b/triple-dungeon/main.py @@ -8,6 +8,7 @@ import arcade from config import Config from map import Level +from mobs import Enemy class Game(arcade.Window): @@ -23,6 +24,7 @@ class Game(arcade.Window): # go into a list. self.wall_list = None self.floor_list = None + self.enemy_list = None self.player_list = None # Separate variable that holds the player sprite @@ -43,9 +45,8 @@ class Game(arcade.Window): def setup(self): """ Set up the game here. Call this function to restart the game. """ # Create the Sprite lists - self.wall_list = arcade.SpriteList() - self.floor_list = arcade.SpriteList() self.player_list = arcade.SpriteList() + self.enemy_list = arcade.SpriteList() # Set up the player, specifically placing it at these coordinates. image_source = "resources/images/monsters/skeleton.png" @@ -58,6 +59,10 @@ class Game(arcade.Window): # Create the level 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' self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list) @@ -66,10 +71,11 @@ class Game(arcade.Window): # Clear the screen to the background color arcade.start_render() - + # Draw our sprites self.floor_list.draw() self.player_list.draw() + self.enemy_list.draw() self.wall_list.draw() def on_key_press(self, key, modifiers): diff --git a/triple-dungeon/mobs.py b/triple-dungeon/mobs.py index 97b7ff7..770084c 100644 --- a/triple-dungeon/mobs.py +++ b/triple-dungeon/mobs.py @@ -12,11 +12,14 @@ class Mob(object): """ 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 = arcade.Sprite(self.sprite_path, Config.CHARACTER_SCALING) self.max_health, self.max_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: """ @@ -49,6 +52,9 @@ class Enemy(Mob): def __init__(self, *args, **kwargs) -> None: super(Enemy, self).__init__(*args, **kwargs) + def get_enemy(self): + return self.sprite + def tick(self) -> None: """ A on_update function, the Enemy Mob should scan for the player, decide how to path to it, and From b4fb33f369a6a25fd2f81098a0ac05a2ff6d45f7 Mon Sep 17 00:00:00 2001 From: Cameron Smart Date: Sun, 19 Apr 2020 00:14:21 -0700 Subject: [PATCH 2/2] Added new monster sprites. --- triple-dungeon/main.py | 10 ++++----- .../resources/images/monsters/frog/frog1.png | Bin 0 -> 294 bytes .../resources/images/monsters/frog/frog2.png | Bin 0 -> 303 bytes .../resources/images/monsters/frog/frog3.png | Bin 0 -> 305 bytes .../images/monsters/ghost/ghost1.png | Bin 0 -> 276 bytes .../images/monsters/ghost/ghost2.png | Bin 0 -> 276 bytes .../images/monsters/ghost/ghost3.png | Bin 0 -> 276 bytes .../images/monsters/skeleton/skeleton1.png | Bin 0 -> 321 bytes .../images/monsters/skeleton/skeleton2.png | Bin 0 -> 317 bytes .../images/monsters/skeleton/skeleton3.png | Bin 0 -> 331 bytes .../images/monsters/skeleton/skeleton4.png | Bin 0 -> 317 bytes triple-dungeon/resources/levels/test1.json | 19 ++++++++++++++++++ 12 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 triple-dungeon/resources/images/monsters/frog/frog1.png create mode 100644 triple-dungeon/resources/images/monsters/frog/frog2.png create mode 100644 triple-dungeon/resources/images/monsters/frog/frog3.png create mode 100644 triple-dungeon/resources/images/monsters/ghost/ghost1.png create mode 100644 triple-dungeon/resources/images/monsters/ghost/ghost2.png create mode 100644 triple-dungeon/resources/images/monsters/ghost/ghost3.png create mode 100644 triple-dungeon/resources/images/monsters/skeleton/skeleton1.png create mode 100644 triple-dungeon/resources/images/monsters/skeleton/skeleton2.png create mode 100644 triple-dungeon/resources/images/monsters/skeleton/skeleton3.png create mode 100644 triple-dungeon/resources/images/monsters/skeleton/skeleton4.png create mode 100644 triple-dungeon/resources/levels/test1.json diff --git a/triple-dungeon/main.py b/triple-dungeon/main.py index 2fe1a86..0b65024 100644 --- a/triple-dungeon/main.py +++ b/triple-dungeon/main.py @@ -49,7 +49,7 @@ class Game(arcade.Window): self.enemy_list = arcade.SpriteList() # Set up the player, specifically placing it at these coordinates. - image_source = "resources/images/monsters/skeleton.png" + image_source = "resources/images/monsters/skeleton/skeleton2.png" self.player_sprite = arcade.Sprite(image_source, Config.CHARACTER_SCALING) self.player_sprite.center_x = Config.SCREEN_WIDTH / 2 self.player_sprite.center_y = Config.SCREEN_HEIGHT / 2 @@ -57,11 +57,11 @@ class Game(arcade.Window): self.player_list.append(self.player_sprite) # 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/test1.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()) + self.enemy_list.append(Enemy("resources/images/monsters/ghost/ghost1.png", 200, 200).get_enemy()) + self.enemy_list.append(Enemy("resources/images/monsters/frog/frog1.png", 200, 1000).get_enemy()) # Create the 'physics engine' self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite, self.wall_list) @@ -71,7 +71,7 @@ class Game(arcade.Window): # Clear the screen to the background color arcade.start_render() - + # Draw our sprites self.floor_list.draw() self.player_list.draw() diff --git a/triple-dungeon/resources/images/monsters/frog/frog1.png b/triple-dungeon/resources/images/monsters/frog/frog1.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0440eac7b2e45a607d4f5395aa621cdb41f2f1 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDYhhUcNd2LAh=-f^2tCE&H|6f zVxTHv5N2eUHAey{$X?><>&pIwMVQS(ijx7B-f2*0^UmhR#^@n&9kEChaoqf?}AarR@;3u;=Z~w=LI?rK^G&DOK`m0^= zPq%>cgrkugSR-~mkz3KL$0Mz8l(6H#|D9Sfb6D@j^MHUNPsH3_9;WMmoJ<*>)ht^a zF1hQvhtZ$S*W5nZ8x=gwX=#@g-lbAxk+4}d&Df7w0tl|PZ!i?#o{^x*{jPpXhEo~q duD2kQ7Fdh=ghiOmQssd9ju@cO9#0p?5RLQ6DF+xU#KQj_SN*QK zZLZ+4v?EJ@&fjXL_m{`Vef=Tc#3O0io1XPf+Ws)-|MOK6k91m0!e7d}eb9H}aTH5; zEMxR3-uXmsMXw%@w7yZojsyR9YQ@YEoc$K4Iq8SAtxrN$#0Jhq*$2`Tcs4A^POz#H zJ=eybz#+}d%&cUFdh=ghiOmN^tK^{XIaTeV#6kAsXkC6BY;U@NVQ0Cn)K%X#py85}Sb4q9e0CQ(?2LJ#7 literal 0 HcmV?d00001 diff --git a/triple-dungeon/resources/images/monsters/ghost/ghost1.png b/triple-dungeon/resources/images/monsters/ghost/ghost1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7dd54aeb0dd28fa0096263d6a8134ec0d5a15d GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^d>}Rl8<3oNC%zs?u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv`gEW+%Jf(<8EZ3YU-W`;zRIOpf)rskCZxeN@>MX8A; zsVNHOnI#zt?w-B@DSD~wK=BGs7sn8d^T}^^eVWF|`zQSXuS6n`nvluD6UGx4aJtG0 z&oY+iyn3d|`&j&QyE%J5b}6yV=bV15H(canm+_)jt&RUu5)Lh`aIKd<-1X0FO%59y zo7=H<+WCdIn1W>jBU%rstq_cNN>Ebd3JBsCt_o6e6JE*5;L68vhF9CwQDp58kmEdE L{an^LB{Ts5kd9Tm literal 0 HcmV?d00001 diff --git a/triple-dungeon/resources/images/monsters/ghost/ghost2.png b/triple-dungeon/resources/images/monsters/ghost/ghost2.png new file mode 100644 index 0000000000000000000000000000000000000000..68875980fa9b4719605d973487934b785aaf82f1 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^d>}Rl8<3oNC%zs?u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv`gEW+%Jy6cx+GXV<8W`;zRIOpf)rskCZxeN@>MX8A; zsVNHOnI#zt?w-B@DSD~wK=BGs7sn8d^T}^^eVWF|`zQSXuS6n`nvluD6UGx4aJtG0 z&oY+iyn3d|`&j&QyE%J5b}6yV=bV15H(canm+_)jt&RUu5)Lh`aIKd<-1X0FO%59y zo7=H<+WCdIn1W>jBU%rstq_cNN>Ebd3JBsCt_o6e6JE*5;L68vhF9CwQDp58kmEdE L{an^LB{Ts5ax+zs literal 0 HcmV?d00001 diff --git a/triple-dungeon/resources/images/monsters/ghost/ghost3.png b/triple-dungeon/resources/images/monsters/ghost/ghost3.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b48f1d638905e0f8919cbad50d77c38b500ab8 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^d>}Rl8<3oNC%zs?u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv`gEW+$eJSQGaT?rJD%?ybsan8@pP0cF-av2z$i&7Iy zQd1PlGfOfQ+&z5*QuI>Uf#MaOE{-7@=ab*;`ZSG^_fPr(UWr5=H6fFQCyXa9;B=K0 zo@Ff2dG$<__p$irc60WA>{4Qz&pG{AZ@9?EF5^Y5S{whRBpg~=;aV?!xa*(UnjAJZ zHn(HzwDSvZF$K#6MzkJMTOkQL70(Y)*K0-AbW|YuPgf#7GX9+;SJ8yqk%%_JY5_^G|u-kX@X+FEE@E^aX2T_mpjnsyJ`yqdre>}FpXvPf<5G8j zoSl>!GAmkAWAW)bYc5`Yax_Uc`oaQRBQaSvZRNho6HHH?|4cp*f4DV1{`$k1FF>C$ Nc)I$ztaD0e0szC3f4Tqw literal 0 HcmV?d00001 diff --git a/triple-dungeon/resources/images/monsters/skeleton/skeleton2.png b/triple-dungeon/resources/images/monsters/skeleton/skeleton2.png new file mode 100644 index 0000000000000000000000000000000000000000..deda57600eca1f52383e655de6d436b700bffe72 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMp8<5nmf9C+C*pj^6T^Rm@;DWu&Cj&(|3p^r= z85p>QL70(Y)*K0-AbW|YuPgf#7GX9cvDYjH;y|HOo-U3d8s~c_8FC$R5OBTEcF^ks z57)J(jP-Mu&Q&*Potqm})hgnor9VM!t7dD2O00uHI!8q0+FoI^*&YAVB))z8f99Q* zot5l&sRTpWNzX*LP2ug#xnU@6`KG9ZVbThf&Qnrc=UE@_WLUBK@cgWXN4Hc{&2Ha} z(l=jxzwg_gpji6=E`@Ge-VN3<(SF;1yE1+`vs#k>mq&@vRGWG0%eK5`KhE}^*!Tbg9irL9NA2#kg0`wJwr>mdK II;Vst0MrY2@Bjb+ literal 0 HcmV?d00001 diff --git a/triple-dungeon/resources/images/monsters/skeleton/skeleton3.png b/triple-dungeon/resources/images/monsters/skeleton/skeleton3.png new file mode 100644 index 0000000000000000000000000000000000000000..fd366afb45ac1de788d48c424d9e7851d4aed68e GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMp8<5nmf9C+C*pj^6T^Rm@;DWu&Cj&(|3p^r= z85p>QL70(Y)*K0-AbW|YuPgf#7GXAH3DM;`fk2@fo-U3d8s~c_DRLhQ5NX}t+vxeh z+(#g%Nkd|*d`YtJ9y47Mh+knku)8F+o`4?>X zSHf$M@y+*oad+eMyJr}BmbWi4l)BbAW!dYUKF_pIds?rX=FO43#AN&N$!}}EhKZU@ zoOXHDSDuCxb!%^<#h2!Eonhg=-=T8g<*w~T*Ohx-r#@%?qN=-|;p?Nbr!U;Rukw*8 Yog>O?>e@}(KtD2gy85}Sb4q9e04ni;j{pDw literal 0 HcmV?d00001 diff --git a/triple-dungeon/resources/images/monsters/skeleton/skeleton4.png b/triple-dungeon/resources/images/monsters/skeleton/skeleton4.png new file mode 100644 index 0000000000000000000000000000000000000000..990d9f5235783d8ca4af55adec2a471358c28a61 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^AhrMp8<5nmf9C+C*pj^6T^Rm@;DWu&Cj&(|3p^r= z85p>QL70(Y)*K0-AbW|YuPgf#7GX9MrsXZpZ-7FlJY5_^G|u-X0;^$FOL$TsW$W0mu-2?eyYc8VcX&r zamSiouibp(a%P