清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
import pygame,sys,random,time from pygame.locals import* FPS = 30 green =(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 = black flashdelay = 200 winx = 640 winy = 480 boardsize = 200 boardgap = 20 xmargin = int(winx-(boardsize*2+boardgap))/2 ymargin = int(winy-(boardsize*2+boardgap))/2 greenrect = 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 None def 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 = newcolor def 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()