From 005a8fb30e10dc2b31e31ada4c8fd47114524e4e Mon Sep 17 00:00:00 2001 From: Leah Alpert Date: Mon, 29 Aug 2011 17:46:45 -0700 Subject: Removed repetitive drawing bug in renderer --- renderer.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/renderer.py b/renderer.py index bd141c8..0d79dd3 100644 --- a/renderer.py +++ b/renderer.py @@ -17,7 +17,7 @@ class Renderer(object): def color_deref(self, color_str): return Color(color_str) -class PygameRenderer(Renderer): +class PygameGoodRenderer(Renderer): """ Based heavily off of PygameRenderer in SmootLight. Renders Tetris to a @@ -57,17 +57,52 @@ 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.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, self.SCALE)) + self.screen.blit(self.background, (0,0)) + pygame.display.flip() + +class PygameRenderer(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] - 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])) + + x_mid = (x0+x1)/2 + self.SCALE + pygame.draw.line(self.background, self.color_deref("white"), (x_mid,y1 - 16),(x_mid,y1 - 31)) + pygame.draw.line(self.background, self.color_deref("white"), (x_mid+b2,y1 - 16),(x_mid+b2,y1 - 31)) + + for (x,y) in game_board: + disp_x = x + if x >= 10: + disp_x+=3 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) -- cgit v1.2.3 From fa0730910a13a392659e4a1cb050def524fc1b14 Mon Sep 17 00:00:00 2001 From: Leah Alpert Date: Mon, 29 Aug 2011 17:59:30 -0700 Subject: Added pygame good renderer with squares instead of circles --- renderer.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/renderer.py b/renderer.py index 0d79dd3..c057f3d 100644 --- a/renderer.py +++ b/renderer.py @@ -38,27 +38,27 @@ class PygameGoodRenderer(Renderer): def render_game(self, game_board): self.background.fill(Color(0,0,0)) - 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 + 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 - 16), (x1,y1 - 16)), ((x0,y1 - 31), (x1,y1 - 31))] + ((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 - 16),(x_mid,y1 - 31)) - pygame.draw.line(self.background, self.color_deref("white"), (x_mid+b2,y1 - 16),(x_mid+b2,y1 - 31)) + 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, self.SCALE)) + (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() -- cgit v1.2.3 From 5050c33c2df4d126b4dfa17b09379b6b5922e657 Mon Sep 17 00:00:00 2001 From: Leah Alpert Date: Mon, 29 Aug 2011 18:00:00 -0700 Subject: use goodrenderer --- tetris.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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() -- cgit v1.2.3