【原創】pygame學習筆記(3)--triviagame答題遊戲
阿新 • • 發佈:2018-11-21
一 容易出錯的地方
def _init_(self,name,score)
要記住, __init__ 前後都是兩個下劃線,而不只是1個下劃線
二 程式碼測試
顯示效果正常了,可以玩了
現在題目會迴圈玩
# -*- coding:utf-8 -*- import sys import pygame from pygame.locals import * class Trivia(object): def __init__(self,filename): self.data=[] self.current=0 self.total=0 self.correct=0 self.score=0 self.scored=False self.failed=False self.wronganswer=0 self.colors=[white,white,white,white] #read trivia data from filename f=open("temp\\pygame4_2.txt","r") trivia_data=f.readlines() f.close() #count and clean up trivia data for text_line in trivia_data: self.data.append(text_line.strip()) self.total+=1 def show_question(self): print_text(font1,210,5,"trivia game") print_text(font2,190,500-20,"Press Key (1-4) To Answer",purple) print_text(font2,530,5,"score",purple) print_text(font2,550,25,str(self.score),purple) #get correct answer out of data(first) self.correct=int(self.data[self.current+5]) #display question question=self.current//6+1 print_text(font1,5,80,"question"+str(question)) print_text(font2,20,120,self.data[self.current],yellow) #respond to correct answer if self.scored: self.colors=[white,white,white,white] self.colors[self.correct-1]=green print_text(font1,230,380,"correct",green) print_text(font2,170,420,"press enter for next question",green) elif self.failed: self.colors=[white,white,white,white] self.colors[self.correct-1]=red print_text(font1,230,380,"incorrect",red) print_text(font2,170,420,"press enter for next question",red) #display answer print_text(font1,5,170,"answers") print_text(font2,20,210,"1-"+self.data[self.current+1],self.colors[0]) print_text(font2,20,240,"2-"+self.data[self.current+2],self.colors[1]) print_text(font2,20,270,"3-"+self.data[self.current+3],self.colors[2]) print_text(font2,20,300,"4-"+self.data[self.current+4],self.colors[3]) def handle_input(self,number): if not self.scored and not self.failed: if number==self.correct: self.scored=True self.score+=1 else: self.failed=True self.wronganswer=number def next_question(self): if self.scored or self.failed: self.scored=False self.failed=False self.correct=0 self.colors=[white,white,white,white] self.current+=6 if self.current>=self.total: self.current=0 #main progame begins pygame.init() screen=pygame.display.set_mode((600,500)) caption=pygame.display.set_caption("The Trivia Game") font1=pygame.font.Font(None,40) font2=pygame.font.Font(None,24) white=255,255,255 cyan=0,255,255 yellow=255,255,0 purple=255,0,255 green=0,255,0 red=255,0,0 #load the trivia data file trivia=Trivia("temp\\pygame4_2.txt") def print_text(font,x,y,text,color=(255,255,255),shadow=True): if shadow: imgText=font.render(text,True,(0,0,0)) screen.blit(imgText,(x-2,y-2)) imgText=font.render(text,True,color) screen.blit(imgText,(x,y)) #repeating loop while True: for event in pygame.event.get(): if event.type==QUIT: sys.exit() elif event.type==KEYDOWN: if event.key ==pygame.K_ESCAPE: sys.exit() elif event.key==pygame.K_1: trivia.handle_input(1) elif event.key==pygame.K_2: trivia.handle_input(2) elif event.key==pygame.K_3: trivia.handle_input(3) elif event.key==pygame.K_4: trivia.handle_input(4) elif event.key==pygame.K_RETURN: trivia.next_question() #clear the screen screen.fill((0,0,200)) #display trivia_data trivia.show_question() #update the display pygame.display.update()
三 優化顯示
總覺得老外的這些遊戲,可以改編一下後,會變得好玩很多?