From 28d694cbb6aaf5d3a913e50066614ff5591c9827 Mon Sep 17 00:00:00 2001 From: Leah Alpert Date: Sun, 28 Aug 2011 10:29:00 -0700 Subject: Fixed bug with timing, changed level speeds --- tetris.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tetris.py b/tetris.py index 4d3bb8f..518f87f 100644 --- a/tetris.py +++ b/tetris.py @@ -171,7 +171,7 @@ class Player(): if (self.gs.level < NO_OF_LEVELS and self.score >= self.gs.thresholds[self.gs.level]): self.gs.level+=1 - self.gs.delay-=100 + self.gs.delay-=85 # Signal that the shape has 'landed' return False @@ -194,7 +194,7 @@ class GameState(): z_shape, s_shape,i_shape ] self.num_players = 0 self.level = 1 - self.delay = 800 + self.delay = 900 self.thresholds = range(0,100,10) self.state = "waiting" #states: waiting (between games), playing, ending self.winner = None #winning player id -- cgit v1.2.3 From f4c52b4401189fc136b07d7a81a5fd48b394410e Mon Sep 17 00:00:00 2001 From: Leah Alpert Date: Sun, 28 Aug 2011 10:30:48 -0700 Subject: Changed timing --- tetris.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/tetris.py b/tetris.py index 518f87f..273439f 100644 --- a/tetris.py +++ b/tetris.py @@ -18,16 +18,18 @@ from ddrinput import DdrInput from ddrinput import DIRECTIONS import pygame +TIME_LIMIT = 4 * 60 #seconds +LINES_TO_ADVANCE = 5 #num lines needed to advance to next level +LEVEL_SPEEDS = [800,700,600,500,400,300,200,150,100,70] + MAXX = 10 MAXY = 18 -NO_OF_LEVELS = 10 (LEFT, RIGHT, UP, DOWN) = range(4) COLORS = ["orange", "red", "green", "blue", "purple", "yellow", "magenta"] LEVEL_COLORS = ["red", "orange red", "orange", "yellow", "green yellow", "green", "turquoise", "blue", "blue violet", "purple"] -#COLORS = ["gray"] class Board(): """ @@ -168,10 +170,11 @@ class Player(): self.gs.winner = self.id # do we go up a level? - if (self.gs.level < NO_OF_LEVELS and - self.score >= self.gs.thresholds[self.gs.level]): + if (self.gs.level < len(LEVEL_SPEEDS)-1 and + self.score / LINES_TO_ADVANCE >= self.gs.level+1 ): + print "level",self.gs.level self.gs.level+=1 - self.gs.delay-=85 + self.gs.delay = LEVEL_SPEEDS[self.gs.level] # Signal that the shape has 'landed' return False @@ -193,9 +196,8 @@ class GameState(): self.shapes = [square_shape, t_shape,l_shape, reverse_l_shape, z_shape, s_shape,i_shape ] self.num_players = 0 - self.level = 1 - self.delay = 900 - self.thresholds = range(0,100,10) + self.level = 0 #levels go 0-9 + self.delay = LEVEL_SPEEDS[0] self.state = "waiting" #states: waiting (between games), playing, ending self.winner = None #winning player id @@ -242,10 +244,13 @@ class TetrisGame(object): def handle_input(self): game_on = True - TIME_LIMIT = 3*60 - start_time = time() - drop_time = time() + start_time = None + while game_on: + #change this to have start_time be defined elsewhere + if start_time==None and "self.gameState.state==playing": + start_time = time() + drop_time = time() if (self.gameState.state=="ending") or (self.gameState.state=="playing" and time()-start_time > TIME_LIMIT): print "GAME OVER" self.end_game() @@ -382,7 +387,7 @@ class TetrisGame(object): #level level = self.gameState.level - d[(level+offset-1,MAXY)] = LEVEL_COLORS[level-1] + d[(level+offset,MAXY)] = LEVEL_COLORS[level] return d -- cgit v1.2.3 From 789374bd41bfc95f90495f895146980bbfceb7f7 Mon Sep 17 00:00:00 2001 From: Leah Alpert Date: Sun, 28 Aug 2011 20:22:42 -0700 Subject: Timer flashes for last 3 seconds --- tetris.py | 57 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/tetris.py b/tetris.py index 273439f..53d174f 100644 --- a/tetris.py +++ b/tetris.py @@ -24,7 +24,6 @@ LEVEL_SPEEDS = [800,700,600,500,400,300,200,150,100,70] MAXX = 10 MAXY = 18 - (LEFT, RIGHT, UP, DOWN) = range(4) COLORS = ["orange", "red", "green", "blue", "purple", "yellow", "magenta"] @@ -179,10 +178,6 @@ class Player(): # Signal that the shape has 'landed' return False return True - - def move_my_shape( self ): - if self.shape: - self.handle_move( DOWN ) def get_next_shape( self ): #Randomly select which tetrominoe will be used next. @@ -221,6 +216,7 @@ class TetrisGame(object): self.gameState = GameState(self.gui) self.board_animation(0,"up_arrow") self.board_animation(1,"up_arrow") + self.start_time = None self.update_gui() self.handle_input() #this calls all other functions, such as add_player, start_game @@ -240,34 +236,33 @@ class TetrisGame(object): self.boards[1].clear() self.gameState.state = "playing" self.update_gui() + self.start_time = time() + self.drop_time = time() self.gravity() def handle_input(self): - game_on = True - start_time = None + game_on = True + t = 0 while game_on: - #change this to have start_time be defined elsewhere - if start_time==None and "self.gameState.state==playing": - start_time = time() - drop_time = time() - if (self.gameState.state=="ending") or (self.gameState.state=="playing" and time()-start_time > TIME_LIMIT): + t+=1 + + if (self.gameState.state=="ending") or (self.gameState.state=="playing" and time()-self.start_time > TIME_LIMIT): print "GAME OVER" self.end_game() game_on = False return - if self.gameState.state=="playing" and time()-drop_time > self.gameState.delay/1000.0: + if self.gameState.state=="playing" and time()-self.drop_time > self.gameState.delay/1000.0: self.gravity() - drop_time = time() + self.drop_time = time() if self.gameState.state != "ending": self.update_gui() ev = self.input.poll() if ev: - #print "EVENT",ev player,direction = ev #print "Player",player,direction - if direction == "DIE": + if direction == "DIE": #Exit instruction game_on = False pygame.quit() sys.exit() @@ -285,14 +280,19 @@ class TetrisGame(object): elif direction==DOWN: if self.players[player]!=None: self.start_game() - if self.gameState.state != "ending": - self.update_gui() + + + + elif t%10000==0: + t=0 + self.update_gui() + def gravity(self): for p in self.players: if p: - p.move_my_shape() + p.handle_move(DOWN) def update_gui(self): self.gui.render_game(self.to_dict()) @@ -315,11 +315,11 @@ class TetrisGame(object): winner_id = 1 self.animate_ending(winner_id) - def board_animation(self, board_id, design): + def board_animation(self, board_id, design, color="green"): b = self.boards[board_id] d = self.create_shapes(design) for coord in d: - b.landed[coord]="green" + b.landed[coord]=color def animate_ending(self,winner_board): print "game over, display animation" @@ -327,7 +327,7 @@ class TetrisGame(object): self.board_animation(0,"outline") self.board_animation(1,"outline") else: - self.board_animation(winner_board,"outline") + self.board_animation(winner_board,"outline","yellow") self.update_gui() for i in range(250): print i, @@ -368,6 +368,7 @@ class TetrisGame(object): if self.players[n]!=None: p = self.players[n] + #shapes if p.shape: blocks = p.shape.blocks @@ -382,12 +383,20 @@ class TetrisGame(object): coord = (MAXX-1-i + offset, MAXY+1) if bit: d[coord] = "yellow" - else: - d[coord] = "gray" #level level = self.gameState.level d[(level+offset,MAXY)] = LEVEL_COLORS[level] + + #time + if self.start_time!=None: + time_left = (self.start_time + TIME_LIMIT - time()) #seconds left + for i in range(TIME_LIMIT/60): #0,1,2,3 (minutes) + if time_left/60 >= i: + seconds = time_left - 60*i # is in .5-1 secs, etc + if not (.5