[PATCH] adding kuku.py, i think.

Christopher Schmidt (none) crschmidt at bia.
Sun Aug 19 12:18:19 EDT 2007


---
 kuku.py |  160 ++++++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 86 insertions(+), 74 deletions(-)

diff --git a/kuku.py b/kuku.py
index 36996a3..65216aa 100644
--- a/kuku.py
+++ b/kuku.py
@@ -624,32 +624,36 @@ def main():
     y_direction = 0
     
     time = 0
+    changed = {'lives': True, 'grid': True, 'time': True, 'actor': True, 'score': True}
     try:
         while True:
-            delta = clock.tick(25)
+            delta = clock.tick(50)
             time += delta
             if time > 1000:
                 time = 0
                 Img.correct,screen,font
                 time_clock.add(-1)
-                if time_clock.number == 0:
+                if time_clock.get_ticks() == 0:
                     num_players.kill()
                     qa,num_players,score,time_clock = reset_board(screen,gridsize,
                                                        font,
                                                        num_players=num_players,
                                                        score=score)
-                    state.update(lives=num_players.number,
-                                 score=score.number,
-                                 time =time_clock.number)
+                    state.update(lives=num_players.get_lives(),
+                                 score=score.get_score(),
+                                 time =time_clock.get_ticks())
                     high_score.set(state.high_score)
+                    changed['score'] = True
+                    changed['lives'] = True
+                    changed['time'] = True
+                    changed['grid'] = True
+                    changed['actor'] = True
              
             for evt in pygame.event.get():
-                
-                # print 'MAINLOOP TYPE:',evt.key
-                
                 if evt.type == pygame.QUIT:
                     raise StopGame
                 elif evt.type == pygame.KEYDOWN:
+                    changed['actor'] = True
                     if evt.key == pygame.K_ESCAPE:
                         raise StopGame
                     # elif evt.key == pygame.K_SPACE:
@@ -666,6 +670,7 @@ def main():
                         animate_dirtyrects.append(player.draw(screen))
                         pygame.display.update(animate_dirtyrects)
                         pygame.time.wait(200)
+                        changed['score'] = True
                         
                         #try an answer
                         if (grid.get_tile(x,y).get_answer() == qa.get_correct_answer()):
@@ -686,12 +691,11 @@ def main():
                                                                num_players=num_players,
                                                                score=score,
                                                                time_clock=time_clock)
-                            state.update(lives=num_players.number,
-                                         score=score.number,
-                                         time =time_clock.number)
+                            changed['grid'] = True
+                            state.update(lives=num_players.get_lives(),
+                                         score=score.get_score(),
+                                         time =time_clock.get_ticks())
                             high_score.set(state.high_score)
-                                         
-                            
                         else:
                             peck_bad.play()
                             num_players.kill()
@@ -699,11 +703,10 @@ def main():
                             time = 0
                             
                             #probably right here
-                            state.update(lives=num_players.number,
-                                         time =time_clock.number)
+                            state.update(lives=num_players.get_lives(),
+                                         time =time_clock.get_ticks())
                             high_score.set(state.high_score)
-                                         
-                            
+                            changed['lives'] = True
                             
                             if actor_facing == 1:
                                 player.set_image(Img.stunned_right)
@@ -725,75 +728,84 @@ def main():
                     elif evt.key == pygame.K_UP or evt.key == pygame.K_KP9:
                         bock.play()
                         y_direction = -1
-            
-            if num_players.number <= 0:
-                #reset the question
-                # qa,num_players = reset_board(screen,gridsize,font)
-                pygame.mixer.music.fadeout(2000)
-                kuku_lose.play()
-                qa,num_players,score,time_clock = game_over(screen,gridsize,font)
-                state.update(lives=num_players.number,
-                             score=score.number,
-                             time =time_clock.number)
-                high_score.set(state.high_score)
+            if changed['lives']: 
+                if num_players.get_lives() <= 0:
+                    #reset the question
+                    # qa,num_players = reset_board(screen,gridsize,font)
+                    pygame.mixer.music.fadeout(2000)
+                    kuku_lose.play()
+                    qa,num_players,score,time_clock = game_over(screen,gridsize,font)
+                    state.update(lives=num_players.get_lives(),
+                                 score=score.get_score(),
+                                 time =time_clock.get_ticks())
+                    high_score.set(state.high_score)
+                    
+            if changed['score']:    
+                if state.won:
+                    pygame.mixer.music.fadeout(2000)
+                    kuku_win.play()
+                    pygame.mixer.music
+                    qa,num_players,score,time_clock = game_win(screen,gridsize,font,state)
+                    state.update(lives=num_players.get_lives(),
+                                 score=score.get_score(),
+                                 time =time_clock.get_ticks())
+                    state.won = 0             
+                    high_score.set(state.high_score)
+                    
+            if changed['actor'] or changed['grid']:    
+                # determine which direction the actor is facing
+                if x_direction in [-1,1]:
+                    actor_facing = x_direction
+                            
+                for actor in [player]:
+                    grid_pos = actor.grid_position
+                    dirtyrects.extend(grid.get_tile(grid_pos[0],grid_pos[1]).draw(screen))                      
+                    dirtyrects.append(actor.erase(screen,
+                                              grid.get_tile(grid_pos[0],grid_pos[1]).get_background()))
+                    
+                    actor.update()
                 
