お子様向け計算ドリルアプリ (4)

画面の大きさをy方向に広げて、獲得したスイッチの画像を2段表示にした。
ソースコードは以下の通り。

# proto04.py
background_image_filename = 'forze.jpg'
switch_image_filename = [
     'AS01.jpg','AS02.jpg','AS03.jpg','AS04.jpg',
     'AS05.jpg','AS06.jpg','AS07.jpg','AS08.jpg',
     'AS09.jpg','AS10.jpg','AS11.jpg','AS12.jpg',
     'AS13.jpg','AS14.jpg','AS15.jpg','AS16.jpg',
     'AS17.jpg','AS18.jpg','AS19.jpg','AS20.jpg',
     'AS21.jpg','AS22.jpg','AS23.jpg','AS24.jpg',
     'AS25.jpg','AS26.jpg','AS27.jpg','AS28.jpg',
     'AS30.jpg','AS31.jpg','AS33.jpg','AS34.jpg'
                                                 ]
import random
import pygame
from pygame.locals import *
from sys import exit

class Question:
    def __init__(self):
        a = random.sample(xrange(100), 2)
        self.ans = a[0] + a[1]
        self.qst = str(a[0]) + ' + ' + str(a[1]) + ' = ' 

    def make(self):
        pass


pygame.init()
time1 = pygame.time.get_ticks()

screen = pygame.display.set_mode((700, 280), 0, 32)
background = pygame.image.load(background_image_filename).convert()

astros = list()
get_sw = list()
for n in range(len(switch_image_filename)):
    a = random.sample(switch_image_filename, 1)
    astros.append(pygame.image.load(a[0]).convert())
    get_sw.append(False)

try:
    font = pygame.font.SysFont("arial", 48)
except MemoryError:
    font = pygame.font.Font(pygame.font.get_default_font(), 48)

text = "Press 'N' to start new game."
mssg = ""
aflag = False
ccnt = -1

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
        elif event.type == KEYDOWN:
            if event.key == K_1:
                text += '1'
            elif event.key == K_2:
                text += '2'
            elif event.key == K_3:
                text += '3'
            elif event.key == K_4:
                text += '4'
            elif event.key == K_5:
                text += '5'
            elif event.key == K_6:
                text += '6'
            elif event.key == K_7:
                text += '7'
            elif event.key == K_8:
                text += '8'
            elif event.key == K_9:
                text += '9'
            elif event.key == K_0:
                text += '0'
            elif event.key == K_BACKSPACE:
                text = text[:-1]
            elif event.key == K_RETURN:
                inp = int(text.split("=")[1])
                if inp == ans:
                    ccnt += 1
                    aflag = True
                    mssg = "Right! You've got a switch."
                    get_sw[ccnt] = True
                    text = ""
                    time1 = pygame.time.get_ticks()
                else:
                    n = text.find("=")
                    text = text[0:n+2]
            elif event.key == K_n:
                q = Question()
                text = q.qst
                ans = q.ans
    
    screen.fill((255,255,255))   # 加えた
    screen.blit(background, (0,0))
    for i in range(len(switch_image_filename)):
        if get_sw[i]:
            if i <=19: #加えた
                screen.blit(astros[i], (30*i, 170))
            else:
                screen.blit(astros[i], (30*(i-20), 220)) #加えた
    screen.blit(font.render(text, True, (0,0,0)), (0, 5))
    screen.blit(font.render(mssg, True, (0,0,0)), (0, 55))

    time2 = pygame.time.get_ticks()
    dtime = time2 - time1
    if aflag and dtime >= 5000:
        mssg = ""
        q = Question()
        text = q.qst
        ans = q.ans
        aflag = False
    
    pygame.display.update()