用python做一个小游戏代码,用python制作一个小游戏

news2024/12/23 4:03:29

大家好,小编来为大家解答以下问题,如何用python编写一个简单的小游戏,用python做一个小游戏代码,今天让我们一起来看看吧!

今天呢,给大家展示一下Python有趣的小地方,展示给大家看看,我做的小游戏,是否有大家小时候的回忆呢。下面就废话不多说了,给大家展示一遍!感兴趣的小伙伴不懂也没事,可以下载一个PyCharm,跟着我的图片代码一起敲呀!

首先呢我们选择好开发工具 Python版本:3.6.4,相关的模板选择pygame模板,以及一些Python自带的模块。环境搭建也很简单,只需要安装Python并添加到环境变量,pip安装需要的相关模板即可。

逐步实现:

Step1:定义游戏精灵类

由于游戏涉及到碰撞测试,所以我们先来定义一些游戏精灵类,包括推箱子的人、箱子、墙和目标位置指示标记。

首先我们来定义一下推箱子的人这个精灵类:

他需要拥有可以移动的能力,这里设置了一个模拟移动的选择,是为了通过模拟移动判断它是否可以上、下、左、右移动。因为地图上的其他东西性质类型,所以我们把它们定义成同一个精灵类(其实性质都类似,但是感觉还是有必要区分一下人和物的):

其中箱子有用可以移动的能力,其它则不能移动。模拟移动选择的功能与之前类似。

Step2:定义游戏地图类

这里我们定义用一个游戏地图类,目的是用该类来创建任意的游戏地图。因此,该类应当可以增加并保存游戏元素(人、墙、箱子等),并在屏幕上把地图画出来。同时也应自带一个方法来判断此地图上的箱子是否已经送到了指定位置(这样子方便换关卡):

Step3:定义游戏界面类

游戏界面类负责解析levels文件夹下的游戏各关卡的地图文件,并利用游戏地图类创建并显示游戏地图:

同时因为游戏地图面积>游戏窗口界面,所以该类需要增加根据人物位置滚动游戏地图的功能:

Step4:定义某关的游戏主循环

主循环主要负责实例化游戏界面类,并根据按键检测的结果对游戏界面类进行一些操作:

其中人物移动的逻辑为:人物移动的目标为空白格,则人移动;若撞到箱子,箱子可以和人方向一样移动一格,则人和箱子均移动;其他情况人和箱子均无法移动。

Step5:定义游戏开始、切换和结束界面

做的比较简陋,直接拿源代码吧。

开始界面:

切换界面:

结束界面:

Step6:实现游戏主函数

把所有界面串起来就好了:

最后随手加了个背景音乐,应该问题不大。看懂的同学们就试着做做,没看懂的同学们可以直接照着代码敲就完了,运行之后就如图所示:

没人看懂的话欢迎大家评论去留言呀!或者私信我都可以,评论必回,私信必看,不错过任何一个认真学习的同学!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/850989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android复习(Android基础-四大组件)——Service与Activity通信

我们前面学会了启动和停止服务的方法,但是服务虽然是在活动里启动的,但是启动服务之后,活动与服务之间基本没什么关系了。正常情况,我们在Activity里调用startService()方法启动MyService这个服务,然后MyService的onCr…

Openlayers实战:利用turf获取两个多边形的交集、差集、并集

在数据统计方面,通常会涉及到图形间的交集、并集、差集等。在Openlayers的实战中,我们显示两个多边形的交集、并集、差集的表现。通过turf的方式,可以快速的实现我们的数据处理,具体的请参考源代码。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师…

three.js的镜面反射

three.js做成这种镜面反射的效果。 那就要使用three自带的功能Reflector 1.引入 组件 import { Reflector } from ../../node_modules/three/examples/jsm/objects/Reflector.js; 2.创建反射投影的存在面 let reflectorGeometry new THREE.PlaneBufferGeometry(100, 100); 3…

Java经典面试题总结(一)

Java经典面试题总结(一) 题一:Java编译运行原理题二:JDK,JVM,JRE三者之间的关系题三:谈一下对冯诺依曼体系的了解题四:重载与重写的区别题五:拆箱装箱是指什么&#xff1…

Spring源码解析(八):bean后置处理器CommonAnnotationBeanPostProcessor

Spring源码系列文章 Spring源码解析(一):环境搭建 Spring源码解析(二):bean容器的创建、默认后置处理器、扫描包路径bean Spring源码解析(三):bean容器的刷新 Spring源码解析(四):单例bean的创建流程 Spring源码解析(五)&…

