aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar rcoh <rcoh@mit.edu>2011-08-29 21:23:11 -0400
committerGravatar rcoh <rcoh@mit.edu>2011-08-29 21:23:11 -0400
commit1b787c74a082e10d17849c847644a8674b309f78 (patch)
tree438879358999667505a24306f91f49928f8d580d
parent2c66af07ac43ffdea84e847a2e6ff7ac164d62e5 (diff)
parent5050c33c2df4d126b4dfa17b09379b6b5922e657 (diff)
Merge branch 'master' of github.com:rcoh/Burton-Conner-Tetris-Battle
-rw-r--r--renderer.py57
-rw-r--r--tetris.py3
2 files changed, 48 insertions, 12 deletions
diff --git a/renderer.py b/renderer.py
index ffe8628..7de33ac 100644
--- a/renderer.py
+++ b/renderer.py
@@ -17,6 +17,52 @@ class Renderer(object):
def color_deref(self, color_str):
return Color(color_str)
+class PygameGoodRenderer(Renderer):
+
+ """
+ Based heavily off of PygameRenderer in SmootLight. Renders Tetris to a
+ pygame Window.
+ """
+
+ DISPLAY_SIZE = (1000,1000)
+ OFFSET = (100, 100)
+ SCALE = 15
+ RADIUS = 6
+
+ def __init__(self):
+ pygame.init()
+ self.screen = pygame.display.set_mode(self.DISPLAY_SIZE)
+ self.background = pygame.Surface(self.screen.get_size())
+ self.background = self.background.convert()
+ self.background.fill(Color(0,0,0))
+
+ def render_game(self, game_board):
+ self.background.fill(Color(0,0,0))
+ x0 = self.OFFSET[0] - 1
+ y0 = self.OFFSET[1] - 1
+ x1 = self.OFFSET[0] + 10*self.SCALE
+ y1 = self.OFFSET[1] + 20*self.SCALE - 1
+ b2 = self.SCALE * 13 #x offset for second board
+ line_endpoints = [((x0,y0), (x0,y1)), ((x0,y1), (x1,y1)), ((x1,y1), (x1,y0)), ((x1,y0), (x0,y0)),
+ ((x0,y1 - 15), (x1,y1 - 15)), ((x0,y1 - 30), (x1,y1 - 30))]
+ for p1,p2 in line_endpoints:
+ pygame.draw.line(self.background, self.color_deref("white"), p1, p2)
+ pygame.draw.line(self.background, self.color_deref("white"), (p1[0]+b2,p1[1]),(p2[0]+b2,p2[1]))
+
+ x_mid = (x0+x1)/2 + self.SCALE
+ pygame.draw.line(self.background, self.color_deref("white"), (x_mid,y1 - 15),(x_mid,y1 - 30))
+ pygame.draw.line(self.background, self.color_deref("white"), (x_mid+b2,y1 - 15),(x_mid+b2,y1 - 30))
+
+ for (x,y) in game_board:
+ disp_x = x
+ if x >= 10:
+ disp_x+=3
+ pygame.draw.rect(self.background, self.color_deref(game_board[(x,y)]),
+ (self.OFFSET[0] + disp_x*self.SCALE, self.OFFSET[1] + y*self.SCALE, self.SCALE-1, self.SCALE-1))
+
+ self.screen.blit(self.background, (0,0))
+ pygame.display.flip()
+
class PygameRenderer(Renderer):
"""
@@ -57,17 +103,6 @@ class PygameRenderer(Renderer):
disp_x = x
if x >= 10:
disp_x+=3
- x0 = self.OFFSET[0] - self.SCALE/2 - 3
- y0 = self.OFFSET[1] - 10
- x1 = self.OFFSET[0]+8 + 9*self.SCALE
- y1 = self.OFFSET[1]+8 + 19*self.SCALE
- b2 = self.SCALE * 13 #x offset for second board
- line_endpoints = [((x0,y0), (x0,y1)), ((x0,y1), (x1,y1)), ((x1,y1), (x1,y0)), ((x1,y0), (x0,y0)),
- ((x0,y1 - 16), (x1,y1 - 16)), ((x0,y1 - 31), (x1,y1 - 31))]
- for p1,p2 in line_endpoints:
- pygame.draw.line(self.background, self.color_deref("white"), p1, p2)
- pygame.draw.line(self.background, self.color_deref("white"), (p1[0]+b2,p1[1]),(p2[0]+b2,p2[1]))
-
pygame.draw.circle(self.background, self.color_deref(game_board[(x,y)]),
(self.OFFSET[0] + disp_x*self.SCALE, self.OFFSET[1] + y*self.SCALE), self.RADIUS)
diff --git a/tetris.py b/tetris.py
index 1d58991..1d90d8d 100644
--- a/tetris.py
+++ b/tetris.py
@@ -12,6 +12,7 @@ Controls:
from time import sleep, time
import random
import sys
+from renderer import PygameGoodRenderer
from renderer import PygameRenderer
from renderer import LedRenderer
from tetris_shape import *
@@ -202,7 +203,7 @@ class TetrisGame(object):
#one-time initialization for gui etc
def __init__(self):
print "initialize tetris"
- self.gui = [PygameRenderer(), LedRenderer()]
+ self.gui = [PygameGoodRenderer(), LedRenderer()]
self.input = DdrInput()
while True:
self.init_game()