Python制作当年第一款手机游戏-贪吃蛇游戏(练习)

数据分析 同时被 3 个专栏收录
359 篇文章 4 订阅
360 篇文章 9 订阅
357 篇文章 11 订阅

前言:

文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的。

据说是贪吃蛇游戏是1976年,Gremlin公司推出的经典街机游戏,那我们今天用Python制作的这个贪吃蛇小游戏是一个像素版的,虽然简陋,但还是可以玩起来的

image

我们主要要做的内容:

  • 创建游戏窗口
  • 绘制贪吃蛇与食物
  • 蛇吃食物

贪吃蛇的棋盘模型:

image

image

现在就开始我们的代码,首先,还是导入模块:

`import` `pygame`

`import` `random`

`import` `copy`

|

1. 创建游戏窗口

1.1 游戏初始化

|

`pygame.init()`

`clock` `=` `pygame.time.Clock()  ``# 设置游戏时钟`

`pygame.display.set_caption(``"贪吃蛇-解答、源码、相关资料可私信我"``)  ``# 初始化标题`

`screen` `=` `pygame.display.set_mode((``500``,` `500``))  ``# 初始化窗口 窗体的大小为 500  500`

|

1.2 初始化蛇的位置 蛇的长度 10 10 也就是蛇的 X Y 坐标

|

1

|

`snake_list` `=` `[[``10``,` `10``]]`

|

首先设置蛇的一个运行方向 接下来判断键盘事件在决定蛇的运行方向
蛇可以运行起来了,那么接下来就是,吃食物增加自己的长度和不吃食物在不同的位置显示。对于新手小白想更轻松的学好Python基础,Python爬虫,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,架下我尉(同英): 2763177065 【教程/工具/方法/解疑】

初始小蛇方向:

|

`move_up` `=` `False`

`move_down` `=` `False`

`move_left` `=` `False`

`move_right` `=` `True`

|

1.3 初始化食物的位置

|

`x` `=` `random.randint(``10``,` `490``)`

`y` `=` `random.randint(``10``,` `490``)`

`food_point` `=` `[x, y]`

|

1.4 开启游戏循环

|

`running` `=` `True`

`while` `running:`

`# 游戏时钟 刷新频率`

`clock.tick(``20``)`

|

1.5 填充背景为白色

|

`screen.fill([``255``,` `255``,` `255``])`

 |

1.6 绘制背景

|

`for` `x` `in` `range``(``0``,` `501``,` `10``):`

`pygame.draw.line(screen, (``195``,` `197``,` `199``), (x,` `0``), (x,` `500``),` `1``)`

`pygame.draw.line(screen, (``195``,` `197``,` `199``), (``0``, x), (``500``, x),` `1``)`

`food_rect` `=` `pygame.draw.circle(screen, [``255``,` `0``,` `0``], food_point,` `15``,` `0``)`

 

|

image

1.7绘制蛇

|

`snake_rect` `=` `[]`

`for` `pos` `in` `snake_list:`

`# 1.7.1 绘制蛇的身子`

`snake_rect.append(pygame.draw.circle(screen, [``255``,` `0``,` `0``], pos,` `5``,` `0``))`

|

image

2. 绘制贪吃蛇与食物

2.1 获取蛇的长度,移动蛇的身子

`pos` `=` `len``(snake_list)` `-` `1`

`while` `pos >` `0``:`

`snake_list[pos]` `=` `copy.deepcopy(snake_list[pos` `-` `1``])`

`pos` `-``=` `1`

|

2.2 更改蛇头位置

`if` `move_up:`

`snake_list[pos][``1``]` `-``=` `10`

`if` `snake_list[pos][``1``] <` `0``:`

`snake_list[pos][``1``]` `=` `500`

`if` `move_down:`

`snake_list[pos][``1``]` `+``=` `10`

`if` `snake_list[pos][``1``] >` `500``:`

`snake_list[pos][``1``]` `=` `0`

`if` `move_left:`

`snake_list[pos][``0``]` `-``=` `10`

`if` `snake_list[pos][``0``] <` `0``:`

`snake_list[pos][``0``]` `=` `500`

`if` `move_right:`

`snake_list[pos][``0``]` `+``=` `10`

`if` `snake_list[pos][``0``] >` `500``:`

`snake_list[pos][``0``]` `=` `0`

 |

2.3 键盘控制移动职位

`for` `event` `in` `pygame.event.get():`

`# print(event)`

`# 判断按下的按键`

`if` `event.``type` `=``=` `pygame.KEYDOWN:`

`# 上键`

`if` `event.key` `=``=` `pygame.K_UP:`

`move_up` `=` `True`

`move_down` `=` `False`

`move_left` `=` `False`

`move_right` `=` `False`

`# 下键`

`if` `event.key` `=``=` `pygame.K_DOWN:`

`move_up` `=` `False`

`move_down` `=` `True`

`move_left` `=` `False`

`move_right` `=` `False`

`# 左键`

`if` `event.key` `=``=` `pygame.K_LEFT:`

`move_up` `=` `False`

`move_down` `=` `False`

`move_left` `=` `True`

`move_right` `=` `False`

`# 右键`

`if` `event.key` `=``=` `pygame.K_RIGHT:`

`move_up` `=` `False`

`move_down` `=` `False`

`move_left` `=` `False`

`move_right` `=` `True`

 |

2.4 获取蛇的长度,移动蛇的身子

|

`pos` `=` `len``(snake_list)` `-` `1`

`while` `pos >` `0``:`

`snake_list[pos]` `=` `copy.deepcopy(snake_list[pos` `-` `1``])`

`pos` `-``=` `1`

|

image

3. 蛇吃食物

3.1 碰撞检测 如果蛇吃掉食物

`if` `food_rect.collidepoint(pos):`

`# 贪吃蛇吃掉食物`

`snake_list.append(food_point)`

`# 重置食物位置`

`food_point` `=` `[random.randint(``10``,` `490``), random.randint(``10``,` `490``)]`

`food_rect` `=` `pygame.draw.circle(screen, [``255``,` `0``,` `0``], food_point,` `15``,` `0``)`

`break`

 |

3.2 如果蛇吃掉了自己

 | 

`head_rect` `=` `snake_rect[``0``]`

`count` `=` `len``(snake_rect)`

`while` `count >` `1``:`

`if` `head_rect.colliderect(snake_rect[count` `-` `1``]):`

`running` `=` `False`

`count` `-``=` `1`

`pygame.display.update()`

|

image

到此这篇关于Python制作当年第一款手机游戏-贪吃蛇游戏(练习)的文章就介绍到这了,更多相关Python制 手机游戏-贪吃蛇游戏内容请搜索python教程入门学习以前的文章或继续浏览下面的相关文章希望大家以后多多支持python教程入门学习!

评论5
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

梦子mengy7762

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值