#!/usr/bin/env python import pygame, os from pygame.locals import * class Question: def __init__(self, fn): lns = [l.strip() for l in open(fn)] self.qlines = [] self.slots = [] self.bank = 0 while len(lns) and lns[0] != '': self.qlines.append( lns.pop(0) ) if len(lns) == 0: return lns.pop(0) while len(lns): try: v = int(lns.pop(0)) k = lns.pop(0) self.slots.append( (k,v) ) except Exception, e: print 'Did not create slot',e self.covered = [True for s in self.slots] def drawq( self ): qs = pygame.Surface( (400,400) ) qs.set_colorkey( (0,0,0) ) rq = [ qfont.render(txt,False,(0,0,1)) for txt in self.qlines ] l,t = 0,0 # left, top for qline in rq: qs.blit( qline, (l,t) ) t += qfont.get_linesize() t += 20 l += 20 for s in range( len(self.slots) ): if self.covered[s]: qs.blit( cimg, (l,t) ) else: ft = qfont.render( self.slots[s][0], False, (10,20,100) ) qs.blit( ft, (l,t) ) sc = sfont.render( '(%s)' % self.slots[s][1], False, (5,10,50) ) qs.blit( sc, (390-sc.get_width(),t) ) t += cimg.get_height() + 5 return qs def reveal( self, qn ): self.covered[ qn ] = False self.bank += self.slots[qn][1] def init(): pygame.init() scr = pygame.display.set_mode( (800,600), HWSURFACE ) pygame.event.set_allowed( (KEYUP, USEREVENT) ) pygame.display.flip() return scr def printkey( code, mod ): print code, mod def wait( code, mod ): run = False def titlescr( scr ): img = pygame.image.load( os.path.join('img', 'isfeud.jpeg') ).convert() scr.blit( img, (0,0) ) pygame.display.flip() pygame.time.set_timer( USEREVENT, 2000 ) while 1: pygame.event.pump() e = pygame.event.wait() if e.type == KEYUP: break if e.type == USEREVENT: break pygame.time.set_timer( USEREVENT, 0 ) def eloop(): img = pygame.image.load( os.path.join('img', 'grad.jpeg') ).convert() scr.blit( img, (0,0) ) pygame.display.flip() onkey = wait run = True while run: pygame.event.pump() e = pygame.event.wait() if e.type == KEYUP: break q = Question( os.path.join('data','sampleq') ) pygame.display.update( scr.blit( q.drawq(), (200,10) ) ) print 'loaded q' onkey = wait run = True while run: pygame.event.pump() e = pygame.event.wait() dirty = [] if e.type == KEYUP: if e.key == 27: break if e.key >= 48 and e.key < 58 and (e.key-49) < len(q.covered): q.reveal( e.key-49 ) scr.blit( img, (0,0) ) scr.blit( q.drawq(), (200,10) ) print e.key pygame.display.flip() scr = init() qfont = pygame.font.Font( os.path.join('font','Vera.ttf'), 32 ) sfont = pygame.font.Font( os.path.join('font','verdana.ttf'), 30 ) onkey = printkey run = True cimg = pygame.image.load( os.path.join('img', 'cov.png') ).convert() cimg.set_colorkey( (255,255,255) ) titlescr(scr) eloop()