お子様向け暗算強化アプリ (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キーではなくどのキーを指しているかが分からず。