gpt4 book ai didi

基于Python实现天天酷跑功能

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章基于Python实现天天酷跑功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了 这次就写一个天天酷跑吧 。

基于Python实现天天酷跑功能

写出来的效果图就是这样了 下面就更新一下全部的代码吧 还是老样子先定义 。

import pygame,sysimport 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写天天酷跑内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。

原文链接:https://blog.csdn.net/Gtieguo/article/details/112168246 。

最后此篇关于基于Python实现天天酷跑功能的文章就讲到这里了,如果你想了解更多关于基于Python实现天天酷跑功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com