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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
""" Module that defines all types of pieces """
import pygame
from .color import Color
square_template = pygame.Surface((48, 48))
class Piece:
""" A piece class that provides default methods for performing rotations """
def __init__(self):
""" Initialize a piece """
self.square = square_template.copy()
def rotate_clockwise(self):
""" Rotate the piece clockwise """
self.elements = list(zip(*self.elements[::-1]))
def rotate_counter_clockwise(self):
""" Rotate the piece counter-clockwise """
self.rotate_clockwise()
self.rotate_clockwise()
self.rotate_clockwise()
class ZPiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.blue.value)
self.elements = (self.square, self.square, None), (None, self.square, self.square), (None, None, None)
self.vertical = False
def rotate_clockwise(self):
self.rotate()
def rotate_counter_clockwise(self):
self.rotate()
def rotate(self):
if self.vertical:
self.elements = (self.square, self.square, None), (None, self.square, self.square), (None, None, None)
else:
self.elements = (None, None, self.square), (None, self.square, self.square), (None, self.square, None)
self.vertical = not self.vertical
class SPiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.green.value)
self.elements = (None, None, None), (None, self.square, self.square), (self.square, self.square, None)
self.vertical = False
def rotate_clockwise(self):
self.rotate()
def rotate_counter_clockwise(self):
self.rotate()
def rotate(self):
if self.vertical:
self.elements = (None, self.square, self.square), (self.square, self.square, None), (None, None, None)
else:
self.elements = (None, self.square, None), (None, self.square, self.square), (None, None, self.square)
self.vertical = not self.vertical
class SquarePiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.brown.value)
self.elements = ((self.square, self.square), (self.square, self.square))
class IPiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.red.value)
self.elements = (None, None, None, None), (None, None, None, None), (self.square, self.square, self.square, self.square), (None, None, None, None)
self.vertical = False
def rotate_clockwise(self):
self.rotate()
def rotate_counter_clockwise(self):
self.rotate()
def rotate(self):
if self.vertical:
self.elements = (None, None, None, None), (None, None, None, None), (self.square, self.square, self.square, self.square), (None, None, None, None)
else:
self.elements = (None, None, self.square, None), (None, None, self.square, None), (None, None, self.square, None), (None, None, self.square, None)
self.vertical = not self.vertical
class LPiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.cyan.value)
self.elements = (None, None, None), (self.square, self.square, self.square), (None, None, self.square)
class JPiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.purple.value)
self.elements = (None, None, None), (self.square, self.square, self.square), (self.square, None, None)
class TPiece(Piece):
def __init__(self):
super().__init__()
self.square.fill(Color.yellow.value)
self.elements = (None, None, None), (self.square, self.square, self.square), (None, self.square, None)
|