用Python写一个天天酷跑

python小游戏:天天酷跑 用python写的跑酷类小游戏,适合新手参考,现在只实现了吃金币和障碍物碰撞功能,相对比较简单,可以自己拓展。 立即下载

感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了
这次就写一个天天酷跑吧
在这里插入图片描述
写出来的效果图就是这样了
下面就更新一下全部的代码吧
还是老样子先定义

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=surface
        self.y=y
        self.w=(surface.get_width())/12
        self.h=surface.get_height()/2
        self.currentFrame=-1
        self.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=surface
        self.x=x
        self.y=y
        self.w=surface.get_width()
        self.h=surface.get_height()
        self.currentFrame=random.randint(0,6)
        self.w = 100
        self.h = 100
    def 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 False
        return True

写背景

class Bg:   #背景
    def __init__(self,surface):
        self.surface=surface
        self.dx=-10
        self.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,object
    rate=4
    #是否生成障碍物
    if not random.randint(0,300)<rate:
        return
    y=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=1
                        role.vy=role.vy_start
                    elif role.state==1:
                        role.state=2
                        role.vy=role.vy_start
            elif gameState==1:
                if event.key==pygame.K_SPACE:
                    #重新开始游戏
                    initGame()
                    
    if gameState==0:
        #背景的移动   
        bg.dx+=10
        if bg.dx==1200:
            bg.dx=0 
            
        #人物的移动  
        if role.state==0:    
            role.currentFrame+=1
            if role.currentFrame==12:
                role.currentFrame=0  
        else:
            role.y+=role.vy
            role.vy+=role.g 
            if role.y>=508-85:
                role.y=508-85
                role.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啦,这就是这个天天酷跑的全部代码啦,有问题可以留言,我看到都会回的。

天天酷跑素材包.zip 天天酷跑的素材包,虽然不完整,但数量还是有那么多的,下载的朋友建议你们先下载一个ShoeBox,因为好多图片是经过合成,只有通过一些软件才能将图片进行分解。 立即下载

相关推荐

天天酷跑素材

图片资源,可以下载下来当作游戏资源,但我是从其他的地方下载下来的

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

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

2301_78095812的博客 5万+

天天酷跑 资源素材

天天酷跑资源 人物动作特效ui音效 某宝购买的 分享出来

用Python写一个游戏——天天酷跑

今天给大家带来一个趣味游戏的案例展示。最近趁着周末写了《天天酷跑》,拿来和大家一起重温经典的酷跑游戏。俗话说,“工欲善其事,必先利其器”,我们先来介绍一下本次我们用到的库有哪些。(需要注意的是,由于很多的小伙伴都会反映很多库安装之后,会出现报错,找不到相应的模块),这是因为库版本的不同,所以跟大家详细的介绍一下程序所使用的各个环节及其对应的版本,这次我们使用的工具和其版本号如下所示:PyCharm:2024.1python3.5+,其中内置sys和random库pygame:1.9.6介绍完我们的基础环境之

2301_78150559的博客 2422

天天酷跑全套资源更新至2015初夏版素材

天天酷跑素材资源,最新全面,想要仿做天天酷跑的朋友可以下载,更新到2015年初夏版 网盘下载地址

天天酷跑图片全部资源.rar

Javaswing窗体的游戏,其中所需要的全部天天酷跑的资源文件。非常详细,适合初学者去下载使用,大小都进行PS处理完毕,并结合javaSE去编写代码更方便。

用Python写一个天天酷跑游戏

感觉之前写的超级玛丽与俄罗斯方块还不错,然后就有了这次的文章这次就写一个天天酷跑吧写出来的效果图就是这样了下面就更新一下全部的代码吧还是老样子先定义写一下游戏配置写人物写障碍物写背景。

m0_62283350的博客 742

基于Python与Pygame的天天酷跑小游戏源码解析

内容概要:本文详细介绍了如何使用Python和Pygame框架从零开始开发‘天天酷跑’小游戏的全过程。首先概述了游戏的整体流程与关键技术点,并展示了游戏运行效果,接着依次讲解了各个主要模块的具体实现方法,如环境搭建、角色设计、障碍物生成机制、物理运动规则、得分计算逻辑、界面显示以及游戏状态的转换。 适用人群:对于Python和Pygame感兴趣的小型游戏开发者、程序爱好者,尤其适合希望通过实战项目提升编码技巧的新手。 使用场景及目标:学习并掌握基本的游戏编程思想和技术手段;练习利用面向对象的方法来解决问题;熟悉Pygame提供的工具函数及其应用场景;增强对算法的理解和应用能力;激发创新思维和动手能力。 其他说明:为了便于理解和实践,文中提供了完整的源码,建议读者亲自操作体验整个项目的搭建与调试过程,以便获得更好的学习成果。同时,可以通过扩展已有功能来挑战更高的层次或者自定义个性化的游戏角色。

用python写跑酷游戏脚本,用Python写一个天天酷跑

感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了这次就写一个天天酷跑吧写出来的效果图就是这样了下面就更新一下全部的代码吧还是老样子先定义`import pygame,sysimport random`* 1* 2写一下游戏配置`width = 1200 #窗口宽度height = 508 #窗口高度size = widt...

weixin_35765226的博客 2098

python代码复刻一款天天酷跑游戏

python代码复刻一款天天酷跑游戏,实现界面、各类物体以及用户碰撞检测、游戏不断刷新等功能。

天天酷跑游戏背景图,人物图,障碍物图等素材

天天酷跑游戏整个素材

上一篇: Python turtle绘制多彩同心圆
下一篇: 用Python实现辞职信
Python_xP
博客等级 码龄6年 12粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值