亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python加pyGame實現的簡單拼圖游戲實例

2020-01-04 19:15:38
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了Python加pyGame實現的簡單拼圖游戲,以一個完整實例形式分析了pyGame模塊操作圖片的相關技巧,需要的朋友可以參考下

本文實例講述了Python加pyGame實現的簡單拼圖游戲。分享給大家供大家參考。具體實現方法如下:

 

 
  1. import pygame, sys, random 
  2. from pygame.locals import * 
  3. # 一些常量 
  4. WINDOWWIDTH = 500 
  5. WINDOWHEIGHT = 500 
  6. BACKGROUNDCOLOR = (255255255
  7. BLUE = (00255
  8. BLACK = (000
  9. FPS = 40 
  10. VHNUMS = 3 
  11. CELLNUMS = VHNUMS*VHNUMS 
  12. MAXRANDTIME = 100 
  13. # 退出 
  14. def terminate(): 
  15. pygame.quit() 
  16. sys.exit() 
  17. # 隨機生成游戲盤面 
  18. def newGameBoard(): 
  19. board = [] 
  20. for i in range(CELLNUMS): 
  21. board.append(i) 
  22. blackCell = CELLNUMS-1 
  23. board[blackCell] = -1 
  24. for i in range(MAXRANDTIME): 
  25. direction = random.randint(03
  26. if (direction == 0): 
  27. blackCell = moveLeft(board, blackCell) 
  28. elif (direction == 1): 
  29. blackCell = moveRight(board, blackCell) 
  30. elif (direction == 2): 
  31. blackCell = moveUp(board, blackCell) 
  32. elif (direction == 3): 
  33. blackCell = moveDown(board, blackCell) 
  34. return board, blackCell 
  35. # 若空白圖像塊不在最左邊,則將空白塊左邊的塊移動到空白塊位置  
  36. def moveRight(board, blackCell): 
  37. if blackCell % VHNUMS == 0
  38. return blackCell 
  39. board[blackCell-1], board[blackCell] = board[blackCell], board[blackCell-1
  40. return blackCell-1 
  41. # 若空白圖像塊不在最右邊,則將空白塊右邊的塊移動到空白塊位置  
  42. def moveLeft(board, blackCell): 
  43. if blackCell % VHNUMS == VHNUMS-1
  44. return blackCell 
  45. board[blackCell+1], board[blackCell] = board[blackCell], board[blackCell+1
  46. return blackCell+1 
  47. # 若空白圖像塊不在最上邊,則將空白塊上邊的塊移動到空白塊位置  
  48. def moveDown(board, blackCell): 
  49. if blackCell < VHNUMS: 
  50. return blackCell 
  51. board[blackCell-VHNUMS], board[blackCell] = board[blackCell], board[blackCell-VHNUMS] 
  52. return blackCell-VHNUMS 
  53. # 若空白圖像塊不在最下邊,則將空白塊下邊的塊移動到空白塊位置  
  54. def moveUp(board, blackCell): 
  55. if blackCell >= CELLNUMS-VHNUMS: 
  56. return blackCell 
  57. board[blackCell+VHNUMS], board[blackCell] = board[blackCell], board[blackCell+VHNUMS] 
  58. return blackCell+VHNUMS 
  59. # 是否完成 
  60. def isFinished(board, blackCell): 
  61. for i in range(CELLNUMS-1): 
  62. if board[i] != i: 
  63. return False 
  64. return True 
  65. # 初始化 
  66. pygame.init() 
  67. mainClock = pygame.time.Clock() 
  68. # 加載圖片 
  69. gameImage = pygame.image.load('pic.bmp'
  70. gameRect = gameImage.get_rect() 
  71. # 設置窗口 
  72. windowSurface = pygame.display.set_mode((gameRect.width, gameRect.height)) 
  73. pygame.display.set_caption('拼圖'
  74. cellWidth = int(gameRect.width / VHNUMS) 
  75. cellHeight = int(gameRect.height / VHNUMS) 
  76. finish = False 
  77. gameBoard, blackCell = newGameBoard() 
  78. # 游戲主循環 
  79. while True
  80. for event in pygame.event.get(): 
  81. if event.type == QUIT: 
  82. terminate() 
  83. if finish: 
  84. continue 
  85. if event.type == KEYDOWN: 
  86. if event.key == K_LEFT or event.key == ord('a'): 
  87. blackCell = moveLeft(gameBoard, blackCell) 
  88. if event.key == K_RIGHT or event.key == ord('d'): 
  89. blackCell = moveRight(gameBoard, blackCell) 
  90. if event.key == K_UP or event.key == ord('w'): 
  91. blackCell = moveUp(gameBoard, blackCell) 
  92. if event.key == K_DOWN or event.key == ord('s'): 
  93. blackCell = moveDown(gameBoard, blackCell) 
  94. if event.type == MOUSEBUTTONDOWN and event.button == 1
  95. x, y = pygame.mouse.get_pos() 
  96. col = int(x / cellWidth) 
  97. row = int(y / cellHeight) 
  98. index = col + row*VHNUMS 
  99. if (index == blackCell-1 or index == blackCell+1 or index == blackCell-VHNUMS or index == blackCell+VHNUMS): 
  100. gameBoard[blackCell], gameBoard[index] = gameBoard[index], gameBoard[blackCell] 
  101. blackCell = index 
  102. if (isFinished(gameBoard, blackCell)): 
  103. gameBoard[blackCell] = CELLNUMS-1 
  104. finish = True 
  105. windowSurface.fill(BACKGROUNDCOLOR) 
  106. for i in range(CELLNUMS): 
  107. rowDst = int(i / VHNUMS) 
  108. colDst = int(i % VHNUMS) 
  109. rectDst = pygame.Rect(colDst*cellWidth, rowDst*cellHeight, cellWidth, cellHeight) 
  110. if gameBoard[i] == -1
  111. continue 
  112. rowArea = int(gameBoard[i] / VHNUMS) 
  113. colArea = int(gameBoard[i] % VHNUMS) 
  114. rectArea = pygame.Rect(colArea*cellWidth, rowArea*cellHeight, cellWidth, cellHeight) 
  115. windowSurface.blit(gameImage, rectDst, rectArea) 
  116. for i in range(VHNUMS+1): 
  117. pygame.draw.line(windowSurface, BLACK, (i*cellWidth, 0), (i*cellWidth, gameRect.height)) 
  118. for i in range(VHNUMS+1): 
  119. pygame.draw.line(windowSurface, BLACK, (0, i*cellHeight), (gameRect.width, i*cellHeight)) 
  120. pygame.display.update() 
  121. mainClock.tick(FPS) 

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.日韩av.com| 日韩风俗一区 二区| 日韩欧美在线视频免费观看| 久久福利网址导航| 成人亲热视频网站| 人人做人人澡人人爽欧美| 亚洲欧美日韩中文视频| 久久久精品欧美| 北条麻妃一区二区在线观看| 日本欧美爱爱爱| 国产自产女人91一区在线观看| 亚洲国产欧美日韩精品| 午夜精品三级视频福利| 欧美超级乱淫片喷水| 国产不卡在线观看| 日韩av网址在线观看| 欧美在线一区二区视频| 8090成年在线看片午夜| 日韩精品在线视频观看| 欧美多人爱爱视频网站| 国产精品偷伦一区二区| 欧美亚洲另类激情另类| 精品亚洲一区二区三区在线观看| 亚洲欧美在线免费| 日韩免费在线看| 日韩中文在线中文网三级| 欧美在线视频观看免费网站| 国产激情久久久久| 国自产精品手机在线观看视频| 日韩精品亚洲视频| 久久久午夜视频| 欧美午夜激情视频| 久久视频免费观看| 亚洲电影av在线| 久久久999国产精品| 国产免费一区二区三区在线观看| 狠狠爱在线视频一区| 亚洲区中文字幕| 国产亚洲欧美日韩精品| 久久久中文字幕| 亚洲第一免费网站| 欧美一区二区三区精品电影| 日韩美女免费观看| 欧美主播福利视频| 日日骚av一区| 亚洲成**性毛茸茸| 综合网日日天干夜夜久久| 日韩久久精品成人| 国内精品一区二区三区四区| 亚洲欧洲一区二区三区久久| 97免费中文视频在线观看| 97精品在线视频| 成人免费看片视频| 国产国语刺激对白av不卡| 91av中文字幕| 中文字幕精品久久| 国产极品精品在线观看| 国产精品视频一区二区三区四| 亚洲国产精品久久91精品| 久久亚洲电影天堂| 中文字幕亚洲欧美一区二区三区| 国产一区私人高清影院| 亚洲伊人久久大香线蕉av| 3344国产精品免费看| 国产精品扒开腿做爽爽爽男男| xxxx欧美18另类的高清| 久久色精品视频| 日本高清久久天堂| 福利精品视频在线| 日韩经典第一页| 日韩精品高清在线观看| 欧美多人乱p欧美4p久久| 色偷偷av亚洲男人的天堂| 国产日本欧美一区二区三区| 一区二区在线视频播放| 欧美性猛交xxxxx免费看| 国产精品专区第二| 欧美激情在线观看视频| 国产精品久久久亚洲| 欧美日韩激情美女| 中文字幕日本欧美| 国产91色在线免费| 国产精品网红福利| 亚洲第一中文字幕| 97香蕉久久夜色精品国产| 中文字幕久久精品| 久久久欧美精品| 久久av红桃一区二区小说| 久久国产精品久久精品| 久久久人成影片一区二区三区| 日韩中文字幕av| 成人乱人伦精品视频在线观看| 亚洲欧美一区二区激情| 亚洲九九九在线观看| 国产精品老牛影院在线观看| 亚洲精品小视频在线观看| 亚洲精品天天看| 亚洲国产高清高潮精品美女| 亚洲国内精品视频| 国产精品美腿一区在线看| 久久人91精品久久久久久不卡| 国产精品久久久久久久久久久久久| 亚洲成人久久久| 久久69精品久久久久久久电影好| 91精品国产电影| 91久久在线播放| 日韩中文字幕av| 欧美日韩视频免费播放| 久久香蕉精品香蕉| 国产玖玖精品视频| 日韩视频―中文字幕| 97色在线观看免费视频| 国产丝袜精品第一页| 色综合亚洲精品激情狠狠| 欧洲美女7788成人免费视频| 亚洲美女精品久久| 亚洲一区亚洲二区| 欧美亚洲视频在线看网址| 欧美成人高清视频| 亚洲欧美中文在线视频| 国产精品无av码在线观看| 亚洲第一网站免费视频| 久久久国产精品亚洲一区| 色哟哟亚洲精品一区二区| 97热在线精品视频在线观看| 欧美自拍视频在线| 国产成人午夜视频网址| 精品亚洲一区二区三区在线观看| 国产99久久久欧美黑人| 国产精品日韩av| 国产精品视频自拍| 色噜噜狠狠狠综合曰曰曰88av| 欧美在线一级va免费观看| 亚洲综合中文字幕68页| 都市激情亚洲色图| 久久久国产精彩视频美女艺术照福利| 日韩有码在线播放| 欧美黑人巨大xxx极品| 欧美精品情趣视频| 亚洲激情在线观看| 日本成人免费在线| 尤物tv国产一区| 欧美黑人狂野猛交老妇| 亚洲电影中文字幕| 亚洲视频在线免费观看| 亚洲国产日韩欧美在线图片| 亚洲加勒比久久88色综合| 韩国精品美女www爽爽爽视频| 久久综合伊人77777| 最新亚洲国产精品| 中文字幕国产精品| 亚洲精品www久久久| 久久久久久国产三级电影| 亚洲国产精品成人va在线观看| 久久99精品国产99久久6尤物| 秋霞成人午夜鲁丝一区二区三区| 欧美性在线观看| 97久久国产精品| 日韩精品中文字幕久久臀| 欧美电影在线观看完整版| 欧美成人在线网站| 久久免费视频在线观看| 亚洲人成啪啪网站| 亚洲精品98久久久久久中文字幕|