鱼C论坛

 找回密码
 立即注册
查看: 2781|回复: 11

python小游戏打包问题

[复制链接]
发表于 2020-3-2 19:52:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
打包好了,但打开就是闪退,不知道什么原因。有没有大佬啊。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 19:52:59 | 显示全部楼层
代码?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 19:53:44 | 显示全部楼层
如果有第三方库,就要把第三方库翻到你程序的那个文件夹里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 19:53:47 | 显示全部楼层
有代码,音乐,图片
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 19:55:15 | 显示全部楼层
人杰地灵 发表于 2020-3-2 19:53
有代码,音乐,图片

代码呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-2 19:58:10 | 显示全部楼层
人杰地灵 发表于 2020-3-2 19:53
有代码,音乐,图片

把代码发出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-2 20:00:15 | 显示全部楼层
  1. import pygame, sys, random   #
  2. from pygame.locals import *  #导入pygame库中的一些常量

  3. # 音乐的路径
  4. #file=r'C:\Users\hp\Desktop\作业\D.mp3'
  5. file='D.mp3'
  6. # 初始化
  7. pygame.mixer.init()
  8. # 加载音乐文件
  9. track = pygame.mixer.music.load(file)
  10. # 开始播放音乐流
  11. pygame.mixer.music.play(-1,0.0)
  12. #暂停音乐
  13. pygame.mixer.music.pause()
  14. #一开始游戏打乱时鼠标点击按钮不会生效,
  15. #要将音乐先停下来,如果不喜欢这个音乐就不会感到反感了


  16. #背景图片的路径
  17. Pictures = "1.jpg"
  18. background1 = pygame.image.load(Pictures)


  19. # 创建常量(继续用不同的值进行实验)
  20. BOARDWIDTH = 4 #板中的列数
  21. BOARDHEIGHT = 4 #板中的行数
  22. TILESIZE = 80   #游戏板块大小
  23. WINDOWWIDTH = 1400   #窗口大小 640   480
  24. WINDOWHEIGHT = 600
  25. FPS = 80           #游戏帧数(越大开头乱序越快)
  26. BLANK = None      

  27.    
  28. #游戏色彩配置
  29. #                 R    G    B
  30. BLACK =         (  0,   0,   0)   #黑色
  31. WHITE =         (255, 255, 255)   #白色
  32. BRIGHTBLUE =    (  0,  50, 255)   #宝石蓝色
  33. DARKTURQUOISE = (  3,  54,  73)   #深珠宝绿
  34. GREEN =         (  0, 204,   0)   #绿色

  35. BGCOLOR = DARKTURQUOISE
  36. TILECOLOR = GREEN
  37. TEXTCOLOR = WHITE
  38. BORDERCOLOR = BRIGHTBLUE
  39. BASICFONTSIZE = 20

  40. BUTTONCOLOR = WHITE
  41. BUTTONTEXTCOLOR = BLACK
  42. MESSAGECOLOR = WHITE

  43. XMARGIN = int((WINDOWWIDTH - (TILESIZE * BOARDWIDTH + (BOARDWIDTH - 1))) / 2)
  44. YMARGIN = int((WINDOWHEIGHT - (TILESIZE * BOARDHEIGHT + (BOARDHEIGHT - 1))) / 2)

  45. UP = 'up'
  46. DOWN = 'down'
  47. LEFT = 'left'
  48. RIGHT = 'right'

  49. def main():
  50.     global FPSCLOCK, DISPLAYSURF, BASICFONT, RESET_SURF, RESET_RECT,\
  51.     NEW_SURF, NEW_RECT, SOLVE_SURF, SOLVE_RECT,MS_SURF, MS_RECT,DOWN_SURF,\
  52.     DOWN_RECT,Music_SURF,Music_RECT,CH_SURF,CH_RECT
  53.     #上面是全局变量
  54.     f=1
  55.     pygame.init()
  56.     #初始化所有导入的pygame模块。
  57.     FPSCLOCK = pygame.time.Clock()
  58.     #创建一个对象来帮助跟踪时间
  59.     DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
  60.     #创建窗口
  61.     pygame.display.set_caption('game')
  62.     #窗口标题
  63.     BASICFONT = pygame.font.Font('freesansbold.ttf', BASICFONTSIZE)
  64.     #从一个字体文件创建一个 Font 对象

  65.     # 将选项按钮及其矩形存储在选项中。
  66.     RESET_SURF, RESET_RECT = makeText('Reset',    TEXTCOLOR, TILECOLOR, WINDOWWIDTH - 120, WINDOWHEIGHT - 90)
  67.     NEW_SURF,   NEW_RECT   = makeText('New Game', TEXTCOLOR, TILECOLOR, WINDOWWIDTH - 120, WINDOWHEIGHT - 60)
  68.     SOLVE_SURF, SOLVE_RECT = makeText('Solve',    TEXTCOLOR, TILECOLOR, WINDOWWIDTH - 120, WINDOWHEIGHT - 30)
  69.     MS_SURF, MS_RECT       = makeText('Music Stop',TEXTCOLOR, TILECOLOR, WINDOWWIDTH - 120, WINDOWHEIGHT - 120)
  70.     Music_SURF, Music_RECT = makeText('Music', TEXTCOLOR, TILECOLOR, WINDOWWIDTH - 120, WINDOWHEIGHT - 150)
  71.     CH_SURF, CH_RECT       = makeText('change', TEXTCOLOR, TILECOLOR, WINDOWWIDTH - 120, WINDOWHEIGHT - 180)  

  72.     mainBoard, solutionSeq = generateNewPuzzle(80)
  73.     SOLVEDBOARD = getStartingBoard()
  74.     #游戏胜利对比数据
  75.     allMoves = []
  76.     # 游戏移动方向数据

  77.     while True:
  78.         # 开始游戏的主循环
  79.         slideTo = None
  80.         # 平铺应滑动的方向(如果有的话)
  81.         msg = 'Click tile or press arrow keys to slide.'
  82.         # 游戏开始提示
  83.         
  84.         if mainBoard == SOLVEDBOARD:
  85.             
  86.             msg = 'Congratulations on your victory!You can do it all over again.'
  87.             
  88.             
  89.         drawBoard(mainBoard, msg)
  90.         
  91.         checkForQuit()
  92.         for event in pygame.event.get():
  93.             # event handling loop事件处理循环
  94.             if event.type == MOUSEBUTTONUP:
  95.                 #鼠标点击按钮
  96.                 spotx, spoty = getSpotClicked(mainBoard, event.pos[0], event.pos[1])
  97.                 #鼠标点击碰撞
  98.                 if (spotx, spoty) == (None, None):
  99.                     #如果没有在游戏方块上

  100.                     
  101.                     if CH_RECT.collidepoint(event.pos):
  102.                         f=2
  103.                     if MS_RECT.collidepoint(event.pos):
  104.                         pygame.mixer.music.pause()
  105.                         #音乐暂停
  106.                     if Music_RECT.collidepoint(event.pos):
  107.                         pygame.mixer.music.unpause()
  108.                         #音乐结束暂停
  109.                     if RESET_RECT.collidepoint(event.pos):
  110.                         resetAnimation(mainBoard, allMoves)
  111.                         #重置用户移动数据
  112.                         allMoves = []
  113.                     elif NEW_RECT.collidepoint(event.pos):
  114.                          mainBoard, solutionSeq = generateNewPuzzle(80)
  115.                          # 重置游戏数据和初始系统移动数据
  116.                          allMoves = []
  117.                     elif SOLVE_RECT.collidepoint(event.pos):
  118.                           resetAnimation(mainBoard, solutionSeq + allMoves)
  119.                           # 重置用户移动列表,再重系统移动列表
  120.                           allMoves = []
  121.                 else:
  122.                     # check if the clicked tile was next to the blank spot

  123.                     blankx, blanky = getBlankPosition(mainBoard)
  124.                     if spotx == blankx + 1 and spoty == blanky:
  125.                         slideTo = LEFT
  126.                     elif spotx == blankx - 1 and spoty == blanky:#如果方块右边是空白
  127.                         slideTo = RIGHT
  128.                     elif spotx == blankx and spoty == blanky + 1:
  129.                         slideTo = UP
  130.                     elif spotx == blankx and spoty == blanky - 1:
  131.                         slideTo = DOWN
  132.                     

  133.             elif event.type == KEYUP:
  134.                 # 监控按键移动方式
  135.                
  136.                 if event.key in (K_LEFT, K_a) and isValidMove(mainBoard, LEFT):
  137.                     slideTo = LEFT
  138.                     #如果按键触发在右按键和d按键并且可以移动方块
  139.                 elif event.key in (K_RIGHT, K_d) and isValidMove(mainBoard, RIGHT):
  140.                     slideTo = RIGHT
  141.                 elif event.key in (K_UP, K_w) and isValidMove(mainBoard, UP):
  142.                     slideTo = UP
  143.                 elif event.key in (K_DOWN, K_s) and isValidMove(mainBoard, DOWN):
  144.                     slideTo = DOWN
  145.                

  146.         if slideTo:
  147.             slideAnimation(mainBoard, slideTo, 'Click tile or press arrow keys to slide.', 8)
  148.             # 执行滑动动画,8是速度
  149.             makeMove(mainBoard, slideTo)
  150.             #修改游戏坐标数据
  151.             allMoves.append(slideTo)
  152.             # 添加移动记录
  153.             
  154.         pygame.display.update()
  155.         FPSCLOCK.tick(FPS)



  156. def terminate():
  157.     #退出游戏
  158.     pygame.quit()
  159.     sys.exit()
  160.     #执行推出
  161. #玩家单击游戏窗口的关闭按钮时,
  162. #将检测到pygame.QUIT 事件,
  163. #而我们调用sys.exit() 来退出游戏

  164. def checkForQuit():
  165.     #循环事件监视
  166.     for event in pygame.event.get(QUIT):
  167.         # 获取所有退出事件
  168.         terminate()
  169.         # 如果存在任何退出事件,则终止
  170.     for event in pygame.event.get(KEYUP):
  171.         # 获取所有密钥设置事件
  172.         if event.key == K_ESCAPE:
  173.             terminate()
  174.             #如果KEYUP事件是针对Esc键的,则终止
  175.         pygame.event.post(event)
  176.         # 将其他KEYUP事件对象放回



  177. def getStartingBoard():
  178.     #生成游戏板数据结构
  179.     # 返回数据坐标
  180.     # For example, if BOARDWIDTH and BOARDHEIGHT are both 3, this function
  181.     # returns [[1, 4, 7], [2, 5, 8], [3, 6, BLANK]]
  182.     counter = 1
  183.     board = []
  184.     for x in range(BOARDWIDTH):
  185.         column = []
  186.         for y in range(BOARDHEIGHT):
  187.             column.append(counter)
  188.             #添加y轴数据
  189.             counter += BOARDWIDTH
  190.         board.append(column)
  191.         #添加x轴数据
  192.         counter -= BOARDWIDTH * (BOARDHEIGHT - 1) + BOARDWIDTH - 1

  193.     board[BOARDWIDTH-1][BOARDHEIGHT-1] = BLANK
  194.     #最后一个方块是空方块
  195.     return board



  196. def getBlankPosition(board):
  197.     #找到游戏空白块坐标
  198.     #返回空白块坐标
  199.     for x in range(BOARDWIDTH):
  200.         for y in range(BOARDHEIGHT):
  201.             if board[x][y] == BLANK:
  202.                 return (x, y)
  203.                 #返回空板坐标



  204. def makeMove(board, move):
  205.     #记录数据移动方块
  206.     # This function does not check if the move is valid.
  207.     bushu=0
  208.     bushu =bushu+1
  209.     blankx, blanky = getBlankPosition(board)

  210.     if move == UP:
  211.         #上升空白快
  212.         #blanky + 1 下个格子的y坐标,下降空白格,向上移动格子
  213.         board[blankx][blanky], board[blankx][blanky + 1] = board[blankx][blanky + 1], board[blankx][blanky]
  214.     elif move == DOWN:
  215.         #下降空白快
  216.         #blanky - 1 上个格子的y坐标,上升空白格,向下移动格子
  217.         board[blankx][blanky], board[blankx][blanky - 1] = board[blankx][blanky - 1], board[blankx][blanky]
  218.     elif move == LEFT:
  219.         #右移空白快
  220.         #blankx + 1 右个格子的x坐标,右移空白格,向左移动格子
  221.         board[blankx][blanky], board[blankx + 1][blanky] = board[blankx + 1][blanky], board[blankx][blanky]
  222.     elif move == RIGHT:
  223.         #左移空白快
  224.         #blankx - 1 左个格子的x坐标,左移空白格,向右移动格子
  225.         board[blankx][blanky], board[blankx - 1][blanky] = board[blankx - 1][blanky], board[blankx][blanky]
  226.     return(bushu)


  227. def isValidMove(board, move):
  228.     #移动限制
  229.     blankx, blanky = getBlankPosition(board)
  230.     #获取空白位置的坐标
  231.     #如果是上升的话,空白格的坐标不能等于y边界的坐标,如果返回Flase
  232.     #下降,空白坐标不能等于y零界点左边,如果等于返回False
  233.     return (move == UP and blanky != len(board[0]) - 1) or \
  234.            (move == DOWN and blanky != 0) or \
  235.            (move == LEFT and blankx != len(board) - 1) or \
  236.            (move == RIGHT and blankx != 0)



  237. def getRandomMove(board, lastMove=None):
  238.     #随机移动方向
  239.     validMoves = [UP, DOWN, LEFT, RIGHT]
  240.    
  241.         #排除上下重复移动和向下不能移动选项
  242.     if lastMove == UP or not isValidMove(board, DOWN):   
  243.         validMoves.remove(DOWN)
  244.         #删除向下移动
  245.     if lastMove == DOWN or not isValidMove(board, UP):
  246.         validMoves.remove(UP)
  247.     if lastMove == LEFT or not isValidMove(board, RIGHT): #排除左右重复移动和向右不能移动选项
  248.         validMoves.remove(RIGHT)
  249.     if lastMove == RIGHT or not isValidMove(board, LEFT):
  250.         validMoves.remove(LEFT)
  251.         
  252.     #从剩余移动列表中返回随机移动
  253.     return random.choice(validMoves)



  254. def getLeftTopOfTile(tileX, tileY):
  255.     #数据坐标转化像素坐标
  256.     left = XMARGIN + (tileX * TILESIZE) + (tileX - 1)   #获取左边的像素坐标(tile_x-1)格子间的间距
  257.     top = YMARGIN + (tileY * TILESIZE) + (tileY - 1)    #获取头部坐标
  258.     return (left, top)
  259.     #返回像素left,top坐标



  260. def getSpotClicked(board, x, y):
  261.     #像素坐标转化为游戏板坐标
  262.     # from the x & y pixel coordinates, get the x & y board coordinates
  263.     for tileX in range(len(board)):
  264.         for tileY in range(len(board[0])):
  265.             left, top = getLeftTopOfTile(tileX, tileY)
  266.             tileRect = pygame.Rect(left, top, TILESIZE, TILESIZE)#创建坐标矩形
  267.             if tileRect.collidepoint(x, y):
  268.                 #判断像素坐标点是否在矩形内部
  269.                 return (tileX, tileY)
  270.                 #返回坐标数据
  271.     return (None, None)                                         



  272. def drawTile(tilex, tiley, number, adjx=0, adjy=0):
  273.     #绘制游戏方块
  274.     # 在板坐标tilex和tiley处绘制一个平铺,可以选择一些
  275.     # 像素超过(由adjx和adjy决定)
  276.    
  277.     left, top = getLeftTopOfTile(tilex, tiley)
  278.     pygame.draw.rect(DISPLAYSURF, TILECOLOR, (left + adjx, top + adjy, TILESIZE, TILESIZE))
  279.     textSurf = BASICFONT.render(str(number), True, TEXTCOLOR)#创建文字图层
  280.     textRect = textSurf.get_rect()#创建文字矩形块
  281.     textRect.center = left + int(TILESIZE / 2) + adjx, top + int(TILESIZE / 2) + adjy#文字居中
  282.     DISPLAYSURF.blit(textSurf, textRect)#生成字体



  283. def makeText(text, color, bgcolor, top, left):
  284.     #创建字体对象
  285.     # 为某些文本创建Surface和Rect对象。
  286.     textSurf = BASICFONT.render(text, True, color, bgcolor)#创建文本
  287.     #定位文字矩形块
  288.     textRect = textSurf.get_rect()
  289.     textRect.topleft = (top, left)
  290.     return (textSurf, textRect)


  291. def drawBoard1(board, message):
  292.     #绘制画板
  293.    
  294.     DISPLAYSURF.blit(background1,(0,0))
  295.    
  296.     if message:
  297.         #如果有提示信息显示提示信息
  298.         textSurf, textRect = makeText(message, MESSAGECOLOR, BGCOLOR, 5, 5)
  299.         #获取文本对象和定位对象
  300.         DISPLAYSURF.blit(textSurf, textRect)
  301.         #显示消息

  302.     for tilex in range(len(board)):
  303.         #绘制方块
  304.         for tiley in range(len(board[0])):
  305.             if board[tilex][tiley]:
  306.                 drawTile(tilex, tiley, board[tilex][tiley])
  307.     #绘制边框
  308.     left, top = getLeftTopOfTile(0, 0)
  309.     width = BOARDWIDTH * TILESIZE
  310.     height = BOARDHEIGHT * TILESIZE
  311.     pygame.draw.rect(DISPLAYSURF, BORDERCOLOR, (left - 5, top - 5, width + 11, height + 11), 4)
  312.    
  313.    

  314. def slideAnimation1(board, direction, message, animationSpeed):
  315.     #绘制滑动动画
  316.     # Note: This function does not check if the move is valid.

  317.     blankx, blanky = getBlankPosition(board)
  318.     if direction == UP:
  319.         movex = blankx
  320.         movey = blanky + 1
  321.     elif direction == DOWN:
  322.         movex = blankx
  323.         movey = blanky - 1
  324.     elif direction == LEFT:
  325.         movex = blankx + 1
  326.         movey = blanky
  327.     elif direction == RIGHT:
  328.         movex = blankx - 1
  329.         movey = blanky

  330.     # prepare the base surface
  331.     drawBoard(board, message)
  332.     #绘制画板
  333.     baseSurf = DISPLAYSURF.copy()
  334.     #复制一个新的窗口对象
  335.     # draw a blank space over the moving tile on the baseSurf Surface.
  336.     moveLeft, moveTop = getLeftTopOfTile(movex, movey)
  337.     #绘制空白区(这时候有2块空白区域)
  338.     pygame.draw.rect(baseSurf, BGCOLOR, (moveLeft, moveTop, TILESIZE, TILESIZE))


  339. def drawBoard(board, message):
  340.     #绘制画板
  341.    
  342.     DISPLAYSURF.blit(background1,(0,0))
  343.    
  344.     if message:
  345.         #如果有提示信息显示提示信息
  346.         textSurf, textRect = makeText(message, MESSAGECOLOR, BGCOLOR, 5,210)
  347.         #获取文本对象和定位对象
  348.         DISPLAYSURF.blit(textSurf, textRect)
  349.         #显示消息
  350.         textSurf, textRect = makeText('You can press exc to launch the game.', MESSAGECOLOR, BGCOLOR, 5,5)
  351.         #告知退出方法
  352.         DISPLAYSURF.blit(textSurf, textRect)
  353.         textSurf, textRect = makeText('Press the Music to turn on the music.', MESSAGECOLOR, BGCOLOR, 5,30)
  354.         DISPLAYSURF.blit(textSurf, textRect)
  355.         textSurf, textRect = makeText('Press Music Stop to pause music.', MESSAGECOLOR, BGCOLOR, 5,60)
  356.         DISPLAYSURF.blit(textSurf, textRect)
  357.         textSurf, textRect = makeText('You can restart a game through New Game.', MESSAGECOLOR, BGCOLOR, 5,120)
  358.         DISPLAYSURF.blit(textSurf, textRect)
  359.         textSurf, textRect = makeText('You can use Solve to help you achieve your goals.', MESSAGECOLOR, BGCOLOR, 5,150)
  360.         DISPLAYSURF.blit(textSurf, textRect)
  361.         textSurf, textRect = makeText('You can cancel all your moves via Reset.', MESSAGECOLOR, BGCOLOR, 5,90)
  362.         DISPLAYSURF.blit(textSurf, textRect)
  363.         textSurf, textRect = makeText('I hope you can have a good time.', MESSAGECOLOR, BGCOLOR, 5,180)
  364.         DISPLAYSURF.blit(textSurf, textRect)

  365.     for tilex in range(len(board)):
  366.         #绘制方块
  367.         for tiley in range(len(board[0])):
  368.             if board[tilex][tiley]:
  369.                 drawTile(tilex, tiley, board[tilex][tiley])
  370.     #绘制边框
  371.     left, top = getLeftTopOfTile(0, 0)
  372.     width = BOARDWIDTH * TILESIZE
  373.     height = BOARDHEIGHT * TILESIZE
  374.     pygame.draw.rect(DISPLAYSURF, BORDERCOLOR, (left - 5, top - 5, width + 11, height + 11), 4)
  375.     #绘制按钮
  376.     DISPLAYSURF.blit(RESET_SURF, RESET_RECT)
  377.     DISPLAYSURF.blit(NEW_SURF, NEW_RECT)
  378.     DISPLAYSURF.blit(SOLVE_SURF, SOLVE_RECT)
  379.     DISPLAYSURF.blit(MS_SURF, MS_RECT)
  380.     DISPLAYSURF.blit(Music_SURF, Music_RECT)
  381.     #DISPLAYSURF.blit(CH_SURF, CH_RECT)
  382.    


  383. def slideAnimation(board, direction, message, animationSpeed):
  384.     #绘制滑动动画
  385.     # Note: This function does not check if the move is valid.

  386.     blankx, blanky = getBlankPosition(board)
  387.     if direction == UP:
  388.         movex = blankx
  389.         movey = blanky + 1
  390.     elif direction == DOWN:
  391.         movex = blankx
  392.         movey = blanky - 1
  393.     elif direction == LEFT:
  394.         movex = blankx + 1
  395.         movey = blanky
  396.     elif direction == RIGHT:
  397.         movex = blankx - 1
  398.         movey = blanky

  399.     # prepare the base surface
  400.     drawBoard(board, message)
  401.     #绘制画板
  402.     baseSurf = DISPLAYSURF.copy()
  403.     #复制一个新的窗口对象
  404.     # draw a blank space over the moving tile on the baseSurf Surface.
  405.     moveLeft, moveTop = getLeftTopOfTile(movex, movey)
  406.     #绘制空白区(这时候有2块空白区域)
  407.     pygame.draw.rect(baseSurf, BGCOLOR, (moveLeft, moveTop, TILESIZE, TILESIZE))
  408.     #绘制滑动效果
  409.     for i in range(0, TILESIZE, animationSpeed):
  410.         #animation_speed步长偏移速度,每次循环后方块的位置向指定方向移动
  411.         # animate the tile sliding over
  412.         checkForQuit()
  413.         DISPLAYSURF.blit(baseSurf, (0, 0))
  414.         if direction == UP:
  415.             drawTile(movex, movey, board[movex][movey], 0, -i)# x不动,y轴向上偏移
  416.         if direction == DOWN:
  417.             drawTile(movex, movey, board[movex][movey], 0, i) # x不动,y轴向下偏移
  418.         if direction == LEFT:
  419.             drawTile(movex, movey, board[movex][movey], -i, 0)# x不动,y轴向左偏移
  420.         if direction == RIGHT:
  421.             drawTile(movex, movey, board[movex][movey], i, 0) # x不动,y轴向右偏移

  422.         pygame.display.update()
  423.         FPSCLOCK.tick(FPS)


  424. def generateNewPuzzle(numSlides):
  425.     #重新开始游戏
  426.     # From a starting configuration, make numSlides number of moves (and
  427.     # animate these moves).
  428.    
  429.     sequence = []#移动数据
  430.     board = getStartingBoard()#重新生成游戏数据
  431.     drawBoard(board, '')#显示开始画板
  432.     pygame.display.update()
  433.     pygame.time.wait(500) # 等待500毫秒
  434.     lastMove = None
  435.     for i in range(numSlides):#执行移动打乱游戏数据
  436.         move = getRandomMove(board, lastMove)#获取随机移动方向
  437.         slideAnimation(board, move, 'Generating new game...', animationSpeed=int(TILESIZE / 3))
  438.         makeMove(board, move)#数据坐标移动
  439.         sequence.append(move)#记录移动信息
  440.         lastMove = move
  441.     return (board, sequence)


  442. def resetAnimation(board, allMoves):
  443.     #重置步骤
  444.     revAllMoves = allMoves[:] # gets a copy of the list
  445.     revAllMoves.reverse()

  446.     for move in revAllMoves:#反转移动方向,反向移动重置
  447.         if move == UP:
  448.             oppositeMove = DOWN
  449.         elif move == DOWN:
  450.             oppositeMove = UP
  451.         elif move == RIGHT:
  452.             oppositeMove = LEFT
  453.         elif move == LEFT:
  454.             oppositeMove = RIGHT
  455.         slideAnimation(board, oppositeMove, '', animationSpeed=int(TILESIZE / 2))#执行移动动画
  456.         makeMove(board, oppositeMove)#数据移动方块


  457. if __name__ == '__main__':
  458.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 21:01:13 | 显示全部楼层
你有没有把图片等一到打包好的文件夹里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 21:01:47 | 显示全部楼层
如果有的话那应该就是pygame的问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 14:07:06 | 显示全部楼层
Robot_Steve 发表于 2020-3-8 21:01
如果有的话那应该就是pygame的问题。

有的,不过pygame能有什么问题,我还让别人帮我试试都是不可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 16:23:59 | 显示全部楼层
你的音乐和图片是不是放在和 .exe 文件放在一个文件夹里了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-14 15:28:21 | 显示全部楼层
人杰地灵 发表于 2020-3-11 14:07
有的,不过pygame能有什么问题,我还让别人帮我试试都是不可以

比如说如果字体设置如果为 None 等...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 09:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表