-
Notifications
You must be signed in to change notification settings - Fork 8
/
people.py
77 lines (69 loc) · 2.65 KB
/
people.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'''This modules defines behaviour of people both enemies and mario'''
from base import MARIO_CHAR, BAD_CHAR, Point
class People:
'''All people from Mario World'''
def __init__(self, point, speed, shape, dimensions, board):
self.point = point
self.speed = speed
self.shape = shape
self.dimensions = dimensions
self.board = board
self.pre = False
self.pre_point = False
self.direction = 'R'
def update(self):
'''Logic of update clearing of board and restoring'''
if self.pre:
self.board.update(self.pre_point, self.pre, self.dimensions)
self.pre = self.board.current(self.point, self.shape, self.dimensions)
self.pre_point = Point(self.point.x, self.point.y)
self.board.update(self.point, self.shape, self.dimensions)
def move_left(self, unit):
'''Logic of moving left'''
if self.point.y < unit:
return False
for j in range(self.dimensions.length):
ch = self.board.matrix[self.point.x + j][self.point.y - unit]
if ch == MARIO_CHAR:
self.board.mario.die()
for i in BAD_CHAR:
if i == ch:
return False
self.point.y -= unit
self.update()
return True
def move_right(self, unit):
'''Logic of moving right'''
if self.point.y + self.dimensions.breadth + unit > self.board.breadth:
return False
for j in range(self.dimensions.length):
ch = self.board.matrix[self.point.x +
j][self.point.y + self.dimensions.breadth + unit - 1]
if ch == MARIO_CHAR:
if self.__class__.__name__ == 'BossEnemy' and j == 0:
pass
else:
self.board.mario.die()
for i in BAD_CHAR:
if i == ch:
return False
self.point.y += unit
self.update()
return True
def die(self):
'''Defines how to die'''
self.board.status.add_kill()
self.board.update(self.pre_point, self.pre, self.dimensions)
self.board.all_enemies.remove(self)
if self.__class__.__name__ == 'SlaveEnemy':
self.board.status.add_score(100000)
else:
self.board.status.add_score(900000)
def self_move(self, unit):
'''Defines how does board makes them move automatically'''
if self.direction == 'R':
if not self.move_right(unit):
self.direction = 'L'
else:
if not self.move_left(unit):
self.direction = 'R'