教你用 python 写一个小游戏 如何用python做一个简单的小游戏
off999 2024-12-28 14:43 31 浏览 0 评论
今天玩点别的吧都说 Python 除了生孩子什么都能干
咱们今天就用 Python 写个小游戏贪吃蛇
想必大家都玩过这玩意
有没有想过你自己来实现一个这样的游戏呢
那么接下来就是学习 python 的正确姿势
想要用 Python 写一个小游戏就不得不知道 pygame 这个库了
这个库是在 sdl 之上构建的
可以使用到很多 GUI、渲染画布等
废话不多说
我们开始
首先我们得有个窗口通过 pygame 的初始化就可以使用它提供给我们的工具了
既然有东西可用了来设置一下游戏名称吧
想了想就叫做《帅气的python》
恩,很符合小帅b的气质
通过 set_model 方法可以设置窗口的大小
比如:
那么这时候得到的窗口就是这样
把这张图点开,居然发现了一张帅脸
窗口有了
咱们把蛇搞上去
背景我们就默认黑色吧所以蛇的颜色应该是白色
这样才显得比较凸突出
通过 pygame 的 rect 方法
可以在画布上画矩形
那么一开始我们的蛇应该是处于中间的
蛇的长度就给 4 个格子吧
这里我们一个格子的宽高设置为 10
现在应该是这个样子
蛇有了
就差食物了
一样的道理
现在就成这样了
还整的有模有样的
不过这食物吧是随机的才对
而且我们刚写的代码有点糙捣腾捣腾
这里把食物的位置随机了一下这样每次一运行就会随机显示了
好了
现在蛇也有了食物也有了
接下来就让蛇的身体扭!起!来!
需要监听一下
方向键的事件
通过 pygame 的这个方法
pygame.event.get()
可以监听事件
比如监听关闭
又比如这样来监听我们的方向键
运行起来
只要你按了方向键
就会被监听到
接着定义一个蛇头的位置
蛇头居中指引方向
每次触发一个方向键就让蛇头的位置发生相应的变化然后更新蛇身的位置
所谓更新蛇身位置
主要将是将列表中的元素更新一下
添加蛇头的位置pop掉蛇尾的位置
每次更新
需要渲染一下画布
运行一下就是这样的
看
我把它扭起来了
哎我这该死的手速差点暴露了什么
刚刚的代码是不是很多重复抽成一个方法吧
蛇也有了也会扭了
食物也有了
接下来就让它去吃啊怎么吃呢
吃一堑长一智
判断下呗只要头碰到了食物就算吃到了给蛇的身体加一格
这里只要发现头的位置
和食物的位置相同就说明吃到了
此时列表的数据就不 pop 了并且食物的位置重新随机生成
那么现在每次重新渲染的时候食物的位置就是随机的了
运行起来
nice
就是要这样
不过现在这条蛇好像有外挂似得
撞到南墙都不死的
撞到自己也不死的
闹呢?你以为你充钱了么?
怎么判断撞到自己了呢其实就是把列表的数据拿出来比对
第一个元素是蛇头拿它跟其它元素比对
相同就代表撞到了
如何判断撞到了墙了呢
通过蛇头的位置只要不超过 [500, 500] 就没事吧
也就是说
只要蛇头都在画布之内就行
这里就直接退出了
效果就是这样撞到就直接拜拜
当然
画布一直频繁的更新所以可以使用 pygame 的 clock
这样子每秒不会超过 10 帧这样就不会那么浪费资源了
ok今天就分享到这里代码不难如果需要的话就在后台发送“帅蛇”获取吧
当然更多是提供下思路你还可以进一步优化下代码
也可以添加一些功能
比如添加背景音乐
添加分数统计
把食物换成cxk...
自己发挥吧
那么我们下回见peace
关注我
学习 Python 没烦恼
相关推荐
- 阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?
-
TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...
- 高流量大并发Linux TCP性能调优_linux 高并发网络编程
-
其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...
- 性能测试100集(12)性能指标资源使用率
-
在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...
- Linux 服务器常见的性能调优_linux高性能服务端编程
-
一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...
- Nginx性能优化实战:手把手教你提升10倍性能!
-
关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...
- 高并发场景下,Spring Cloud Gateway如何抗住百万QPS?
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...
- Kubernetes 高并发处理实战(可落地案例 + 源码)
-
目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...
- 高并发场景下,Nginx如何扛住千万级请求?
-
Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...
- Spring Boot+Vue全栈开发实战,中文版高清PDF资源
-
SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...
- Docker-基础操作_docker基础实战教程二
-
一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...
- 你有空吗?跟我一起搭个服务器好不好?
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...
- 部署你自己的 SaaS_saas如何部署
-
部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...
- Docker Compose_dockercompose安装
-
DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...
- 京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统
-
前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...
- Kubernetes (k8s) 入门学习指南_k8s kubeproxy
-
Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
