aboutsummaryrefslogtreecommitdiff
path: root/originaltetris/tetrisGUI.py
blob: 808598067483ff046b62c8e59db3b9b6a7ce118c (plain)
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
"""
This is the class you run to run tetris.
Handles input and output
"""

from Tkinter import *

#GUI
class GUI( Frame ):
    def __init__(self, parent, scale=20, max_x=10, max_y=20, offset=3):
        print "initialize gui"
        """
       Init and config the tetris computer display
        """
        Frame.__init__(self, parent) 
        self.parent = parent
        self.scale = scale
        self.max_x = max_x
        self.max_y = max_y
        self.offset = offset
        #height = rows + one blank + score row
        #width = left board + 4 blank + right board
        self.canvas = Canvas(parent,
                             height=((max_y+2) * scale)+offset,
                             width= 2*((max_x+2) * scale)+offset)
        #size of one board plus buffer
        self.boardsize = ((max_x+4) * scale)+offset
        self.canvas.pack()
        
        
    def add_block(self, (x, y), color):
        """
        Draw a block on the canvas
        """
        shrink = 4
        rx = (x * self.scale) + self.offset
        ry = (y * self.scale) + self.offset 
        #self.canvas.create_oval(rx+shrink, ry+shrink, rx+self.scale-shrink,
        #ry+self.scale-shrink, width=0, fill=color)
        self.canvas.create_rectangle(
            rx, ry, rx+self.scale, ry+self.scale, fill=color
        )
    """
    def draw_board(self, color_dict):
        self.canvas.delete(ALL)
        #ARRAY or DICT...
        for b in color_dict:
            self.add_block(b)
    """           
    def draw_board(self, players):
        self.canvas.delete(ALL)
        x_width = self.max_x*self.scale+3
        y_width = self.max_y*self.scale+3
        gap = 4*self.scale
        self.canvas.create_rectangle(3,2,x_width, y_width)
        self.canvas.create_rectangle(x_width+gap,2,2*x_width+gap-3, y_width)
        offset = 0
        for p in players:
            landed = p.board.landed
            for b in landed:
                self.add_block((b[0]+offset, b[1]), landed[b])
            for b in p.shape.blocks:
                self.add_block((b.x+offset, b.y), b.color)
            offset += (self.max_x + 4)
       
        self.display_score(players[0].score,0)
        self.display_score(players[1].score,1)

    def display_score(self, score, player_num):
        offset = player_num * (self.max_x + 4)
        for i in range(10):
            bit = score%2
            score = score>>1
            coord = (self.max_x-1-i + offset, self.max_y+1)
            if bit:
                self.add_block(coord, "yellow")
            else:
                self.add_block(coord, "gray")
              
"""   
def update_display(player1,player2)
    nah = process(meh)
    #debug mode:
    display_image(nah)
    #real mode:
    #update_lights(nah)
    

#waiting
#press
start = false
while (!start)
if (get_press(p0s)and p0_is_in) or (p1s and p1_is_in):
    start = true
if get_press(p0in):
    game.add_player(0)
if p1in:
    game.add_player(1)

animate countdown

#assume 1p
handle controls...
p0.left()
p0.right()
etc

get state...
if p0.update()...
    update_display(p0.board, p0.score)
    
if p0.died:
    end

animate end_seq(score)

goto waiting


"""