pygame simulate,pygame,import pygam
import pygame,sys,random,timefrom pygame.locals import*FPS = 30green =(0,255,0)darkgreen =(0,155,0)red =(255,0,0)darkred =(155,0,0)blue =(0,0,255)darkblue =(0,0,155)yellow =(255,255,0)darkyellow =(155,155,0)gray = (0,255,255)purple = (255,0,255)white = (255,255,255)black = (0,0,0)bgcolor = blackflashdelay = 200winx = 640winy = 480boardsize = 200boardgap = 20xmargin = int(winx-(boardsize*2+boardgap))/2ymargin = int(winy-(boardsize*2+boardgap))/2greenrect = pygame.Rect(xmargin,ymargin,boardsize,boardsize)redrect = pygame.Rect(xmargin+boardsize+boardgap,ymargin,boardsize,boardsize)bluerect = pygame.Rect(xmargin,ymargin+boardsize+boardgap,boardsize,boardsize)yellowrect = pygame.Rect(xmargin+boardsize+boardgap,ymargin+boardsize+boardgap,boardsize,boardsize)def main(): global fpsclock,disp,beep1,beep2,beep3,beep4 pygame.init() disp = pygame.display.set_mode((winx,winy)) pygame.display.set_caption('simulate') fpsclock = pygame.time.Clock() basicfont = pygame.font.Font('freesansbold.ttf',16) infosurf = basicfont.render('match the pattern',True,black) inforect = infosurf.get_rect() inforect.topleft = (10,winy - 25) beep1 = pygame.mixer.Sound('beep1.ogg') beep2 = pygame.mixer.Sound('beep2.ogg') beep3 = pygame.mixer.Sound('beep3.ogg') beep4 = pygame.mixer.Sound('beep4.ogg') pattern = [] currentstep = 0 lasttime = 0 score = 0 waitingforinput = False while True: clickedbutton = None disp.fill(bgcolor) drawbuttons() scoresurf = basicfont.render('score:%s'%str(score),1,white) scorerect = scoresurf.get_rect() scorerect.topleft = (winx-100,10) disp.blit(scoresurf,scorerect) disp.blit(infosurf,inforect) checkforquit() for event in pygame.event.get(): if event.type == MOUSEBUTTONUP: mousex,mousey = event.pos clickedbutton = getclicked(mousex,mousey) elif event.type == KEYDOWN: if event.key == K_q: clickedbutton = darkgreen elif event.key == K_w: clickedbutton = darkred elif event.key ==K_a: clickedbutton == bluerect elif event.key == K_s: clickedbutton == yellowrect if not waitingforinput: pygame.display.update() pygame.time.wait(1000) pattern.append(random.choice((darkgreen,darkred,darkblue,darkyellow))) for button in pattern: flashbutton(button) pygame.time.wait(flashdelay) waitingforinput = True else: if clickedbutton and clickedbutton == pattern[currentstep]: flashbutton(clickedbutton) currentstep+= 1 lasttime = time.time() if currentstep == len(pattern): changebackgroundanimation() score+= 1 waitingforinput = False currentstep = 0 elif (clickedbutton and clickedbutton!= pattern[currentstep]): gameoveranimation() pattern = [] currentstep = 0 waitingforinput = False score = 0 pygame.time.wait(1000) changebackgroundanimation() pygame.display.update() fpsclock.tick(FPS)def terminal(): pygame.quit() sys.exit()def checkforquit(): for event in pygame.event.get(QUIT): terminal() for event in pygame.event.get(KEYUP): if event.key == K_ESCAPE: terminal() pygame.event.post(event)def drawbuttons(): pygame.draw.rect(disp,darkgreen,greenrect) pygame.draw.rect(disp,darkred,redrect) pygame.draw.rect(disp,darkblue,bluerect) pygame.draw.rect(disp,darkyellow,yellowrect)def flashbutton(color ,animationspeed = 20): if color == darkgreen: flashcolor = green rectangle = greenrect beep = beep1 elif color == darkred: flashcolor = red rectangle = redrect beep = beep2 elif color == darkblue: flashcolor = blue rectangle = bluerect beep = beep3 elif color == darkyellow: flashcolor = yellow rectangle = yellowrect beep = beep4 osurf = disp.copy() flashsurf = pygame.Surface((boardsize,boardsize)) flashsurf = flashsurf.convert_alpha() r,g,b = flashcolor beep.play() for start,end,step in ((0,255,1),(255,0,-1)): for alpha in range(start,end,animationspeed*step): checkforquit() disp.blit(osurf,(0,0)) flashsurf.fill((r,g,b,alpha)) disp.blit(flashsurf,rectangle.topleft) pygame.display.update() fpsclock.tick(FPS) disp.blit(osurf,(0,0))def getclicked(x,y): if greenrect.collidepoint(x,y): return darkgreen elif redrect.collidepoint(x,y): return darkred elif bluerect.collidepoint(x,y): return darkblue elif yellowrect.collidepoint(x,y): return darkyellow return Nonedef changebackgroundanimation(animationspeed = 40): global bgcolor newcolor = (random.randint(0,255),random.randint(0,255),random.randint(0,255)) newsurf = pygame.Surface((winx,winy)) newsurf = newsurf.convert_alpha() r,g,b = newcolor for alpha in range(0,255,animationspeed): disp.fill(bgcolor) newsurf.fill((r,g,b,alpha)) disp.blit(newsurf,(0,0)) drawbuttons() pygame.display.update() fpsclock.tick(FPS) bgcolor = newcolordef gameoveranimation(color = white,animationspeed = 50): osurf = disp.copy() flashsurf = pygame.Surface(disp.get_size()) flashsurf = flashsurf.convert_alpha() beep1.play() beep2.play() beep3.play() r,g,b = color for i in range(3): for start,end,step in ((0,255,1),(255,0,-1)): for alpha in range(start,end,animationspeed*step): checkforquit() flashsurf.fill((r,g,b,alpha)) disp.blit(osurf,(0,0)) disp.blit(flashsurf,(0,0)) drawbuttons() pygame.display.update() fpsclock.tick(FPS)if __name__=='__main__': main()
评论关闭