Python制作当年第一款手机游戏-贪吃蛇游戏(练习)
前言:
文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的。
据说是贪吃蛇游戏是1976
年,Gremlin
公司推出的经典街机游戏,那我们今天用Python
制作的这个贪吃蛇小游戏是一个像素版的,虽然简陋,但还是可以玩起来的
我们主要要做的内容:
- 创建游戏窗口
- 绘制贪吃蛇与食物
- 蛇吃食物
贪吃蛇的棋盘模型:
现在就开始我们的代码,首先,还是导入模块:
`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``)`
|
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``))`
|
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`
|
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()`
|
到此这篇关于Python制作当年第一款手机游戏-贪吃蛇游戏(练习)的文章就介绍到这了,更多相关Python制 手机游戏-贪吃蛇游戏内容请搜索python教程入门学习以前的文章或继续浏览下面的相关文章希望大家以后多多支持python教程入门学习!
Python制作当年第一款手机游戏-贪吃蛇游戏(练习)相关推荐
- Python制作当年第一款真正意义上的手机游戏——贪吃蛇游戏
前言 最近有很多的同学问,能不能用Python做出一个小游戏来,而且最好要讲清楚每一段干嘛是用来干嘛的 那行,今天将来讲解一下用Python pygame做一个贪吃蛇的小游戏 据说是贪吃蛇游戏是197 ...
- 用C语言制作一款多人贪吃蛇游戏
上学期学的C语言,寒假想用来做点好玩的东西而不是单纯应付考试,刚开始想到了贪吃蛇,最后做成了双贪吃蛇,双龙夺猪讲的是随着猪肉价格渐长,一条龙与一条蛇争夺猪肉的故事233333 代码使用了easyx图形 ...
- 【python实战】用pygame做个贪吃蛇游戏
嗨,大家好,我是一条. 告诉大家一个好消息,一条IT访问量突破20w,达到申请博客专家的条件.感谢大家的支持,一条会创作更多的优质内容. 为了让更多的人看到一条的分享,一条准备报名原力计划,报名条件是 ...
- python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
基于 pygame 设计贪吃蛇游戏 贪吃蛇游戏通过玩家控制蛇移动,不断吃到食物增长,直到碰到蛇身或边界游戏结束.其运行效果如下所示: 游戏开始时,先导入可能需要用到的包. import time im ...
- 贪吃蛇大作战代码java,贪吃蛇游戏,贪吃蛇java游戏代码讲解
贪吃蛇游戏,贪吃蛇java游戏代码讲解 来源:互联网 作者:佚名 时间:2020-06-06 贪吃蛇源代码.txt这世界上除了我谁都没资格陪在你身边. 听着,我允许你喜欢我.除了白头偕老,我们... ...
- 手机吞吃蛇游戏的设计与开发
为什么80%的码农都做不了架构师?>>> J2ME(Java 2 Micro Edition) 是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术. ...
- 原生JS实现贪吃蛇游戏
原生JS实现贪吃蛇游戏 贪吃蛇游戏(原生JavaScript) 贪吃蛇游戏思路分析 游戏思想: 面向对象的思想 三个js文件分别代表三个对象 三个对象相互独立,在HTML中控制全局 使用面向对象思想的 ...
- Python制作游戏 — 贪吃蛇
哈喽,我是小圆.我又来分享关于python制作的小游戏啦. 今天这个可是当年真正意义上的第一款手机游戏 - 贪吃蛇. ok,现在来讲解一下用python做这个游戏的所有步骤,超详解说 ! 据说是贪吃蛇 ...
- 程序员自学编程创立 GREE,推出世界上第一款手机社交游戏,白手起家成为亚洲最年轻的巨富...
作者 | 年素清 责编 | 王晓曼 出品 | 程序人生 (ID:coder _life) 田中良和(Yoshikazu Tanaka)是日本的IT首富,也是亚洲最年轻的白手起家型亿万富翁.他早年靠自学 ...
最新文章
- [导入]几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
- linux 增加 ip_conntrack_max 造成 内核内存问题
- 【算法】快速选择算法 ( 数组中找第 K 大元素 )
- [腾讯云]简单在腾讯云 CenTOS7.0 安装Nginx,Mysql(MariaDB),Memcache,解析PHP!
- 高效5步走,高速搭建Hadoop2伪分布环境
- SpringBoot高级-缓存-搭建redis环境测试
- 会员连锁配置以及金额走向
- 【JSP】JSP的四种作用域
- 【JVM】JVM指令集总结
- c语言 链表首部插入数据,在链表中插入数据!求助!!!
- 提到强化学习只知道AlphaGo?其实,RL在工业界还有这些应用
- Scheme学习系列二:调用C代码
- CC2530的硬件功能及实例讲解
- Laravel5.5前后台分离
- 如何让iPhone桌面简洁又不俗气?
- 干货 | PCB设计中焊盘的种类和设计标准
- InfluxDB常用函数
- 摄魄人心的独白,静静聆听,你会感悟很多
- LiveNVR监控流媒体Onvif/RTSP功能支持海康摄像头通过海康SDK的方式接入直播观看录像回看预置位操作
- 手机损坏的数据导出方法
热门文章
- 只需25美元,算力提升3倍:树莓派4计算模组上线
- SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具
- 图文并茂!60页PPT《快速入门python数据分析路线》(附链接)
- 这届清华新生太难了吧!C++作业难到上热搜,特奖都说做不了,大厂猎头已密切关注...
- 刚刚!华为突然传来这一消息,我想辞职了
- RESTful之限流Throttling
- python中读取文件过程中seek()函数的使用
- kalilinux安装VMware Tools(水文)
- Linux期末复习题库(3)
- 任何社区,只要能影响他人成长的人,都可以成为敏捷个人的荣誉会员