-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGrid_Objects.py
56 lines (46 loc) · 1.82 KB
/
Grid_Objects.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
from Particle import Particle
class Sand(Particle):
def is_move_ok(self, x, y):
if x >= self.width or y >= self.height or x < 0 or y < 0:
return False
if x == self.x and y == self.y + 1 and self.get(x, y) == None:
return True
elif x == self.x + 1 and y == self.y + 1 and self.get(x, y) == None and self.get(x, y-1) == None:
return True
elif x == self.x - 1 and y == self.y + 1 and self.get(x, y) == None and self.get(x, y-1) == None:
return True
else:
return False
def physics(self):
if self.is_move_ok(self.x, self.y+1):
return((self.x, self.y+1))
elif self.is_move_ok(self.x-1, self.y+1):
return((self.x-1, self.y+1))
elif self.is_move_ok(self.x+1, self.y+1):
return((self.x+1, self.y+1))
else:
return None
class Rock(Particle):
def physics(self):
return None
class Bubble(Particle):
def is_move_ok(self, x, y):
if x >= self.width or y >= self.height or x < 0 or y < 0:
return False
if x == self.x and y == self.y - 1 and self.get(x, y) == None:
return True
elif x == self.x + 1 and y == self.y - 1 and self.get(x, y) == None and self.get(x, y+1) == None:
return True
elif x == self.x - 1 and y == self.y - 1 and self.get(x, y) == None and self.get(x, y+1) == None:
return True
else:
return False
def physics(self):
if self.is_move_ok(self.x, self.y-1):
return((self.x, self.y-1))
elif self.is_move_ok(self.x+1, self.y-1):
return((self.x+1, self.y-1))
elif self.is_move_ok(self.x-1, self.y-1):
return((self.x-1, self.y-1))
else:
return None