当前位置: 首页 > news >正文

用 Python 写了一个天天酷跑(附源码)

Hello,大家好,给大家说一下,我要开始装逼了

这期写个天天酷跑玩一下叭!

制作一个完整的“天天酷跑”游戏涉及很多方面,包括图形渲染、物理引擎、用户输入处理、游戏逻辑等。由于Python是一种高级编程语言,它有许多库和框架可以用来制作游戏。一个流行的选择是使用Pygame库。

写出来的效果图就是这样的

下面就更新一下全部的代码吧!

老样子先定义

import pygame,sys
import random

写一下游戏配置

width = 1200            #窗口宽度
height = 508            #窗口高度
size = width, height   
score=None              #分数
myFont=myFont1=None     #字体
surObject=None          #障碍物图片         
surGameOver=None        #游戏结束图片
bg=None                 #背景对象
role=None               #人物对象
object=None             #障碍物对象        
objectList=[]           #障碍物对象数组
clock=None              #时钟
gameState=None          #游戏状态(0,1)表示(游戏中,游戏结束)

写人物

class Role: #人物def __init__(self,surface=None,y=None):self.surface=surfaceself.y=yself.w=(surface.get_width())/12self.h=surface.get_height()/2self.currentFrame=-1self.state=0        #0代表跑步状态,1代表跳跃状态,2代表连续跳跃self.g=1            #重力加速度self.vy=0           #y轴速度       self.vy_start=-20   #起跳开始速度def getRect(self):return (0,self.y+12,self.w,self.h)

写障碍物

class Object:  #障碍物def __init__(self,surface,x=0,y=0):self.surface=surfaceself.x=xself.y=yself.w=surface.get_width()self.h=surface.get_height()self.currentFrame=random.randint(0,6)self.w = 100self.h = 100def getRect(self):return (self.x,self.y,self.w,self.h)def collision(self,rect1,rect2):#碰撞检测if (rect2[0]>=rect1[2]-20) or (rect1[0]+40>=rect2[2])or (rect1[1]+rect1[3]<rect2[1]+20) or (rect2[1]+rect2[3]<rect1[1]+20):return Falsereturn True

写背景

class Bg:   #背景def __init__(self,surface):self.surface=surfaceself.dx=-10self.w=surface.get_width()self.rect=surface.get_rect()def initGame():global bg,role,clock,gameState,surObject,surGameOver,score,myFont,myFont1,objectList#分数初始化score=0#初始化objectList=[]#加载字体myFont=pygame.font.Font("./freesansbold.ttf",32)myFont1=pygame.font.Font("./freesansbold.ttf",64)   # 创建时钟对象 (可以控制游戏循环频率)clock = pygame.time.Clock()#初始化游戏状态gameState=0#游戏背景surBg=pygame.image.load("image/bg.bmp").convert_alpha()bg=Bg(surBg)#结束画面surGameOver=pygame.image.load("image/gameover.bmp").convert_alpha()#人物图片surRole=pygame.image.load("image/role.png").convert_alpha()  role=Role(surRole,508-85)#障碍物图片surObject=pygame.image.load("image/object.png").convert_alpha()  def addObject():global surObject,object,objectList,objectrate=4#是否生成障碍物if not random.randint(0,300)<rate:returny=random.choice([height-100,height-200,height-300,height-400])object=Object(surObject,width+40,y)objectList.append(object)def updateLogic():global gameState,score#键盘事件处理for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type==pygame.KEYDOWN:#空格键跳跃if gameState==0:if event.key==pygame.K_SPACE:if role.state==0:role.state=1role.vy=role.vy_startelif role.state==1:role.state=2role.vy=role.vy_startelif gameState==1:if event.key==pygame.K_SPACE:#重新开始游戏initGame()if gameState==0:#背景的移动   bg.dx+=10if bg.dx==1200:bg.dx=0 #人物的移动  if role.state==0:    role.currentFrame+=1if role.currentFrame==12:role.currentFrame=0  else:role.y+=role.vyrole.vy+=role.g if role.y>=508-85:role.y=508-85role.state=0#障碍物的移动addObject()for object in objectList:object.x-=10     #障碍物移动# 障碍物超出屏幕,移除障碍物if object.x+object.w<=0:objectList.remove(object)score+=10    #避开障碍物,加10分print("移除了一个目标")   #碰撞检测if object.collision(role.getRect(),object.getRect()):if(object.currentFrame==6):objectList.remove(object)score+=100  #吃金币加100分print(score)print("吃了一个金币")else: gameState=1   #游戏失败print("发生了碰撞!")