+                # old_position = player.grid_position 
+                player.move(x_direction,y_direction)
+                x_direction = 0
+                y_direction = 0
                 
-            
-            if state.won:
-                pygame.mixer.music.fadeout(2000)
-                kuku_win.play()
-                pygame.mixer.music
-                qa,num_players,score,time_clock = game_win(screen,gridsize,font,state)
-                state.update(lives=num_players.number,
-                             score=score.number,
-                             time =time_clock.number)
-                state.won = 0             
-                high_score.set(state.high_score)
+                #questions and answers
+                dirtyrects.extend(qa.display_question(screen,font))
+                qa.set_answers(screen,grid,font)
                 
+                for actor in [player]:
+                    dirtyrects.append(actor.draw(screen))
             
-            # determine which direction the actor is facing
-            if x_direction in [-1,1]:
-                actor_facing = x_direction
-                        
-            for actor in [player]:
-                grid_pos = actor.grid_position
-                # pygame.display.update(actor.erase(screen,                                                                            
-                #                               grid.get_tile(grid_pos[0],grid_pos[1]).get_background()))    
-                # pygame.display.update(grid.get_tile(grid_pos[0],grid_pos[1]).draw(screen))                      
-                dirtyrects.extend(grid.get_tile(grid_pos[0],grid_pos[1]).draw(screen))                      
-                dirtyrects.append(actor.erase(screen,
-                                              grid.get_tile(grid_pos[0],grid_pos[1]).get_background()))
+            if changed['score']:    
+                #score
+                dirtyrects.extend(score.draw(screen))
                 
-                actor.update()
-            
-            # old_position = player.grid_position 
-            player.move(x_direction,y_direction)
-            x_direction = 0
-            y_direction = 0
-            
-            #questions and answers
-            dirtyrects.extend(qa.display_question(screen,font))
-            qa.set_answers(screen,grid,font)
-            dirtyrects.extend(grid.draw(screen))
-            
-            for actor in [player]:
-                dirtyrects.append(actor.draw(screen))
+                #high_score
+                dirtyrects.extend(high_score.draw(screen))
             
             #lives
-            dirtyrects.extend(num_players.draw())
-            
-            #score
-            dirtyrects.extend(score.draw())
-            
-            #high_score
-            dirtyrects.extend(high_score.draw())
+            dirtyrects.extend(num_players.draw_lives(screen))
             
             #time_clock
-            dirtyrects.extend(time_clock.draw())
+            dirtyrects.extend(time_clock.draw(screen))
+            
             
+            if changed['grid']:
+               dirtyrects.extend(grid.draw(screen))
             #do the update
             pygame.display.update(dirtyrects)
             dirtyrects = []
+            
+            if changed['actor']:
+                for actor in [player]:
+                    grid_pos = actor.grid_position
+                    dirtyrects.extend(grid.get_tile(grid_pos[0],grid_pos[1]).draw(screen))                      
+                    dirtyrects.append(actor.draw(screen))
+                pygame.display.update(dirtyrects)
+                dirtyrects = []
+            
+            changed = {'lives': False, 'grid': False, 'time': False, 'actor': False, 'score': False}
 
     except StopGame:
         state.score = 0
@@ -803,4 +815,4 @@ def main():
         
 
 if __name__ == '__main__':
-    main()
\ No newline at end of file
+    main()
-- 
1.4.4.4


--SLDf9lqlvOQaIe6s--


More information about the Games mailing list