お子様向け計算ドリルアプリ (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()