pygame memory puzzle

pygame memory puzzle,第1张

概述pygame memory puzzle

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

@R_301_5565@ pygame,random,sysfrom pygame.locals @R_301_5565@ *FPS = 30BoxwIDth = 3Boxheight = 2assert BoxwIDth*Boxheight%2 == 0,'board number needs to be even'winx = 640winy = 480between = 10Boxsize = 40xmargin = int((winx-(Boxsize+between)*BoxwIDth)/2)ymargin = int((winy-(Boxsize+between)*Boxheight)/2)speed = 8#color inusenavyblue = (60,60,100)#dispfillwhite = (255,255,255)#boardcoverblue = (0,255) #highlighrect#icons colorred = (255,0)yellow = (255,0)purple = (255,255)green = (0,0)gray = (0,255)#icons shaperectan = 'rectan'lines = 'lines'circ = 'circ'poly = 'poly'allcolor = (red,yellow,purple,green)allshape = (rectan,lines,circ,poly)assert len(allcolor)*len(allshape*2)>= BoxwIDth*Boxheight,'board is too big for the number of color and shape'def main():        global fpsclock,disp    pygame.init()    disp = pygame.display.set_mode((winx,winy))    pygame.display.set_caption('memory puzzle')    fpsclock = pygame.time.Clock()    disp.fill(navyblue)    reveal = getrevealed(False)    mainboard = randomboard()    drawboard(mainboard,reveal)    startanimation(mainboard)    first = None    mousex = 0    mousey = 0    while True:        mouseclicked = False                disp.fill(navyblue)        drawboard(mainboard,reveal)                        for event in pygame.event.get():            if event.type == QUIT or (  event.type == KEYUP and event.key == K_ESCAPE):                pygame.quit()                sys.exit()            elif event.type == MOUSEMOTION:                mousex,mousey = event.pos            elif event.type == MOUSEbuttonUP:                mousex,mousey = event.pos                mouseclicked = True        Boxx,Boxy = getpixel(mousex,mousey)        if Boxx!=None and Boxy!= None:            if not reveal[Boxx][Boxy]:                highlighrect(Boxx,Boxy)            if not reveal[Boxx][Boxy] and mouseclicked:                revealboardanimation(mainboard,[(Boxx,Boxy)])                reveal[Boxx][Boxy] = True                if first == None:                    first = (Boxx,Boxy)                else:                    icon1shape,icon1color = getshapeandcolor(mainboard,first[0],first[1])                    icon2shape,icon2color = getshapeandcolor(mainboard,Boxx,Boxy)                    if icon1shape!= icon2shape or icon1color!= icon2color:                        pygame.time.wait(1000)                        coverboardanimation(mainboard,[(first[0],first[1]),(Boxx,Boxy)])                        reveal[first[0]][first[1]] = False                        reveal[Boxx][Boxy] = False                                            elif haswon(reveal):                        wonanimation(mainboard)                        pygame.time.wait(2000)                        mainboard = randomboard()                        startanimation(mainboard)                        reveal = getrevealed(False)                        drawboard(mainboard,reveal)                    first = None                        pygame.display.update()        fpsclock.tick(FPS)                                                            def leftop(Boxx,Boxy):    left = xmargin + Boxx*(Boxsize + between)    top = ymargin + Boxy*(Boxsize + between)    return left,top    def highlighrect(Boxx,Boxy):    left,top = leftop(Boxx,Boxy)    pygame.draw.rect(disp,blue,(left-between/2,top-between/2,Boxsize+between,Boxsize+between),4)    def randomboard():    Box = []    for shape in allshape:        for color in allcolor:            Box.append((shape,color))    random.shuffle(Box)    iconsnum = BoxwIDth*Boxheight/2    icons = Box[:iconsnum]*2    random.shuffle(icons)    board = []    for Boxx in range(BoxwIDth):        column = []        for Boxy in range(Boxheight):            column.append(icons[0])            del icons[0]        board.append(column)    return board            def getrevealed(val):    revealedBox = []    for i in range(BoxwIDth):        revealedBox.append([val]*Boxheight)    return revealedBoxdef getpixel(x,y):    for Boxx in range(BoxwIDth):        for Boxy in range(Boxheight):            left,Boxy)                b = pygame.Rect((left,top,Boxsize,Boxsize))            if b.collIDepoint(x,y):                return(Boxx,Boxy)    return(None,None)def split(group,theList):    result = []    for i in range(0,len(theList),group):        result.append(theList[i:group+i])    random.shuffle(result)    return resultdef getshapeandcolor(board,Boxy):    return board[Boxx][Boxy][0],board[Boxx][Boxy][1]def drawicon(shape,color,Boxy)    if shape == rectan:        pygame.draw.rect(disp,(left+5,top+5,Boxsize-10,Boxsize-10))    elif shape == lines:        for i in range(0,10):            pygame.draw.line(disp,(left+i,top),(left,top+i))            pygame.draw.line(disp,(left+Boxsize-i,top+Boxsize),(left+Boxsize,top+Boxsize-i))    elif shape == circ:        pygame.draw.circle(disp,(left+Boxsize/2,top+Boxsize/2),Boxsize/2-5)    elif shape == poly:        pygame.draw.polygon(disp,((left+Boxsize/2,top+Boxsize/2)))        def drawoneboard(board,Boxes,coverage):    for Box in Boxes:        shape,color = getshapeandcolor(board,Box[0],Box[1])        left,top = leftop(Box[0],Box[1])        pygame.draw.rect(disp,navyblue,Boxsize))        drawicon(shape,Box[1])        if coverage>0:            pygame.draw.rect(disp,white,coverage,Boxsize))    pygame.display.update()    fpsclock.tick(FPS)def coverboardanimation(board,Boxcover):    for coverage in range(0,Boxsize+speed,speed):        drawoneboard(board,Boxcover,coverage)def revealboardanimation(board,Boxreveal):    for coverage in range(Boxsize,-speed-1,-speed):        drawoneboard(board,Boxreveal,coverage)def drawboard(board,revealBox):    for Boxx in range(BoxwIDth):                for Boxy in range(Boxheight):            left,Boxy)            if not revealBox[Boxx][Boxy]:                pygame.draw.rect(disp,Boxsize))            else:                shape,Boxy)                drawicon(shape,Boxy)def startanimation(board):    Boxes = []    for Boxx in range(BoxwIDth):        for Boxy in range(Boxheight):            Boxes.append((Boxx,Boxy))            random.shuffle(Boxes)    revealBox = getrevealed(False)        drawboard(board,revealBox)    Boxgroups = split(8,Boxes)    for Boxgroup in Boxgroups:        revealboardanimation(board,Boxgroup)        pygame.time.wait(300)        coverboardanimation(board,Boxgroup)    pygame.display.update()    fpsclock.tick(FPS)    def wonanimation(board):    color1 = gray    color2 = navyblue    revealBox = getrevealed(True)    for i in range(13):        color1,color2 = color2,color1        drawboard(board,revealBox)        disp.fill(color1)               pygame.time.wait(300)        pygame.display.update()def haswon(reveal):    for i in reveal:        if False in i:            return False            return True        if __name__ == '__main__':    main()

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的pygame memory puzzle全部内容,希望文章能够帮你解决pygame memory puzzle所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存