基于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啦,这就是这个天天酷跑的全部代码啦,有问题可以留言,我看到都会回的。

到此这篇关于基于Python实现天天酷跑功能的文章就介绍到这了,更多相关Python写天天酷跑内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Java实现天天酷跑(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的障碍物越多跑酷距离越远,玩家吃的金币越多,得分越高. 三.功能模块: 1.登录界面 用户名(输入框,明文) 密码(输入框,密文) 登录.取消按钮 2.菜单选择界面 开始游戏按钮(图片按钮) 帮助按钮 退出按钮 3.缓冲加载界面 自动加载进度条,加载完毕之后,跳转到下一界面 4.游戏主界面 移动的背景图片.动态

  • 基于Python实现天天酷跑功能

    感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了 这次就写一个天天酷跑吧 写出来的效果图就是这样了 下面就更新一下全部的代码吧 还是老样子先定义 import pygame,sys import random 写一下游戏配置 width = 1200 #窗口宽度 height = 508 #窗口高度 size = width, height score=None #分数 myFont=myFont1=None #字体 surObject=None #障碍物图片 surG

  • Java实现天天酷跑小游戏完整代码(附源码)

    目录 首先,写一个需求文档: 一.登录界面 1.界面 2.登录 3.退出 二.开始游戏界面 三.缓冲加载游戏界面 四.游戏主界面 五.结束界面 上代码 首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的障碍物越多跑酷距离越远,玩家吃的金币越多,得分越高. 三.功能模块: 1.登录界面 用户名(输入框,明文) 密码(输入框,密文) 登录.取消按钮 2.菜单选择

  • 基于Python实现的ID3决策树功能示例

    本文实例讲述了基于Python实现的ID3决策树功能.分享给大家供大家参考,具体如下: ID3算法是决策树的一种,它是基于奥卡姆剃刀原理的,即用尽量用较少的东西做更多的事.ID3算法,即Iterative Dichotomiser 3,迭代二叉树3代,是Ross Quinlan发明的一种决策树算法,这个算法的基础就是上面提到的奥卡姆剃刀原理,越是小型的决策树越优于大的决策树,尽管如此,也不总是生成最小的树型结构,而是一个启发式算法. 如下示例是一个判断海洋生物数据是否是鱼类而构建的基于ID3思想

  • 基于Python打造账号共享浏览器功能

    本篇文章介绍的内容会涉及到以下知识: PyQt5的使用; Selenium的使用; 代理服务器的架设和使用: 一.账号限制之痛 在如今的互联网中,免费的信息和资源占据了很大一部分,各类互联网应用提供了各行各业的资讯和资源.这是互联网能够不断繁荣和扩大的重要原因之一. 与此同时,一些收费或不公开的互联网应用则构成了互联网世界中更有价值和意义的部分. 一些限制性较低的网站,可能仅仅需要进行用户登录即可使用服务: 一些限制性中等的网站,则可能会出于账户安全或是其他方面的因素考虑,限制账号在一定时间一定

  • 基于Python实现评论区抽奖功能详解

    目录 1. 分析评论接口 2. 获取评论数据 3. 筛选评论用户 4. 抽取幸运观众 5. 完整源码 5.1 字符串截取的方式 5.2 正则匹配方式 5.3 执行结果 1. 分析评论接口 首先,我们需要找到评论数据的「接口」,也就是网站获取评论数据的请求. 打开一个需要抽奖的文章,进入「开发者模式」(按F12 或 右键检查),选中 Network 选项,同时「刷新」文章页面,使其重新发送请求,在右侧工具栏中观察页面发送的请求,逐个分析请求,根据响应内容判断出获取评论的请求 在 Headers 栏

  • 基于Python实现口罩佩戴检测功能

    目录 口罩佩戴检测 一 题目背景 1.1 实验介绍 1.2 实验要求 1.3 实验环境 1.4 实验思路 二 实验内容 2.1 已知文件与数据集 2.2 图片尺寸调整 2.3 制作训练时需要用到的批量数据集 2.4 调用MTCNN 2.5 加载预训练模型MobileNet 2.6 训练模型 2.6.1 加载和保存 2.6.2 手动调整学习率 2.6.3 早停法 2.6.4 乱序训练数据 2.6.5 训练模型 三 算法描述 3.1 MTCNN 3.2 MobileNet 四 求解结果 五 比较分析

  • 基于Python实现通过微信搜索功能查看谁把你删除了

    场景:查找who删了我,直接copy代码保存到一个python文件who.py,在python环境下运行此文件 代码如下,copy保存到who.py文件在python环境直接运行: #!/usr/bin/env python # coding=utf-8 from __future__ import print_function import os try: from urllib import urlencode, quote_plus except ImportError: from url

  • 如何基于Python pygame实现动画跑马灯

    前言 大家都看过彩带飘落吧?这个在比较喜庆的场合是很常见的: 还有"跑马灯"效果,听起来很陌生,其实很常见,下面的就是: 好了,相信大家都有了初步的认识.当然,如果有做前端或者搞设计的同学,上面的效果应该不难实现,那如果想通过Python呢?有没有包可以调用呢? 答案是有的--pygame 这个包适合用来开发游戏,今天就不打算给大家详细介绍了,还是想给大伙儿放松放松,以后有机会再多写写它. 不多说,直接甩出代码: import pygame from random import ran

  • 基于Python编写简易版的天天跑酷游戏的示例代码

    写出来的效果图就是这样了: 下面就更新一下全部的代码吧 还是老样子先定义 import pygame,sys import random 写一下游戏配置 width = 1200            #窗口宽度 height = 508            #窗口高度 size = width, height    score=None              #分数 myFont=myFont1=None     #字体 surObject=None          #障碍物图片   

随机推荐