お子様向け暗算強化アプリ (1)

ゲーム感覚で算数(足し算)の勉強ができるアプリを作成してみる。もちろんPygameで。
小さな子供というのは、何か目に見えて得られるものがないと勉強しないので、楽しみながらいつのまにか勉強になっている、という感じのものに仕上げたい。仮面ライダーとか出しておけば、子供は興味を惹かれるらしいので、適当にそれらしいイベントを問題の合間に入れれば、よいはずだ。

まず、プロトを作成した。このプロトは以下のように動作するようになっている。

  • 2項の足し算を自動生成
  • 答えを入力してリターン→間違えると再度同じ問題が表示される
  • 正解すると、メッセージ表示。新しい問題が表示される
  • 永遠に出題が続く...。

さあ、これからどう変えていくか。

background_image_filename = 'forze.jpg'

import random
import pygame
import time
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()
screen = pygame.display.set_mode((700, 170), 0, 32)
background = pygame.image.load(background_image_filename).convert()

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

text = "Press 'n' to start this game."
mssg = ""

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:
                    mssg = "Right! You've got a switch."
                    q = Question()
                    text = q.qst
                    ans = q.ans
                else:
                    n = text.find("=")
                    text = text[0:n+2]
            elif event.key == K_n:
                q = Question()
                text = q.qst
                ans = q.ans
    
    screen.blit(background, (0,0))
    screen.blit(font.render(text, True, (0,0,0)), (0, 5))
    screen.blit(font.render(mssg, True, (0,0,0)), (0, 55))
    
    pygame.display.update()    

「K_BACKSPACE」のところ、最初「K_DELETE」としていたがDELETEキーを押しても反応がなかった。「K_DELETE」がDELETEキーではなくどのキーを指しているかが分からず。