当前位置:   article > 正文

基于pygame的贪吃蛇小游戏搭建与开发mac_mac制作python贪吃蛇exe

mac制作python贪吃蛇exe

前言:

前几天了解了一下pygame,他是基于python的一个库,我们可以导入使用。下面以贪吃蛇为例子演示在Mac环境下的安装。首次搭建需要安装pygame,第二次只需要启动虚拟环境venv即可。在下面的安装步骤中有安装虚拟环境的步骤,虚拟环境可创建可不创建,创建虚拟环境的好处是可以将项目环境进行隔离,隔离完以后在虚拟环境下通过pip安装的不会在外部机器环境中出现,这样不影响其他的项目开发,做到每个项目都是独立的,对于大型多项目开发很有必要,只有这一个项目的话没必要,不过也可以安装,安装过程很简单,python -m venv .   一行命令即可。

首次搭建:

启动终端

1、查看 python、pip 是否安装以及版本

  1. python --version
  2. pip3 --version


当出现版本号的时候即安装成功且正常(正常情况下安装完 python 即自动安装 pip)

 

2、建立项目文件夹(如 pythonproject),可跳过,直接执行 第三步

打开 cmd,执行:

 cd Documents/Project/PythonProject/pygametest


cmd 下进入文件夹执行以下命令

  1. python3 -m venv .
  2. source bin/activate
  3. #(推出命令 deactivate)

 

3、进入虚拟环境以后,安装 pygame

  1. pip3 install pygame
  2. #若安装失败,使用以下命令
  3. pip3 install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple/

 

 

4、查看是否安装成功

  1. pip3 list
  2. #若列出pygame及版本则证明安装成功

 

5、cmd 下创建文件

echo >> test.py

6、将代码复制到 test.py

7、执行 python 文件,cmd 下执行

python3 test.py

 

第二次使用启动命令:

  1. 终端下进入项目文件夹
  2. cd ~/Documents/Project/PythonProject/pygametest
  3. source bin/activate
  4. #启动虚拟环境
  5. python main.py

源码:

  1. import pygame,sys,time,random
  2. from pygame.locals import *
  3. redColour = pygame.Color(255,0,0)
  4. blackColour = pygame.Color(0,0,0)
  5. whiteColour = pygame.Color(255,255,255)
  6. greyColour = pygame.Color(150,150,150)
  7. def gameOver(playSurface):
  8. gameOverFont = pygame.font.Font('arial.ttf',72)
  9. gameOverSurf = gameOverFont.render('Game Over', True, greyColour)
  10. gameOverRect = gameOverSurf.get_rect()
  11. gameOverRect.midtop = (320, 10)
  12. playSurface.blit(gameOverSurf, gameOverRect)
  13. pygame.display.flip()
  14. time.sleep(5)
  15. pygame.quit()
  16. sys.exit()
  17. def main():
  18. pygame.init()
  19. fpsClock = pygame.time.Clock()
  20. playSurface = pygame.display.set_mode((640,480))
  21. pygame.display.set_caption('Raspberry Snake')
  22. snakePosition = [100,100]
  23. snakeSegments = [[100,100],[80,100],[60,100]]
  24. raspberryPosition = [300,300]
  25. raspberrySpawned = 1
  26. direction = 'right'
  27. changeDirection = direction
  28. while True:
  29. for event in pygame.event.get():
  30. if event.type == QUIT:
  31. pygame.quit()
  32. sys.exit()
  33. elif event.type == KEYDOWN:
  34. if event.key == K_RIGHT or event.key == ord('d'):
  35. changeDirection = 'right'
  36. if event.key == K_LEFT or event.key == ord('a'):
  37. changeDirection = 'left'
  38. if event.key == K_UP or event.key == ord('w'):
  39. changeDirection = 'up'
  40. if event.key == K_DOWN or event.key == ord('s'):
  41. changeDirection = 'down'
  42. if event.key == K_ESCAPE:
  43. pygame.event.post(pygame.event.Event(QUIT))
  44. if changeDirection == 'right' and not direction == 'left':
  45. direction = changeDirection
  46. if changeDirection == 'left' and not direction == 'right':
  47. direction = changeDirection
  48. if changeDirection == 'up' and not direction == 'down':
  49. direction = changeDirection
  50. if changeDirection == 'down' and not direction == 'up':
  51. direction = changeDirection
  52. if direction == 'right':
  53. snakePosition[0] += 20
  54. if direction == 'left':
  55. snakePosition[0] -= 20
  56. if direction == 'up':
  57. snakePosition[1] -= 20
  58. if direction == 'down':
  59. snakePosition[1] += 20
  60. snakeSegments.insert(0,list(snakePosition))
  61. if snakePosition[0] == raspberryPosition[0] and snakePosition[1] == raspberryPosition[1]:
  62. raspberrySpawned = 0
  63. else:
  64. snakeSegments.pop()
  65. if raspberrySpawned == 0:
  66. x = random.randrange(1,32)
  67. y = random.randrange(1,24)
  68. raspberryPosition = [int(x*20),int(y*20)]
  69. raspberrySpawned = 1
  70. playSurface.fill(blackColour)
  71. for position in snakeSegments:
  72. pygame.draw.rect(playSurface,whiteColour,Rect(position[0],position[1],20,20))
  73. pygame.draw.rect(playSurface,redColour,Rect(raspberryPosition[0], raspberryPosition[1],20,20))
  74. pygame.display.flip()
  75. if snakePosition[0] > 620 or snakePosition[0] < 0:
  76. gameOver(playSurface)
  77. if snakePosition[1] > 460 or snakePosition[1] < 0:
  78. for snakeBody in snakeSegments[1:]:
  79. if snakePosition[0] == snakeBody[0] and snakePosition[1] == snakeBody[1]:
  80. gameOver(playSurface)
  81. fpsClock.tick(5)
  82. if __name__ == "__main__":
  83. main()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/98623
推荐阅读
相关标签
  

闽ICP备14008679号