上次写《植物大战僵尸》和《俄罗斯方块》反响都不错,所以这次我要更加努力,每天把它们写得酷一点。
写出来的效果图是这样的:首先让我们像往常一样更新所有代码。
import pygame,sysimport random12写入游戏设置
width=1200 #窗口宽度height=508 #窗口高度size=width, height Score=None #Score myFont=myFont1=None #Font surObject=None #障碍物图像surGameOver=None #游戏结束图像bg=None #背景物体的作用=None #角色对象object=None #障碍物对象objectList=[] #障碍物对象数组Clock=None #时钟gameState=None #游戏状态(0, 1) 表示(游戏中、游戏结束)表示12345678910111213 写入角色
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)12345678910111213写入障碍物
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 ]写背景
class Bg: #背景def __init__(self,surface): self.surface=surface self.dx=-10 self.w=surface.get_width() self.rect=surface.get_rect()123456def initGame(): 全局背景,角色, 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 rates=4 #如果不是随机是否生成障碍.randint(0,300 )=508-85: role.y=508-85 role.state=0 #障碍物移动物体objectList: addObject() for object.x-=10 object #移动障碍物#障碍物穿过屏幕,移除障碍物if object.x+object.w=0: objectList.remove(object) Score +=10 # 避开障碍物,加10分print(\’A target was selected\’) #碰撞检测if object.collision(role.getRect(), object.getRect()): if(object.currentFrame==6)第:章delete(object) Score+=100 #吃金币会加100分print(score) print(\’吃金币\’) else:gameState=1 #游戏失败print(\’发生碰撞!\’ 6667686970717273747576777879808182838485868788899091929394 95好的,这个就是这个Tenten酷跑的全部代码。如果您还有疑问,可以留言。
编者是一位Python开发工程师。在这里你会找到我整理的一组最新的Python系统学习教程,范围从基本的Python脚本到Web开发、爬虫、数据分析、数据可视化、机器学习等等。如果您需要这些信息,可以关注小编并在后台私信“01”获取。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/604031.html