首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用Python写一个天天酷跑

用Python写一个天天酷跑

作者头像
用户8544541
发布于 2022-03-24 05:47:03
发布于 2022-03-24 05:47:03
93801
代码可运行
举报
文章被收录于专栏:Python联盟Python联盟
运行总次数:1
代码可运行

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

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

还是老样子先定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pygame,sys
import random

写一下游戏配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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          #游戏状态(01)表示(游戏中,游戏结束)

写人物

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

写障碍物

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

写背景

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Bg:   #背景
    def __init__(self,surface):
        self.surface=surface
        self.dx=-10
        self.w=surface.get_width()
        self.rect=surface.get_rect()
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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    #避开障碍物,加10print("移除了一个目标")   
            #碰撞检测
            if object.collision(role.getRect(),object.getRect()):
                if(object.currentFrame==6):
                    objectList.remove(object)
                    score+=100  #吃金币加100print(score)
                    print("吃了一个金币")
                else: 
                    gameState=1   #游戏失败
                    print("发生了碰撞!")

ok啦,这就是这个天天酷跑的全部代码啦,有问题可以留言,我看到都会回的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 游戏编程之实现飞机大战(含源代码)
第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每次都会下意识彼此较量一下,看谁打得更好。打飞机也是需要有一定的技巧的,熟练的朋友一把能打上半个小时,生疏的则三五分钟就败下阵来。
吾非同
2020/11/23
21.7K0
Python 游戏编程之实现飞机大战(含源代码)
Pygame入门2——动画、碰撞检测、输入
前面已经知道如何显示图片,只需要改变图片(位置),就可以做出动画的效果了。首先和前面一样,我们把一只蜗牛显示在窗口中:
一只大鸽子
2022/12/06
1.5K0
Pygame入门2——动画、碰撞检测、输入
Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏! | 附代码
近几年来Python语言得到了快速发展,而Pygame作为Python开发应用和游戏必备的库更是展现了Python的优越性。
AI科技大本营
2020/06/28
5K0
Python 玩出花儿了!一文教你用 Python 制作吃豆人游戏! | 附代码
用Python实现坦克大战游戏 | 干货贴
《坦克大战》是1985年日本南梦宫Namco游戏公司在任天堂FC平台上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题,属于策略型联机类。同时也是FC平台上少有的内建关卡编辑器的几个游戏之一,玩家可自己创建独特的关卡,并通过获取一些道具使坦克和基地得到强化。而今天我们就将利用python还原以下坦克大战的制作。
小白学视觉
2020/10/26
1.3K0
用Python实现坦克大战游戏 | 干货贴
Python小游戏(滑雪)
源码分享: import sys import cfg import pygame import random '''滑雪者类''' class SkierClass(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) # 滑雪者的朝向(-2到2) self.direction = 0 self.imagepaths
红目香薰
2022/11/29
1.2K0
Python小游戏(滑雪)
万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现
去年在 B 站看到大佬 UP The CW[1] 的视频:用AI在手游中作弊!内藏干货:神经网络、深度/强化学习讲解[2],当时觉得很有趣;但代码部分没有开源,于是我便想着复现一下这位 UP 的作品,仅作为学习之用。
Piper蛋窝
2020/11/19
1.5K0
万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现
10分钟教你用python打造贪吃蛇超详细教程
在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的。今天就在家研究一下, 弄了个贪吃蛇出来。希望大家喜欢哈。
短短的路走走停停
2019/05/14
2.9K0
python3小游戏(1):吃苹果小游戏
(1).可以通过键盘的上下左右四个键来控制主人公小刘的位置(同是移动方向不同,小刘的姿势也不同)
py3study
2020/01/13
1.3K0
Pygame入门4——使用精灵类重构
如果你完成了前3章的代码,应该会发现代码很乱。想更改某个代码?查找困难、修改起来更困难!不断添加的新功能让我们的代码越来越复杂,难以阅读。
一只大鸽子
2022/12/06
8360
Pygame入门4——使用精灵类重构
【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例
本系列博客介绍以python+pygame库进行小游戏的开发。有写的不对之处还望各位海涵。
马三小伙儿
2018/09/12
3.3K0
【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例
140行Python代码实现Flippy Bird
话说这游戏中文名叫什么来着,死活想不起来了,算了话不多说,140行实现小游戏系列第二章,依然是简单小游戏,与数独游戏相比,在游戏界面显示上更难一些,但是在逻辑方面更简单一些,需要处理的无非是速度、加速度、时间、位置、碰撞检测,界面方面则要实现整个动态的显示;
HoLoong
2020/09/21
5370
140行Python代码实现Flippy Bird
用Python实现谷歌的小恐龙游戏:p
让我们来依次定义一下这些游戏元素类。对于云,路面以及仙人掌来说,定义起来很简单,我们只需要加载对应的游戏元素图片:
Crossin先生
2020/12/22
2.4K0
用Python实现谷歌的小恐龙游戏:p
Pygame入门3——分数、增加敌人、动画
这里我们将分数设置为玩家坚持的时间,每过一秒,分数+1。具体实现用到了pygame.time.get_ticks()获取时间。
一只大鸽子
2022/12/06
1.2K0
Pygame入门3——分数、增加敌人、动画
用Python写了一个水果忍者小游戏
今天小五就用python简单的模拟一下这个游戏。在这个简单的项目中,我们用鼠标选择水果来切割,同时炸弹也会隐藏在水果中,如果切开了三次炸弹,玩家就会失败。
用户8544541
2022/01/27
7830
用Python写了一个水果忍者小游戏
200行Python代码实现贪吃蛇
200行Python代码实现贪吃蛇 话不多说,最后会给出全部的代码,也可以从这里Fork,正文开始; 目前实现的功能列表: 贪吃蛇的控制,通过上下左右方向键; 触碰到边缘、墙壁、自身则游戏结束; 接触
HoLoong
2020/09/21
1.7K0
200行Python代码实现贪吃蛇
如何用 Python 打飞机 ?
前言:python 除了生孩子 ,啥都会 。包括打飞机 !今天小詹的一位读者就来教你如何用 python 打飞机 !
小小詹同学
2018/09/25
2.4K0
如何用 Python 打飞机 ?
K哥教你用Python摸鱼
玩法:这让我想起了魂斗罗那第几关的boss,有点类似,不过魂斗罗那个难度肯定高点。
Python进击者
2022/03/14
1K0
python练手--自制俄罗斯方块(文末
小白python学习中,刚把面向对象弄了个大概,打算找个项目练练手,于是决定做一个俄罗斯方块吧!然后到现在一个月就过去了。。。。。
py3study
2020/01/09
7660
使用 Python 开发一个恐龙跑跑小游戏,玩起来
作者 | 周萝卜 来源 | 萝卜大杂烩 相信很多人都玩过 chrome 浏览器上提供的恐龙跑跑游戏,在我们断网或者直接在浏览器输入地址“chrome://dino/”都可以进入游戏 今天我们就是用 Python 来制作一个类似的小游戏 素材准备 首先我们准备下游戏所需的素材,比如恐龙图片,仙人掌图片,天空,地面等等,我们统一放到 dino 文件夹下 游戏逻辑 我们使用 Pygame 来制作游戏,先进行游戏页面的初始化 import pygame # 初始化 pygame.init() pyga
AI科技大本营
2023/04/14
4860
使用 Python 开发一个恐龙跑跑小游戏,玩起来
一日一技:用Python做游戏有多简单
我520的公众号图片发了以后,有很多同学问我这个游戏是怎么做的,难不难。我就用两篇文章来介绍一下,如果使用Python做游戏。
青南
2022/05/23
1.5K0
一日一技:用Python做游戏有多简单
推荐阅读
相关推荐
Python 游戏编程之实现飞机大战(含源代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档