ok啦,这就是这个天天酷跑的全部代码啦.

注意事项

  1. 图像资源:你需要准备player.pngobstacle.pngbackground.png这三个图像文件,并放置在代码运行的同一目录下。
  2. 游戏逻辑:这个示例代码只包含非常基本的游戏逻辑和元素。一个完整的游戏还需要添加更多功能,如得分系统、多个障碍物类型、不同的游戏关卡、音效等。
  3. 优化和调试:在开发过程中,你可能需要不断地优化和调试代码,以确保游戏的流畅性和稳定性。

这个示例只是一个起点,你可以根据需要进行扩展和完善。希望这个示例对你有所帮助!

 全套Python学习资料分享:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

图片

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。

图片

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

图片

四、入门学习视频全套

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

图片

图片

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片

图片

在这里插入图片描述

最后

如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。

在这里插入图片描述

希望这篇文章对你有帮助,也希望能帮到大家,因为你我都是热爱python的编程语言爱好者。
————————————————

 

相关文章:

用 Python 写了一个天天酷跑(附源码)

Hello&#xff0c;大家好&#xff0c;给大家说一下&#xff0c;我要开始装逼了 这期写个天天酷跑玩一下叭&#xff01; 制作一个完整的“天天酷跑”游戏涉及很多方面&#xff0c;包括图形渲染、物理引擎、用户输入处理、游戏逻辑等。由于Python是一种高级编程语言&#xff0c;…...

【网络-交换机】生成树协议、环路检测

路由优先级 路由优先级决定了在多种可达的路由类型中&#xff0c;哪种路由将被用来转发数据包。路由优先级值越低&#xff0c;对应路由的优先级越高&#xff0c;优先级值255表示对应的路由不可达。一般情况下&#xff0c;静态路由的优先级为1&#xff0c;OSPF路由优先级为110&a…...

C++ 中的 JSON 序列化和反序列化:结构体与枚举类型的处理

在 C 编程中&#xff0c;处理 JSON 数据是一项常见任务&#xff0c;特别是在需要与其他系统或前端进行数据交换时。nlohmann::json 库是一个功能强大且易于使用的 JSON 库&#xff0c;它允许我们轻松地在 C 中进行 JSON 数据的序列化和反序列化。本文将详细介绍如何使用 nlohma…...

MySQL 批量删除海量数据的几种方法

目录 一、问题分析 二、批量删除海量数据的几种方法 方法 1&#xff1a;使用 LIMIT 分批删除 方法 2&#xff1a;通过主键范围分批删除 方法 3&#xff1a;通过自定义批量删除存储过程 方法 4&#xff1a;创建临时表替换旧表 三、性能优化建议 总结 在数据库的日常维护…...

【docker入门】docker的安装

目录 Centos 7 添加docker 官方仓库到yum源 将 Docker 的官方镜像源替换为国内可以的 Docker 镜像源 安装docker 配置docker加速源 Ubuntu 创建 gpg key 目录 下载 gpg key 添加国内可用镜像源到 系统的 APT 仓库中 安装docker 配置加速源 Centos 7 添加docker 官方仓…...

单例模式五种写法

饿汉式&#xff08;线程安全&#xff09; public class Singleton {// 直接创建实例&#xff0c;在类加载时就完成实例化private static final Singleton instance new Singleton();// 私有构造函数private Singleton() {}// 提供公共的静态方法获取实例public static Single…...

解析静态链接

文章目录 静态链接空间与地址分配相似段合并虚拟地址分配符号地址确定 符号解析与重定位链接器优化重复代码消除函数链接级别 静态库静态链接优缺点 静态链接 一组目标文件经过链接器链接后形成的文件即可执行文件&#xff0c;如果没有动态库的加入&#xff0c;那么这个可执行…...

前端基础-html-注册界面

&#xff08;200粉啦&#xff0c;感谢大家的关注~ 一起加油吧~&#xff09; 浅浅分享下作业&#xff0c;大佬轻喷~ 网页最终效果&#xff1a; 详细代码&#xff1a; ​ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…...

量子电路的实现 基于ibm的qiskit

