当前位置: 首页 > news >正文

海洋优质的网站建设.tech域名的网站

海洋优质的网站建设,.tech域名的网站,石家庄网站开发价格,seo百度网站排名研究中心关键词首页优化在《Pygame中Sprite实现逃亡游戏3》中实现了玩家跳跃飞火的效果,接下来通过精灵类的碰撞检测来判断飞火是否击中玩家、飞火是否击中飞龙以及飞龙是否抓住玩家。 1 飞火是否击中玩家的判断 判断飞火是否击中玩家的代码如图1所示。 图1 判断飞火是否击中玩家的代码 …

在《Pygame中Sprite实现逃亡游戏3》中实现了玩家跳跃飞火的效果,接下来通过精灵类的碰撞检测来判断飞火是否击中玩家、飞火是否击中飞龙以及飞龙是否抓住玩家。

1 飞火是否击中玩家的判断

判断飞火是否击中玩家的代码如图1所示。

图1 判断飞火是否击中玩家的代码

第137行代码使用精灵类的collide_rect()方法判断飞火是否击中玩家,该方法的参数arrow表示飞火,参数player表示玩家,当飞火击中玩家时,collide_rect()方法返回True,第138代码在屏幕的右侧重置飞火,第139行代码将玩家的横坐标向左移动(玩家被飞火击中后要退后)。

相关链接1 reset_arrow()方法以及player.X属性请参考《Pygame中Sprite实现逃亡游戏2》

注意1 判断飞火是否击中玩家、飞火是否击中飞龙以及飞龙是否抓住玩家的代码均在while True循环中。

2 飞火是否击中飞龙的判断

判断飞火是否击中飞龙的代码如图2所示。

图2 判断飞火是否击中飞龙的代码

从图2中可知,当飞火是否击中飞龙后,需要重置飞火并且将飞龙的横坐标向左移动。

3 飞龙是否抓住玩家

判断飞龙是否抓住玩家的代码如图3所示。

图3 判断飞龙是否抓住玩家的代码

从图3中可以看出,当飞龙抓住玩家,此时游戏结束,game_over标志设置为True。

4 程序运行效果

程序运行效果如图4所示。

图4 程序运行效果

5 完整代码

