2014-05-16 00:07:48 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
import pygame
|
|
|
|
|
|
|
|
|
2014-05-16 04:58:16 +00:00
|
|
|
class Board:
|
2014-05-16 05:18:06 +00:00
|
|
|
def __init__(self, grid_position, grid_dims, grid_border_width, block_dims):
|
|
|
|
self.grid_dims = grid_dims
|
|
|
|
self.grid_border_width = grid_border_width
|
2014-05-16 04:58:16 +00:00
|
|
|
self.block_dims = block_dims
|
2014-05-16 05:18:06 +00:00
|
|
|
|
|
|
|
grid_screen_dims = grid_dims[0]*block_dims[0], grid_dims[1]*block_dims[1]
|
|
|
|
self.grid_rect = pygame.Rect(grid_position, grid_screen_dims)
|
2014-05-16 04:58:16 +00:00
|
|
|
self.grid_color = pygame.Color(0xff, 0xff, 0xff, 0xff)
|
2014-05-16 05:18:06 +00:00
|
|
|
|
|
|
|
self.blocks = [[0]*grid_dims[0] for i in range(grid_dims[1])]
|
|
|
|
print block_dims
|
2014-05-16 04:58:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
def render(self, surface):
|
|
|
|
self.render_frame(surface)
|
2014-05-16 05:18:06 +00:00
|
|
|
self.render_blocks(surface)
|
2014-05-16 04:58:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
def render_frame(self, surface):
|
|
|
|
pygame.draw.rect(surface, self.grid_color, self.grid_rect, 1)
|
|
|
|
|
|
|
|
|
2014-05-16 05:18:06 +00:00
|
|
|
def render_blocks(self, surface):
|
|
|
|
for y in xrange(self.grid_dims[1]):
|
|
|
|
for x in xrange(self.grid_dims[0]):
|
|
|
|
self.render_block(surface, (x, y))
|
|
|
|
|
|
|
|
|
|
|
|
def render_block(self, surface, position):
|
|
|
|
block_rect = self.block_screen_rect(position)
|
|
|
|
pygame.draw.rect(surface, self.grid_color, block_rect, 1)
|
|
|
|
|
|
|
|
|
2014-05-16 04:58:16 +00:00
|
|
|
def advance(self):
|
|
|
|
pass
|
2014-05-16 05:18:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
def block_screen_rect(self, position):
|
|
|
|
top_left = self.grid_rect.x+self.block_dims[0]*position[0], self.grid_rect.y+self.block_dims[1]*position[1]
|
|
|
|
return pygame.Rect(top_left, self.block_dims)
|
2014-05-16 04:58:16 +00:00
|
|
|
|
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
class Engine:
|
2014-05-16 04:58:16 +00:00
|
|
|
def __init__(self):
|
2014-05-16 05:18:06 +00:00
|
|
|
self.board = Board((10, 10), (10, 20), 1, (20, 20))
|
2014-05-16 04:58:16 +00:00
|
|
|
self.surface = None
|
|
|
|
|
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
def create(self, resolution):
|
|
|
|
pygame.init()
|
2014-05-16 04:58:16 +00:00
|
|
|
self.surface = pygame.display.set_mode(resolution, pygame.DOUBLEBUF)
|
2014-05-16 00:07:48 +00:00
|
|
|
|
|
|
|
if pygame.joystick.get_count() > 0:
|
|
|
|
self.joystick = pygame.joystick.Joystick(0)
|
|
|
|
self.joystick.init()
|
|
|
|
else:
|
|
|
|
self.joystick = None
|
|
|
|
|
|
|
|
|
|
|
|
def update(self):
|
2014-05-16 04:58:16 +00:00
|
|
|
self.board.advance()
|
|
|
|
self.board.render(self.surface)
|
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
pygame.display.flip()
|
|
|
|
pygame.time.delay(1)
|
2014-05-16 04:58:16 +00:00
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
event = pygame.event.poll()
|
|
|
|
return self.handle_event(event)
|
|
|
|
|
|
|
|
|
|
|
|
def destroy(self):
|
2014-05-16 04:58:16 +00:00
|
|
|
self.surface = None
|
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
if self.joystick is not None:
|
|
|
|
self.joystick.quit()
|
|
|
|
|
|
|
|
pygame.quit()
|
|
|
|
|
|
|
|
|
|
|
|
def handle_event(self, event):
|
|
|
|
if event.type == pygame.QUIT:
|
|
|
|
return False
|
|
|
|
|
|
|
|
if event.type == pygame.KEYDOWN:
|
2014-05-16 04:43:20 +00:00
|
|
|
if event.key == pygame.K_LEFT:
|
|
|
|
self.move_left()
|
|
|
|
elif event.key == pygame.K_RIGHT:
|
|
|
|
self.move_right()
|
|
|
|
elif event.key == pygame.K_DOWN:
|
|
|
|
self.move_down()
|
|
|
|
elif event.key == pygame.K_UP:
|
|
|
|
self.flip()
|
|
|
|
elif event.key == pygame.K_ESCAPE:
|
|
|
|
return False
|
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
elif event.type == pygame.JOYAXISMOTION:
|
|
|
|
if event.axis == 0:
|
|
|
|
if event.value > 0: self.move_right()
|
2014-05-16 04:43:20 +00:00
|
|
|
elif event.value < 0: self.move_left()
|
2014-05-16 00:07:48 +00:00
|
|
|
elif event.axis == 1:
|
|
|
|
if event.value > 0: self.move_down()
|
2014-05-16 04:43:20 +00:00
|
|
|
elif event.value < 0: self.flip()
|
2014-05-16 00:07:48 +00:00
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
def move_right(self):
|
|
|
|
print 'right'
|
|
|
|
|
|
|
|
|
|
|
|
def move_left(self):
|
|
|
|
print 'left'
|
|
|
|
|
|
|
|
|
|
|
|
def move_down(self):
|
|
|
|
print 'down'
|
|
|
|
|
2014-05-16 04:43:20 +00:00
|
|
|
|
2014-05-16 00:07:48 +00:00
|
|
|
def flip(self):
|
|
|
|
print 'flip'
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
engine = Engine()
|
|
|
|
engine.create((800, 600))
|
|
|
|
while engine.update():
|
|
|
|
pass
|
|
|
|
engine.destroy()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|