Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Aguiar <alanjas@hotmail.com>2013-12-27 12:54:15 (GMT)
committer Alan Aguiar <alanjas@hotmail.com>2013-12-27 12:54:15 (GMT)
commit23e387593e5717f6c0c640f07bf3e90b3f69260d (patch)
tree587a5dc595d3496154d1030ca4ee10073ee2f7c2
parentd229dfd8374b28899985e987028ae726e380a514 (diff)
save stats
-rwxr-xr-xkuku.py116
1 files changed, 60 insertions, 56 deletions
diff --git a/kuku.py b/kuku.py
index 7b49d00..9726842 100755
--- a/kuku.py
+++ b/kuku.py
@@ -22,33 +22,21 @@
# Julius B. Lucks <julius@younglucks.com>
# Alan Aguiar <alanjas@gmail.com>
-import os
import sys
import gtk
import pygame
import random
-from pygame.locals import *
+from pygame.locals import Rect
from grid import Grid
-import pickle as p
import question
import re
-from kuku_utils import *
-
-#import configuration
-from kuku_config import *
+from kuku_utils import data_path, load_image
+from kuku_config import GRID_SIZE, GAME_TIME
+from kuku_config import PLAYER_LIVES, QUESTION_FILES
from gettext import gettext as _
-#i18n
-#import gettext
-#gettext.install('kuku', './locale', unicode=False)
-#presLan_en = gettext.translation("kuku", os.path.join(get_bundle_path(),'locale'), languages=['en'])
-#presLan_sw = gettext.translation("kuku", os.path.join(get_bundle_path(),'locale'), languages=['sw'])
-
-#presLan_en.install()
-# presLan_sw.install()
-
scale_x = 1.0
scale_y = 1.0
@@ -143,12 +131,16 @@ class State(object):
return str
def save(self):
- """save state object
-
- in kuku_state.obj"""
- f = file(data_path('kuku_state.obj'),'w')
- p.dump(self,f)
- f.close()
+ """save state object in kuku_state.obj"""
+ try:
+ f = file(data_path('kuku_state.obj'), 'w')
+ f.write(str(self.score) + "\n")
+ f.write(str(self.lives) + "\n")
+ f.write(str(self.high_score) + "\n")
+ f.write(str(self.time) + "\n")
+ f.close()
+ except Exception, err:
+ print 'Error saving scores', err
def update(self,lives=None,score=None,time=None):
"""update lives, score and time"""
@@ -249,7 +241,7 @@ class Player(Actor):
self.set_image(self.img_player_left)
elif x_direction > 0:
self.set_image(self.img_player_right)
- step = 1
+ #step = 1
#elif y_direction != 0:
#self.set_image(Img.player_right)
@@ -602,7 +594,7 @@ class KukuActivity():
qa,num_players,score,time_clock = self.game_start(screen,gridsize,font)
return (qa,num_players,score,time_clock)
- def game_win(self, screen, gridsize, font, state):
+ def game_win(self, screen, gridsize, font):
"""the game over screen"""
screen.fill((255,255,255))
vec = (screen.get_rect().center[0]-self.Img.game_win.get_rect().center[0],
@@ -623,7 +615,7 @@ class KukuActivity():
sys.exit(0)
elif evt.type == pygame.KEYDOWN:
qa,num_players,score,time_clock = self.game_start(screen,gridsize,font,started=1)
- score.set(state.score)
+ score.set(self.state.score)
return (qa,num_players,score,time_clock)
@@ -645,7 +637,7 @@ class KukuActivity():
message = _('Begin!')
text = font.render(message,1,(10,10,10))
twidth = text.get_rect().width
- theight = text.get_rect().height
+ #theight = text.get_rect().height
tlcorner = screen.get_rect().center
textpos = (tlcorner[0]-twidth/2, tlcorner[1])
@@ -704,6 +696,28 @@ class KukuActivity():
pygame.display.update()
return (qa,num_players,score,time_clock)
+ def save_state(self, PLAYER_LIVES, GAME_TIME):
+ print 'Saving state...'
+ #self.state.score = 0
+ self.state.lives = PLAYER_LIVES
+ self.state.time = GAME_TIME
+ self.state.save()
+ print 'State saved'
+
+
+ def load_state(self):
+ self.state = State()
+ try:
+ f = file(data_path('kuku_state.obj'),'r')
+ self.state.score = int(f.readline())
+ self.state.lives = int(f.readline())
+ self.state.high_score = int(f.readline())
+ self.state.time = int(f.readline())
+ f.close()
+ except Exception, err:
+ print 'Cannot open kuku_state.obj', err
+
+
def run(self):
"""main pygame loop"""
@@ -766,14 +780,7 @@ class KukuActivity():
pygame.display.flip()
- #load the state object if it exists
- try:
- f = file(data_path('kuku_state.obj'),'r')
- state = p.load(f)
- f.close()
- except IOError:
- state = State()
-
+ self.load_state()
# # Start music
# pygame.mixer.music.load(data_path('kuku_slow.ogg'))
@@ -797,7 +804,7 @@ class KukuActivity():
#create high_score
- high_score = HighScore(state.high_score,self.Img.high_score,screen,font)
+ high_score = HighScore(self.state.high_score,self.Img.high_score,screen,font)
# print Img.player_right.get_rect().height, Img.stunned_right.get_rect().height
@@ -833,25 +840,27 @@ class KukuActivity():
font,
num_players=num_players,
score=score)
- state.update(lives=num_players.get_lives(),
+ self.state.update(lives=num_players.get_lives(),
score=score.get_score(),
time =time_clock.get_ticks())
- high_score.set(state.high_score)
+ high_score.set(self.state.high_score)
events = pygame.event.get()
for evt in events:
if evt.type == pygame.QUIT:
- sys.exit(0)
+ self.save_state(PLAYER_LIVES, GAME_TIME)
+ running = False
+ #sys.exit(0)
elif evt.type == pygame.KEYDOWN:
if evt.key == 27:
if not(self.running_sugar):
running = False
- exit()
+ sys.exit(0)
# elif evt.key == pygame.K_SPACE:
if not evt.key in move_keys:
x = player.grid_position[0]
y = player.grid_position[1]
- ctile = grid.draw_tile(x,y,screen)
+ grid.draw_tile(x,y,screen)
#Pecking animation - 1st erase player,
#then set pecking image, then only update
@@ -881,10 +890,10 @@ class KukuActivity():
num_players=num_players,
score=score,
time_clock=time_clock)
- state.update(lives=num_players.get_lives(),
+ self.state.update(lives=num_players.get_lives(),
score=score.get_score(),
time =time_clock.get_ticks())
- high_score.set(state.high_score)
+ high_score.set(self.state.high_score)
else:
@@ -894,9 +903,9 @@ class KukuActivity():
time = 0
#probably right here
- state.update(lives=num_players.get_lives(),
+ self.state.update(lives=num_players.get_lives(),
time =time_clock.get_ticks())
- high_score.set(state.high_score)
+ high_score.set(self.state.high_score)
@@ -929,23 +938,23 @@ class KukuActivity():
pygame.mixer.music.fadeout(2000)
kuku_lose.play()
qa,num_players,score,time_clock = self.game_over(screen,gridsize,font)
- state.update(lives=num_players.get_lives(),
+ self.state.update(lives=num_players.get_lives(),
score=score.get_score(),
time =time_clock.get_ticks())
- high_score.set(state.high_score)
+ high_score.set(self.state.high_score)
- if state.won:
+ if self.state.won:
pygame.mixer.music.fadeout(2000)
kuku_win.play()
pygame.mixer.music
- qa,num_players,score,time_clock = self.game_win(screen,gridsize,font,state)
- state.update(lives=num_players.get_lives(),
+ qa,num_players,score,time_clock = self.game_win(screen,gridsize,font)
+ self.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)
+ self.state.won = 0
+ high_score.set(self.state.high_score)
# determine which direction the actor is facing
@@ -993,11 +1002,6 @@ class KukuActivity():
dirtyrects = []
- state.score = 0
- state.lives = PLAYER_LIVES
- state.time = GAME_TIME
- state.save()
-
if __name__ == '__main__':
k = KukuActivity(False)
k.run()