Python游戏开发pygame模块,Python实现吃豆人,儿时的回忆
老规矩,先上效果图
这是一个吃豆人的小游戏。我们8090后这一代人肯定会碰到过。黄点是我们自己,红点就是怪物们。这是最原始版的电子游戏。
然后我们可以在随便一个地方新建一个游戏代码,利用这个包的代码,实现自己的游戏逻辑。
1导入模块
from random import choice
from turtle import *
from freegames import floor, vector
复制代码
2做一些初始化
state = {'score': 0}
path = Turtle(visible=False)
writer = Turtle(visible=False)
aim = vector(5, 0)
pacman = vector(-40, -80)
ghosts = [[vector(-180, 160), vector(5, 0)],[vector(-180, -160), vector(0, 5)],[vector(100, 160), vector(0, -5)],[vector(100, -160), vector(-5, 0)],
]
tiles = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0,0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0,0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0,0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
]
复制代码
这里面包括了分数,路径,吃豆人的位置,地图场景,幽灵的路径。
3吃豆人的移动操作
onkey(lambda: change(5, 0), 'Right')
onkey(lambda: change(-5, 0), 'Left')
onkey(lambda: change(0, 5), 'Up')
onkey(lambda: change(0, -5), 'Down')
复制代码
4幽灵的移动操作
def move():"Move pacman and all ghosts."writer.undo()writer.write(state['score'])clear()if valid(pacman + aim):pacman.move(aim)index = offset(pacman)if tiles[index] == 1:tiles[index] = 2state['score'] += 1x = (index % 20) * 20 - 200y = 180 - (index // 20) * 20square(x, y)up()goto(pacman.x + 10, pacman.y + 10)dot(20, 'yellow')for point, course in ghosts:if valid(point + course):point.move(course)else:options = [vector(5, 0),vector(-5, 0),vector(0, 5),vector(0, -5),]plan = choice(options)course.x = plan.xcourse.y = plan.yup()goto(point.x + 10, point.y + 10)dot(20, 'red')update()for point, course in ghosts:if abs(pacman - point) < 20:returnontimer(move, 100)
复制代码
有需要拿完整源码的话,请移步到公众号:诗一样的代码。既然进来了,小伙伴点个赞再走呗。
Python游戏开发pygame模块,Python实现吃豆人,儿时的回忆相关推荐
- Python游戏开发pygame模块,Python实现球球碰撞小游戏
相信大家在初中电脑课上都偷偷玩过 Flash 游戏--是男人就坚持 100 秒,在游戏中无数的小球随机运动,玩家用鼠标控制大球,当大球碰撞到小球后,游戏结束,显示坚持的时间.今天我们一起来开发这个小游 ...
- TurnipBit开发板DIY呼吸的吃豆人教程实例
2019独角兽企业重金招聘Python工程师标准>>> 转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) ...
- 【Python游戏】pygame模块制作飞机大战、贪吃蛇(多模式)含源码
pygame模块制作飞机大战.贪吃蛇(多版本) 本章意在学习pygame模块以及巩固python语法. 若有需请转去个人github:https://github.com/onlyhyl/pyGame
- 小游戏之欢乐吃豆人canvas重制版
前言 <Pac-Man>上一次已经写过了,但是用vue写的,整体下来能玩,但是自己感觉不算流畅,而且游戏计算方面也有点欠缺,感兴趣的可看我上一篇文章.这次我又卷土重来,在三四天内用空闲时间 ...
- Java语言制作吃豆人游戏
(此项目源码已上传至Github网站,网址为GitHub - Ran-a/Pac-man-yar) 1 游戏界面 游戏的角色分别是追赶者和吃豆人,玩家使用方向键来控制吃豆人的运动方向并吃食物,将食物 ...
- 吃豆人游戏-第12届蓝桥杯Scratch选拔赛真题精选
[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第79讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...
- 吃豆人游戏【附源码】
吃豆游戏[附源码] 吃豆人游戏[附源码] 我的网站已经上线了 http://javapub.net.cn/ 博主介绍:
- 吃豆人 html5 倒计时,ChinaJoy开展倒计时,回忆杀吃豆人ip摩擦康迪克水杯溅火花...
ChinaJoy开展倒计时,回忆杀吃豆人ip摩擦contigo水杯溅火花 2020年7月31日-8月3日~ 游戏迷和科技迷们的狂欢趴又来啦! 今年以"科技·引领数字娱乐新浪潮"为主 ...
- Python游戏开发,Python实现贪吃蛇小游戏与吃豆豆 附带源码
开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 贪吃蛇 ...
最新文章
- 【OpenCV 4开发详解】QR二维码检测
- 浅析药品生产偏差管理进展及改进措施
- zookeeper源码
- .NET 程序测试 Java 项目 log4j2 是否存在远程代码执行漏洞
- key 和secret_Java Secret:加载和卸载静态字段
- 【POJ - 2373】Dividing the Path(单调队列优化dp)
- rails 开发随手记 9
- 中国上市公司2001-2020年历史股票数据下载(获得方式见网页 http://yanzw.cn )
- 移动端app 文档交接模版
- Vista Ultimate X64 绝对正宗的激活工具
- 新技术预研Android
- Android事件分发简单介绍
- 指数计算机在线使用,ffmi(在线ffmi指数计算器)
- 中值滤波Median filtering
- 程序员955不加班名单
- 计算机组成原理 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?...
- Email清教徒十大手则
- java上传文件限速_java HttpClient 上传限速(避免宽带占用过高)
- spring-boot sigar的使用
- 1125和855最小公倍数C语言,备战1125联考 | 巧用“最小公倍数”,计算题1秒变简单...
热门文章
- pandas使用isna函数和any函数计算返回dataframe中包含缺失值的数据行(rows with missing values in dataframe)
- R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)
- FileNotFoundError: [Errno 2] No such file or directory: _MEI138162\\astor\\VERSION‘
- R语言dplyr包移除dataframe数据行实战(Remove Rows):按照条件移除数据行、按照索引移除数据行、删除包含NA值的所有数据行、删除具体列包含NA值的数据行
- python使用imbalanced-learn的NeighbourhoodCleaningRule方法进行下采样处理数据不平衡问题
- python-requests官网_requests使用心得
- ML基石_10_LogisticRegression
- 3Blue1Brown深度学习笔记 深度学习之神经网络的结构 Part 1 ver 2.0
- Oxford Nanopore碱基识别(basecalling)软件性能大比拼
- R中的概率分布函数及可视化