diff options
author | rcoh <rcoh@mit.edu> | 2011-08-29 21:23:11 -0400 |
---|---|---|
committer | rcoh <rcoh@mit.edu> | 2011-08-29 21:23:11 -0400 |
commit | 1b787c74a082e10d17849c847644a8674b309f78 (patch) | |
tree | 438879358999667505a24306f91f49928f8d580d | |
parent | 2c66af07ac43ffdea84e847a2e6ff7ac164d62e5 (diff) | |
parent | 5050c33c2df4d126b4dfa17b09379b6b5922e657 (diff) |
Merge branch 'master' of github.com:rcoh/Burton-Conner-Tetris-Battle
-rw-r--r-- | renderer.py | 57 | ||||
-rw-r--r-- | tetris.py | 3 |
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) @@ -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() |