Skip to content

Commit a2824ae

Browse files
author
Michael Fiano
committed
Changes to party character adding; Changes to monster classes.
1 parent b2a9b9c commit a2824ae

File tree

6 files changed

+42
-49
lines changed

6 files changed

+42
-49
lines changed

lib/battle.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Battle(object):
99
def __init__(self, screen):
1010
self.screen = screen
1111
self.map = screen.map
12-
self.region = screen.hero.current_region
12+
self.region = screen.chars.party['hero'].current_region
1313
self.map_monsters = self.map.region_monsters[self.region]
1414
self.battle_monsters = []
1515
self.create_monsters()

lib/characters.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,6 @@ def __init__(self, name, hp, hp_max, mp, mp_max, attack, defense,
3434
'Items': [] }
3535

3636

37-
class BaseMonster(MonsterSprite, BaseCharacter):
38-
"""The base class for all other monsters."""
39-
40-
def __init__(self, screen, name="Monster"):
41-
MonsterSprite.__init__(self, screen)
42-
BaseCharacter.__init__(self, name, hp=1, hp_max=1, mp=0, mp_max=0,
43-
attack=1, defense=1)
44-
self.max_amount = 1
45-
self.frequency = 0
46-
self.size = 2
47-
self.movement = 1
48-
self.num_attacks = 1
49-
self.damage = 1
50-
self.morale = 5
51-
52-
5337
class CharHero(PlayerSprite, BaseCharacter):
5438
"""The hero of the game."""
5539

lib/monsters.py

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
1-
from characters import BaseMonster
1+
from characters import BaseCharacter
2+
from sprite import MonsterSprite
3+
4+
class BaseMonster(MonsterSprite, BaseCharacter):
5+
"""The base class for all other monsters."""
6+
7+
def __init__(self, screen, name):
8+
MonsterSprite.__init__(self, screen, name)
9+
BaseCharacter.__init__(self, name, hp=1, hp_max=1, mp=0, mp_max=0,
10+
attack=1, defense=1)
11+
self.max_amount = 1
12+
self.frequency = 0
13+
self.size = 2
14+
self.movement = 1
15+
self.num_attacks = 1
16+
self.damage = 1
17+
self.morale = 5
18+
219

320
class Slug(BaseMonster):
421
"""A giant slug."""
522

6-
def __init__(self, screen):
7-
BaseMonster.__init__(self, screen)
8-
self.name = "Slug"
23+
def __init__(self, screen, name="Slug"):
24+
BaseMonster.__init__(self, screen, name)
925
self.hp = 2
1026
self.hp_max = 2
1127
self.gold = 2
@@ -15,9 +31,8 @@ def __init__(self, screen):
1531
class PoisonSlug(BaseMonster):
1632
"""A giant slug that has a poisonous attack."""
1733

18-
def __init__(self, screen):
19-
BaseMonster.__init__(self, screen)
20-
self.name = "PoisonSlug"
34+
def __init__(self, screen, name="PoisonSlug"):
35+
BaseMonster.__init__(self, screen, name)
2136
self.hp = 2
2237
self.hp_max = 2
2338
self.exp = 10
@@ -28,9 +43,8 @@ def __init__(self, screen):
2843
class MagiSlug(BaseMonster):
2944
"""A giant slug that can cast spells."""
3045

31-
def __init__(self, screen):
32-
BaseMonster.__init__(self, screen)
33-
self.name = "MagiSlug"
46+
def __init__(self, screen, name="MagiSlug"):
47+
BaseMonster.__init__(self, screen, name)
3448
self.hp = 2
3549
self.hp_max = 2
3650
self.exp = 20
@@ -41,9 +55,8 @@ def __init__(self, screen):
4155
class Hawk(BaseMonster):
4256
"""A flying creature."""
4357

44-
def __init__(self, screen):
45-
BaseMonster.__init__(self, screen)
46-
self.name = "Hawk"
58+
def __init__(self, screen, name="Hawk"):
59+
BaseMonster.__init__(self, screen, name)
4760
self.hp = 2
4861
self.hp_max = 2
4962
self.exp = 20

lib/screens.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from data import *
44
from gui import *
55
from map import Map
6-
from characters import CharHero, CharTest
6+
from manager import CharacterManager
77
from battle import Battle
88

99
class Screen(object):
@@ -78,18 +78,16 @@ def __init__(self, map_name):
7878
self.camera = pygame.Rect((0,0), CAMERA_SIZE)
7979
self.map = Map(map_name)
8080
self.dialog_text = "Sample dialog text."
81-
self.party = {
82-
'hero': CharHero(self),
83-
'test': CharTest(self) }
84-
self.map.scroll(self.camera, self.party['hero'])
81+
self.chars = CharacterManager(self)
82+
self.map.scroll(self.camera, self.chars.party['hero'])
8583
self.create_sprites()
8684
self.add_all_sprites()
8785

8886
def create_sprites(self):
8987
"""Create all sprites and sprite groups."""
9088

9189
self.party_sprites = pygame.sprite.Group([
92-
self.party['hero'] ])
90+
self.chars.party['hero'] ])
9391
self.char_sprites = pygame.sprite.Group([
9492
self.party_sprites ])
9593
self.gui_stats = StatsWindow(self.party_sprites)
@@ -105,16 +103,11 @@ def add_all_sprites(self):
105103
for sprite in self.all_sprites:
106104
self.layers.add(sprite)
107105

108-
def add_to_party(self):
106+
def add_to_party(self, chara):
109107
"""Called during gameplay to add a new party character to the game."""
110108

111-
exists = False
112-
for char in self.party_sprites:
113-
if char.name == "test":
114-
exists = True
115-
116-
if not exists:
117-
self.party_sprites.add(self.party['test'])
109+
if not self.chars.party[chara] in self.party_sprites:
110+
self.party_sprites.add(self.chars.party['test'])
118111
self.char_sprites = pygame.sprite.Group([
119112
self.party_sprites ])
120113
self.add_all_sprites()
@@ -133,7 +126,7 @@ def destroy(self):
133126
sprite.kill()
134127

135128
self.map = None
136-
self.party = None
129+
self.chars = None
137130

138131
class BattleScreen(Screen, Battle):
139132
"""The battle screen is where a battle takes place."""

lib/sprite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ def check_encounter(self):
240240

241241
class MonsterSprite(CharacterSprite):
242242

243-
def __init__(self, screen):
243+
def __init__(self, screen, char):
244244
start_location = [
245245
(screen.map.start_tile[0] - 1) * screen.map.tile_size[0],
246246
(screen.map.start_tile[1] + 12) * screen.map.tile_size[1] ]

lib/states.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def __init__(self, map_name):
7474
BaseState.__init__(self)
7575
self.map_name = map_name
7676
self.screen = WorldScreen(self.map_name)
77-
self.player = self.screen.party['hero']
77+
self.player = self.screen.chars.party['hero']
7878

7979
def check_events(self):
8080
"""Check for user input on the world screen."""
@@ -86,8 +86,11 @@ def check_events(self):
8686
if event.key == GAME_QUIT: self._exit()
8787
elif event.key == K_d:
8888
pygame.time.set_timer(DIALOG_EVENT, 100)
89-
elif event.key == K_e:
90-
self.screen.add_to_party()
89+
90+
# An example of adding the test party character to the party.
91+
elif event.key == K_a:
92+
self.screen.add_to_party("test")
93+
9194
elif event.key in (
9295
HERO_MOVE_DOWN,
9396
HERO_MOVE_UP,

0 commit comments

Comments
 (0)