量子计算的物理实现 量子计算的实现有几种方式&#xff0c;最常用的就是超导量子计算机&#xff0c;它的量子处理器是用超导传输量子比特构建的&#xff0c;它是由一个约瑟夫森结和一个并联的电容器组成的电路。约瑟夫森结是一种非线性电感&#xff0c;由两层重叠的超导…...

关于谷歌浏览器debug模式不进断点问题解决方案

第一步.浏览器F12弹出调试者模式 第二步.点击设置齿轮&#xff0c;找到Ignore List,将node_model取消勾选&#xff0c;关闭浏览器&#xff0c;重新打开就进断点了...

制造行业实践|悠进电装基于超融合完成信息化改造, 保障业务系统 7/24 长跑

当一辆汽车在路上奔驰时&#xff0c;确保车内各种电气信号正常传递和电力供给的关键是什么&#xff1f;正是那不起眼却功不可没的汽车线束。这些精密编织的电线网络&#xff0c;犹如汽车的“神经网络”和“动脉血管”&#xff0c;在传递电气信号、数据的同时&#xff0c;源源不…...

如何学习C++游戏开发

学习C游戏开发是一个涉及多个领域的复杂过程&#xff0c;包括编程、游戏设计、图形学等。 1. **学习C基础**&#xff1a; - 掌握C的基本语法和面向对象编程。 - 学习C标准库&#xff0c;特别是STL&#xff08;标准模板库&#xff09;。 2. **理解游戏开发概念**&#xf…...

计算网络信号

题目描述&#xff1a; 网络信号经过传递会逐层衰减&#xff0c;且遇到阻隔物无法直接穿透&#xff0c;在此情况下需要计算某个位置的网络信号值。注意&#xff1a;网络信号可以绕过阻隔物 array[m][n]的二维数组代表网格地图&#xff0c; array[i][j]0代表i行j列是空旷位置&…...

【Vue 全家桶】6、vue-router 路由(更新中)

目录 相关理解基本路由嵌套路由路由传参编程式路由导航 相关理解 基本路由 嵌套路由 路由传参 编程式路由导航...

解决程序因缺少xinput1_3.dll无法运行的有效方法,有效修复丢失xinput1_3.dll

如果你的电脑在运行某些应用程序或游戏时提示“xinput1_3.dll丢失”或“找不到xinput1_3.dll”的错误消息&#xff0c;那么很可能是因为你的系统中缺少这个重要的DLL文件而导致的问题。那么电脑出现xinput1_3.dll丢失的问题时有哪些方法进行修复呢&#xff1f; 如何确定电脑是否…...

uni-popup 弹出框

:maskClick"false" 是点击空白遮罩处不关闭弹窗 <uni-popup ref"popup" type"center" :maskClick"false"> <div style"width: 80vw;padding: 0.5em;box-sizing: border-box; background-color: #fff; border-…...

Android笔记:Android中Fragment改变主题

