• 天天酷跑小游戏
  • 首先安装PYcharm软件,python3.7解释器
  • 先展示效果图如

分享代码:

首先导入库:

#库定义:

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("发生了碰撞!")

天天酷跑小游戏,Python帮你实现相关推荐

  1. Scala天天酷跑小游戏

    需求分析: 实现<天天酷跑>的核心逻辑,该游戏具有登录.注册.玩家操作.结束等功能. 注册模块:需要玩家身份信息为:用户名 密码 昵称 邮箱 登录模块:需要玩家信息为:用户名 和 密码 玩 ...

  2. 天天酷跑php源码_Java实现天天酷跑小游戏完整代码(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  3. C语言仿天天酷跑小游戏

    前言:全文代码是模仿程序员rock开发的游戏代码思路,如果大家想根据视频一步步进行制作可以直接去b站进行搜索.全文代码主要分为两个部分,一个是完整版的开发代码(博主根据视频进行一步一步制作而成,素材也 ...

  4. 天天酷跑电脑版代码C语言,Java实现天天酷跑小游戏完整代码(附源码).pdf

    Java实实现现天天天天酷酷跑跑小小游游戏戏完完整整代代码码(附附源源码码) 首首先先,,写写一一个个需需求求文文档档:: 一.项目名称: <天天酷跑> (RunDay ) 二.功能介绍: ...

  5. 牛逼,两百行Python代码带你打造一款《天天酷跑》游戏!

    公众号关注 "菜鸟学Python" 第431篇原创,设为 "星标",带你一起学编程! 最近一段时间,小编发现已经好久没有给大家带来趣味游戏的案例展示了.刚好小编 ...

  6. 当“天天酷跑”遇上“Python程序员” 另类演绎团战新玩法(学到了学到了~)

    前言 大家好!我是梨子同学! 希望大家多多支持我!哈哈 为了感谢每一个关注我的小可爱:

  7. 天天酷跑Python

    天天酷跑小游戏 (Python) 目 录 一.选题背景----------------1 二.设计流程----------------2 2.1算法思想------------------------ ...

  8. 【C语言项目】——天天酷跑

    C语言项目--天天酷跑 文章目录 C语言项目--天天酷跑 前言 注意事项 源代码分享 效果展示 总结 前言 自学编程最有效的就是通过一些自己感兴趣的项目去学习,如果只是纯粹的听取知识点很难坚持,在项目 ...

  9. 【原创】IOS游戏辅助--天天酷跑助手的实现

    标 题: [原创]IOS游戏辅助--天天酷跑助手的实现 作 者: coltor 时 间: 2014-04-16,20:20:44 链 接: http://bbs.pediy.com/showthrea ...

最新文章

  1. 远程办公的难点在哪?
  2. 面试常问 Java基础 冒泡排序
  3. 梁戈碧:促数据中心转型 释放数据洞察力
  4. java8 util.time_Java8 java.util.Date转换为java.time.ZonedDateTime
  5. 漫谈高数曲线积分的物理意义
  6. SAP License:物料类型被误删除及解决办法
  7. android服务器接口测试,使用Retrofit和Mockito进行可靠的Android API测试
  8. 快速排序 与 归并排序
  9. java自动封箱_java自动封箱是什么意思
  10. liunx中如何查看软件的安装目录
  11. SQL Server 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或启用了“阻止保存要求重新创建表的更改”选项
  12. Pycharm安装python包的四种常用方式
  13. 金额大小写转换,这里有两种方法提供给你
  14. oracle 取前行,【企业信息化研究所】TF-SWUFE Oracle Club抵着寒风前行—甲骨文俱乐部第九周分享会...
  15. #4【BZOJ5109】[CodePlus 2017]大吉大利,晚上吃鸡!(未完成)
  16. Druid——Hadoop-based Batch Ingestion
  17. 亚麻/苹果/脸书/谷歌/微软面试图鉴
  18. gfortran在linux下安装
  19. history命令和FHS介绍
  20. 光学定位与追踪技术_光学跟踪技术定位精准罗技M90鼠标仅32

热门文章

  1. OSChina 周五乱弹 —— 论程序员的压力
  2. Mysql linux数据库主从复制服务器搭建
  3. win10电脑远程连接时可能出现的问题
  4. Codeforces - 662A Gambling Nim
  5. 巨人网络:诚信不存,全盘皆输
  6. 免费移动办公平台app有哪些?一定要下载APP吗?
  7. 基于粒子群优化算法的分布式电源选址与定容【多目标优化】【IEEE33节点】(Matlab代码实现)
  8. 关闭浏览器记住密码功能
  9. 拼多多 anti_content 解密
  10. 科奥斯扫地机器人怎么样_科沃斯扫地机器人怎么样【315曝光】耐用吗