import pygame
import os
import time
import random
from pygame.locals import *class MySprite(pygame.sprite.Sprite):def __init__(self, target):pygame.sprite.Sprite.__init__(self) #extend the base Sprite classself.master_image = Noneself.frame = 0self.old_frame = -1self.frame_width = 1self.frame_height = 1self.first_frame = 0self.last_frame = 0self.columns = 1self.last_time = 0#X propertydef _getx(self):return self.rect.xdef _setx(self,value):self.rect.x = valueX = property(_getx,_setx)#Y propertydef _gety(self):return self.rect.ydef _sety(self,value):self.rect.y = valueY = property(_gety,_sety)#position propertydef _getpos(self):return self.rect.topleftdef _setpos(self,pos):self.rect.topleft = posposition = property(_getpos,_setpos)def load(self, filename, width, height, columns):self.master_image = pygame.image.load(filename).convert_alpha()self.frame_width = widthself.frame_height = heightself.rect = Rect(0,0,width,height)self.columns = columns#try to auto-calculate total framesrect = self.master_image.get_rect()self.last_frame = (rect.width // width) * (rect.height // height) - 1def update(self, current_time, rate=30):#update animation frame numberif current_time > self.last_time + rate:self.frame += 1if self.frame > self.last_frame:self.frame = self.first_frameself.last_time = current_time#build current frame only if it changedif self.frame != self.old_frame:frame_x = (self.frame % self.columns) * self.frame_widthframe_y = (self.frame // self.columns) * self.frame_heightrect = Rect(frame_x, frame_y, self.frame_width, self.frame_height)self.image = self.master_image.subsurface(rect)self.old_frame = self.framedef __str__(self):return str(self.frame) + "," + str(self.first_frame) + \"," + str(self.last_frame) + "," + str(self.frame_width) + \"," + str(self.frame_height) + "," + str(self.columns) + \"," + str(self.rect)def reset_arrow():y = random.randint(250,350)arrow.position = 800,ypygame.init()
screen = pygame.display.set_mode((800,600))
pygame.display.set_caption('Escape The Dragon Game')
font = pygame.font.Font('1.ttf', 18)
framerate = pygame.time.Clock()group = pygame.sprite.Group()
player = MySprite(screen)
player.load('caveman.png', 50, 64, 8)
player.first_frame = 1
player.last_frame = 7
player.position = 400, 303
group.add(player)bg = pygame.image.load('background.png').convert_alpha()#create the dragon sprite
dragon = MySprite(screen)
dragon.load("dragon.png", 260, 150, 3)
dragon.position = 100, 230
group.add(dragon)#create the arrow sprite
arrow = MySprite(screen)
arrow.load("flame.png", 40, 16, 1)
arrow.position = 800,320
group.add(arrow)game_over = False
arrow_vel = 8.0
player_jumping = False
jump_vel = 0.0
player_start_y = player.Y
while True:framerate.tick(30)ticks = pygame.time.get_ticks()for event in pygame.event.get():if event.type == QUIT:pygame.quit()os.sys.exit()keys = pygame.key.get_pressed()if keys[K_ESCAPE]:pygame.quit()os.sys.exit()elif keys[K_SPACE]:if not player_jumping:player_jumping = Truejump_vel = -8.0#update the arrowif not game_over:arrow.X -= arrow_velif arrow.X < 0:reset_arrow()if player_jumping:player.Y += jump_veljump_vel += 0.5if player.Y > player_start_y:player.Y = player_start_yplayer_jumping = Falsejump_vel = 0.0if pygame.sprite.collide_rect(arrow, player):reset_arrow()player.X -= 10if pygame.sprite.collide_rect(arrow, dragon):reset_arrow()dragon.X -= 10if pygame.sprite.collide_rect(player, dragon):game_over = Truescreen.blit(bg, (0,0))group.update(ticks, 50)group.draw(screen)pygame.display.update()

http://www.15wanjia.com/news/169269.html

相关文章:

  • 将门户网站建设龙岗建设企业网站
  • 网站关于我们怎么做丰城网站建设
  • 高端网站的建设中国核工业第五建设有限公司待遇怎么样
  • 网站404 原因wordpress frame
  • 查网站开发者业之峰
  • 关键词爱站网关键词挖掘工具品牌网站建设流程
  • 北京南站附近景点铁道部售票网站多少钱建设
  • 家电网站设计最新购物网站建设框架
  • 网站开发和ui的区别一手项目对接app平台
  • 网站建设冫首选金手指网站开发建设须知
  • 新网站没有死链接怎么做前端开发和后端开发哪个好些
  • 宜宾建设招标网站知名网站建设怎么样
  • 网站维护升级完成网络网站建设电话推销
  • 网站搜索工具腾讯公众号小程序
  • 单位网站链接怎样做贵阳网站建设zu97
  • 工程行业做的好的网站有哪些内容谷歌搜索引擎363入口
  • 什么是权重高的网站产品运营主要做什么
  • 做网站用html创网站 灵感
  • 影视广告制作拍摄公司seo查询友情链接
  • 网站主体关闭 无法备案全网推广推荐
  • 徐州网站开发兼职西安房产网
  • 唐山网站怎么做seo怎么自己制作网页
  • dtcms网站开发更好的网站制作
  • 公司内部交流 网站模板企业网站 微信里怎么做
  • 做app要不要建网站做模型挣钱的网站
  • 雅安市建设工程招投标网站项目计划书ppt模板免费
  • 个人网站可以备案吗广东网站快速备案
  • 帮忙做文档的网站怎么爬虫做网站
  • 可信网站认证代理邯郸设计公司有哪些
  • 建设网站的价格分析免费wordpress搭建