‌在Android中,Fragment使用主题可以通过以下几种方法实现‌: 1 在onCreateView方法中设置主题‌: 在onCreateView方法中,可以通过创建一个ContextThemeWrapper来改变Fragment的主题。例如: @Override public View onCreateView(LayoutInflater inflater, ViewGroup co…...

GEE 训练——利用sentinel-2数据计算两栖NDVI前后差异

目录 简介 函数 expression(expression, map) Arguments: Returns: Image 代码 结果 简介 利用sentinel-2数据计算两栖NDVI前后差异 COPERNICUS/S2是欧洲空间局(ESA)的地球观测计划,旨在通过卫星遥感技术提供全球的高分辨率地球观测数据。S2是COPERNICUS地球观测计…...

看电动缸是如何提高农机的自动化水平

电动缸作为一种将电动机的旋转运动转变为推杆的直线往复运动的电力驱动装置&#xff0c;在提升农机自动化水平方面发挥了重要作用。以下详细分析电动缸如何提高农机的自动化水平&#xff1a; 一、电动缸的工作原理与优势 电动缸的工作原理是以电力作为直接动力源&#xff0c;采…...

C++ 并发专题 - 条件变量的使用

一&#xff1a;概述&#xff1a; 在 C 中&#xff0c;条件变量&#xff08;std::condition_variable&#xff09;是一种用于线程间同步的机制&#xff0c;主要用于在多线程环境中让一个线程等待某个条件满足后再继续执行。条件变量通常配合互斥锁&#xff08;std::mutex&#…...

避坑指南:在VisDrone上训练YOLOv7时,我遇到的过拟合与数据增强那些坑

VisDroneYOLOv7实战避坑手册&#xff1a;从数据增强到过拟合的深度调优 第一次在VisDrone数据集上跑YOLOv7时&#xff0c;我盯着验证集mAP0.5从0.4缓慢爬到0.5就停滞不前&#xff0c;而训练集指标却一路飙升到0.9——典型的过拟合现象。更讽刺的是&#xff0c;当我尝试将图片切…...

别再搞混了!SAP物料主数据、BOM、工艺路线里的三种损耗率(Scrap)到底怎么配?

SAP三大损耗率配置实战指南&#xff1a;从物料主数据到工艺路线的精准决策 在SAP PP模块实施过程中&#xff0c;物料损耗率的配置往往成为顾问团队争论的焦点。我曾参与过一个汽车零部件制造项目&#xff0c;由于初期对三种损耗率的理解偏差&#xff0c;导致MRP运算结果与实际情…...

技术人的职业健康:保护身体,持续前行

技术人的职业健康&#xff1a;保护身体&#xff0c;持续前行 引言 作为一名技术人&#xff0c;我们常常长时间坐在电脑前&#xff0c;忽略了身体健康。今天就来分享一下职业健康的重要性和保护方法。 常见健康问题 颈椎问题 长时间低头看电脑会导致颈椎问题&#xff1a; 症状&a…...

快速完成一篇重复率和AI率都很低的英文论文!(亲测有效)

写英文论文对于很多同学来说比较困难&#xff0c;今天给大家分享一下如何快速完成一篇英文论文。 直接说操作方法&#xff1a; 一、打开任何一个AI工具&#xff0c;输入指令&#xff1a;我是英文专业的毕业生&#xff0c;我的论文题目是《XXXX》&#xff0c;论文正文8000字&a…...

Tina Linux嵌入式系统开发实战:从SDK结构到应用部署全解析

1. 项目概述&#xff1a;从零开始理解 Tina Linux 系统开发如果你正在为一个嵌入式设备寻找一个稳定、开源且高度可定制的操作系统&#xff0c;那么 Tina Linux 很可能已经进入了你的视野。它不是一个凭空出现的全新系统&#xff0c;而是基于 OpenWrt 和 Linux 内核深度定制而来…...

基于Orange Pi 5 Plus与DEEPX栈的边缘AI部署实战指南

1. 项目概述&#xff1a;当一块开发板遇见AI大潮最近在深圳参加了一场关于人工智能硬件与边缘计算的行业峰会&#xff0c;感触颇深。会上&#xff0c;一款基于Orange Pi 5 Plus开发板打造的DEEPX人工智能产品&#xff0c;实实在在地吸引了我的目光。这不仅仅是又一款“开发板AI…...

创业团队如何利用taotoken多模型能力快速进行产品原型验证

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业团队如何利用Taotoken多模型能力快速进行产品原型验证 对于资源有限的创业团队而言&#xff0c;开发一个智能对话产品原型时&a…...

别再手动画路牙了!用SpeedRoad插件5分钟搞定3DMax城市道路建模(含十字路口避坑指南)

3DMax城市道路建模革命&#xff1a;SpeedRoad插件高效工作流全解析 从手动建模到智能生成的效率跃迁 在建筑可视化、游戏场景搭建和城市规划项目中&#xff0c;道路建模往往是耗时又枯燥的环节。传统手动建模方式需要逐个创建路面、路牙、人行道和交通标线&#xff0c;不仅效率…...

OpCore-Simplify:如何30分钟完成专业级黑苹果配置

OpCore-Simplify&#xff1a;如何30分钟完成专业级黑苹果配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而烦恼吗&#x…...

从插值到积分:用np.interp和np.trapz,5步完成传感器数据平滑与能量估算(Python实战)

从插值到积分&#xff1a;用np.interp和np.trapz&#xff0c;5步完成传感器数据平滑与能量估算&#xff08;Python实战&#xff09; 在物联网和实验数据处理中&#xff0c;我们常常会遇到传感器采集的数据点稀疏或不均匀的问题。这种原始数据直接用于分析往往会导致结果不准确&…...