aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Leah Alpert <lalpert@mit.edu>2011-08-29 17:46:45 -0700
committerGravatar Leah Alpert <lalpert@mit.edu>2011-08-29 17:46:45 -0700
commit005a8fb30e10dc2b31e31ada4c8fd47114524e4e (patch)
tree7561ebf1cfa3b355a7cb79442bf7de7e4b98d4e5
parent73c4c0006aa5ec2453691ca4ed6414025fb7edab (diff)
Removed repetitive drawing bug in renderer
-rw-r--r--renderer.py57
1 files 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)