本地项目如何连接git远程仓库

在本地新建项目后,如何连接git远程仓库呢?步骤如下: 第一步, 首先我们在git上新建仓库,设置模板可勾选Readme文件。(readme文件的创建是为了介绍所写代码的一些详细信息,为了之后更好的维护。)…

记录问题: servlet获取项目包绝对路径

【2023-8-8 23:46:27 星期二】 如何获取在webapp下的路径?而不是target包下的webapp目录 比如这里应该获取到 F:\Tiam\Desktop\freemarker\freemarker-demo01\src\main\webapp 而readPath总是获取到 F:\Tiam\Desktop\freemarker\freemarker-demo01\target\freemarker-demo0…

Leetcode-每日一题【剑指 Offer 11. 旋转数组的最小数字】

题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4…

Styletron: 面向组件的样式设计工具包

styletron官网: styletron的GitHub链接: styletron-react 一. 介绍 Styletron是一个通用的component-oriented(面向组件的)样式工具。它属于css-in-js类别。Styletron可以很好地与React配合使用,但也可以与其他框架或…

Allegro172版本无法低亮颜色的解决办法

Allegro172版本无法低亮颜色的解决办法 在用Allegro172版本做PCB设计的时候,高亮颜色是常用的命令,同时将高亮的颜色去高亮也是使用的十分频繁。 有时在去高亮的时候会出现无法去高亮的情况如下图 右边这块铜皮被高亮成了白色 可以看到即便使用去高亮命令,铜皮的颜色仍然还…

初次使用GPU云服务器

前言: 在体验了GPU云服务器(GPU Cloud Computing,GPU)后,我认为这是一个非常强大的弹性计算服务。它为深度学习、科学计算、图形可视化、视频处理等多种应用场景提供了强大的GPU算力,能够满足各类用户的计算…

web集群学习--基于CentOS构建LVS-DR集群、配置nginx负载均衡

基于CentOS构建LVS-DR集群 环境准备 主机名 ip地址 node1 192.168.1.140 client node2 192.168.1.141 LVS node3 192.168.1.142 RS1 node4 192.168.1.143 RS2配置 1.关闭防火墙和SELinux [rootclient~]# systemctl stop firewalld [rootclient~]# systemctl disabl…

实现UDP可靠性传输

文章目录 1、TCP协议介绍1.1、ARQ协议1.2、停等式1.3、回退n帧1.4、选择性重传 1、TCP协议介绍 TCP协议是基于IP协议,面向连接,可靠基于字节流的传输层协议 1、基于IP协议:TCP协议是基于IP协议之上传输的,TCP协议报文中的源端口IP…

【Linux升级之路】5_基础IO

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux升级之路】 ✒️✒️本篇内容:文件操作,文件管理,重定向,简易shell添加重定向功能,文件属…

领航优配:暑期旅游市场热度持续攀升,相关公司业绩有望持续释放

到发稿,海看股份涨停,中广天择、探路者、众信旅行等涨幅居前。 8月8日,在线旅行板块震动上涨,到发稿,海看股份涨停,中广天择、探路者、众信旅行等涨幅居前。 今年以来,国内旅行商场逐渐恢复。文…

Unity制作护盾——2、力场冲击波护盾

Unity制作力场护盾 大家好,我是阿赵。   继续做护盾,这一期做一个力场冲击波护盾。 一、效果展示 主要的效果并不是这个球,而是护盾在被攻击的时候,会出现一个扩散的冲击波。比如上图在右边出现了冲击波 如果在左边被攻击&am…

安装ubuntu 18.04 系统(1)——制作系统安装U盘

https://rufus.ie/zh/ 下载该软件,准备制作启动盘下载自己想要的镜像,http://mirrors.163.com/ubuntu-releases/18.04/, 我选择的是ubuntu-18.04.6-live-server-amd64.iso 因为,科研写程序使用,不需要桌面版本。开始制…

分布式协议与算法——拜占庭将军问题

拜占庭将军问题 背景:以战国时期为背景 战国时期,齐、楚、燕、韩、赵、魏、秦七雄并立,后来秦国的势力不断强大起来,成了东方六国的共同威胁。于是,这六个国家决定联合,全力抗秦,免得被秦国各个…

go错误集(持续更新)

1.提示以下报错 Build Error: go build -o c:\Users\Administrator\Desktop__debug_bin2343731882.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决办法: go …

mysql进阶篇(二)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…