老规矩,先上效果图

这是一个吃豆人的小游戏。我们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实现吃豆人,儿时的回忆相关推荐

  1. Python游戏开发pygame模块,Python实现球球碰撞小游戏

    相信大家在初中电脑课上都偷偷玩过 Flash 游戏--是男人就坚持 100 秒,在游戏中无数的小球随机运动,玩家用鼠标控制大球,当大球碰撞到小球后,游戏结束,显示坚持的时间.今天我们一起来开发这个小游 ...

  2. TurnipBit开发板DIY呼吸的吃豆人教程实例

    2019独角兽企业重金招聘Python工程师标准>>> 转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) ...

  3. 【Python游戏】pygame模块制作飞机大战、贪吃蛇(多模式)含源码

    pygame模块制作飞机大战.贪吃蛇(多版本) 本章意在学习pygame模块以及巩固python语法. 若有需请转去个人github:https://github.com/onlyhyl/pyGame

  4. 小游戏之欢乐吃豆人canvas重制版

    前言 <Pac-Man>上一次已经写过了,但是用vue写的,整体下来能玩,但是自己感觉不算流畅,而且游戏计算方面也有点欠缺,感兴趣的可看我上一篇文章.这次我又卷土重来,在三四天内用空闲时间 ...

  5. Java语言制作吃豆人游戏

    (此项目源码已上传至Github网站,网址为GitHub - Ran-a/Pac-man-yar) 1  游戏界面 游戏的角色分别是追赶者和吃豆人,玩家使用方向键来控制吃豆人的运动方向并吃食物,将食物 ...

  6. 吃豆人游戏-第12届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第79讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  7. 吃豆人游戏【附源码】

    吃豆游戏[附源码] 吃豆人游戏[附源码] 我的网站已经上线了 http://javapub.net.cn/ 博主介绍:

  8. 吃豆人 html5 倒计时,ChinaJoy开展倒计时,回忆杀吃豆人ip摩擦康迪克水杯溅火花...

    ChinaJoy开展倒计时,回忆杀吃豆人ip摩擦contigo水杯溅火花 2020年7月31日-8月3日~ 游戏迷和科技迷们的狂欢趴又来啦! 今年以"科技·引领数字娱乐新浪潮"为主 ...

  9. Python游戏开发,Python实现贪吃蛇小游戏与吃豆豆 附带源码

    开发工具 Python版本: 3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 贪吃蛇 ...

最新文章

  1. 【OpenCV 4开发详解】QR二维码检测
  2. 浅析药品生产偏差管理进展及改进措施
  3. zookeeper源码
  4. .NET 程序测试 Java 项目 log4j2 是否存在远程代码执行漏洞
  5. key 和secret_Java Secret:加载和卸载静态字段
  6. 【POJ - 2373】Dividing the Path(单调队列优化dp)
  7. rails 开发随手记 9
  8. 中国上市公司2001-2020年历史股票数据下载(获得方式见网页 http://yanzw.cn )
  9. 移动端app 文档交接模版
  10. Vista Ultimate X64 绝对正宗的激活工具
  11. 新技术预研Android
  12. Android事件分发简单介绍
  13. 指数计算机在线使用,ffmi(在线ffmi指数计算器)
  14. 中值滤波Median filtering
  15. 程序员955不加班名单
  16. 计算机组成原理 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?...
  17. Email清教徒十大手则
  18. java上传文件限速_java HttpClient 上传限速(避免宽带占用过高)
  19. spring-boot sigar的使用
  20. 1125和855最小公倍数C语言,备战1125联考 | 巧用“最小公倍数”,计算题1秒变简单...

热门文章

  1. pandas使用isna函数和any函数计算返回dataframe中包含缺失值的数据行(rows with missing values in dataframe)
  2. R语言write.xlsx函数将数据写入Excel文件:写入Excel文件并自定义表单的名称、将数据写入Excel文件新的表单(sheet)中、将文件保存为xls文件格式(而不是xlsx)
  3. FileNotFoundError: [Errno 2] No such file or directory: _MEI138162\\astor\\VERSION‘
  4. R语言dplyr包移除dataframe数据行实战(Remove Rows):按照条件移除数据行、按照索引移除数据行、删除包含NA值的所有数据行、删除具体列包含NA值的数据行
  5. python使用imbalanced-learn的NeighbourhoodCleaningRule方法进行下采样处理数据不平衡问题
  6. python-requests官网_requests使用心得
  7. ML基石_10_LogisticRegression
  8. 3Blue1Brown深度学习笔记 深度学习之神经网络的结构 Part 1 ver 2.0
  9. Oxford Nanopore碱基识别(basecalling)软件性能大比拼
  10. R中的概率分布函数及可视化