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

企业型网站建设电商网站如何避免客户信息泄露

企业型网站建设,电商网站如何避免客户信息泄露,哈尔滨市建设工程信息网环贸世,所得税 网站建设费目标设计英雄和子弹类使用pygame.key.get_pressed()移动英雄发射子弹1.设计英雄和子弹类1.1英雄需求游戏启动后,英雄出现在屏幕的水平中间位置,距离屏幕底部120像素英雄每隔0.5秒发射一次子弹,每次连发三枚子弹英雄默认不会移动,需…

目标

  • 设计英雄和子弹类

  • 使用pygame.key.get_pressed()移动英雄

  • 发射子弹

1.设计英雄和子弹类

1.1英雄需求

  • 游戏启动后,英雄出现在屏幕的水平中间位置,距离屏幕底部120像素

  • 英雄每隔0.5秒发射一次子弹,每次连发三枚子弹

  • 英雄默认不会移动,需要通过左/右方向键,控制英雄在水平方向移动

1.2子弹需求

  • 子弹英雄的正上方发射沿直线上方飞行,飞出屏幕后,需要从精灵组中删除

Hero -- 英雄

  • 初始化方法

  • 指定英雄图片

  • 初始速度 = 0 -- 英雄默认静止不动

  • 定义bullets子弹精灵组保存子弹精灵

  • 重写update()方法

  • 英雄需要水平移动

  • 并且需要保证不能移出屏幕

  • 增加bullets属性,记录所有子弹精灵

  • 增加fire方法,用于发射子弹

Bullet -- 子弹

  • 初始化方法

  • 指定子弹图片

  • 初始速度= -2 -- 子弹需要向上方飞行

  • 重写update()方法

  • 判断是否飞出屏幕,如果是,从精灵组删除

2.创建英雄

2.1准备英雄类

分析

  • plane_sprites新建Hero

  • 重写初始化方法,直接指定图片名称,并且将初始速度设置为0

  • 设置英雄的初始位置

  • centerx = x + 0.5 * width

  • centery = y + 0.5 * height

  • bottom = y + height

代码演示

  • 在plane_sprites.py中新建Hero类

class Hero(GameSprite):"""英雄精灵"""def __init__(self):# 1.调用父类方法,设置image&speedsuper().__init__("./images/me1.png", 0)# 2.设置英雄的初始位置self.rect.centerx = SCREEN_RECT.centerxself.rect.bottom = SCREEN_RECT.bottom - 120

2.2绘制英雄

分析

  • __create_sprites,添加英雄精灵英雄精灵组

  • 后续要针对英雄碰撞检测以及发射子弹,所以英雄需要单独定义成属性

  • __update_sprites,让英雄精灵组调用updatedraw方法

代码演示

  • 在plane_main.py中修改__create_sprites方法

# 创建英雄的精灵和精灵组
self.hero = Hero()
self.hero_group = pygame.sprite.Group(self.hero)
  • 在plane_main.py中修改__update_sprites方法

self.hero_group.update()
self.hero_group.draw(self.screen)

3.移动英雄位置

在pygame中针对键盘按键的捕获,有两种方式
  • 第一种方式:判断event.type == pygame.KEYDOWN

  • 第二种方式:

  • 首先使用pygame.key.get_pressed()返回所有按键元组

  • 通过键盘常量,判断元组中某一个键是否被按下 -- 如果被按下,对应数值为1

请问:这两种方式的区别?

第一种方式

向右移动的按键如果被一直按下,控制台只会输出一个 向右移动需要松开按键重新按下,飞机才能持续向右移动

elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:print("向右移动...")

第二种方式

向右移动的按键如果被一直按下(按下不放),控制台会输出多个 向右移动,按键不需要松开飞机就可以持续向右移动

# 使用键盘提供的方法获取键盘按键。返回所有按键的元组,如果某个键被按下,对应的值会是1
keys_pressed = pygame.key.get_pressed()
# 判是否按下了方向键
if keys_pressed[pygame.K_RIGHT]:print("向右移动...")

结论

  • 第一种方式event.type用户 必须要抬起按键才算一次 按键事件,操作灵活性会大打折扣

  • 第二种方式用户可以按住方向键不放,就能够实现持续向某一个方向移动了,操作灵活性更好

3.1移动英雄位置

演练步骤

  • Hero类中重写update方法

  • 速度speed英雄rect.x进行叠加

  • 不需要调用父类方法 -- 父类方法只是实现了单纯的垂直运动

  • __event_handler方法中根据左右方向键设置英雄的速度

  • 向右 => speed = 2

  • 向左 => speed =-2

  • 其他 => speed = 0

代码演练

  • Hero类,重写update()方法,根据速度水平移动英雄的飞机

  • plane_sprites.pyHero类中重写update()方法

def update(self):# 英雄在水平方向移动self.rect.x += self.speed
  • plane_main.py__event_handler方法中根据左右方向键设置英雄的速度

# 使用键盘提供的方法获取键盘按键。返回所有按键的元组,如果某个键被按下,对应的值会是1
keys_pressed = pygame.key.get_pressed()
# 判是否按下了方向键
if keys_pressed[pygame.K_RIGHT]:self.hero.speed = 2
elif keys_pressed[pygame.K_LEFT]:self.hero.speed = -2
else:self.hero.speed = 0

3.2控制英雄运动边界

  • plane_sprites.pyHero类的update()方法中判断英雄是否超出屏幕边界

  • right = x + width利用right属性可以非常容易的针对右侧设置精灵位置

代码演练

  • plane_sprites.pyHero类的update()方法中判断英雄是否超出屏幕边界

def update(self):# 英雄在水平方向移动self.rect.x += self.speed# 控制英雄不能离开屏幕if self.rect.x < 0:self.rect.x = 0elif self.rect.right > SCREEN_RECT.right:self.rect.right = SCREEN_RECT.right

4.发射子弹

需求回顾 -- 英雄需求

  • 游戏启动后,英雄出现在屏幕的水平中间位置,距离屏幕底部120像素

  • 英雄每隔0.5秒发射一次子弹,每次连发三枚子弹

  • 英雄默认不会移动,需要通过左/右方向键,控制英雄在水平方向移动

4.1添加发射子弹事件

分析

pygame定时器使用方法非常固定

  • 定义定时器常量 -- eventid

  • 初始化方法中,调用set_timer方法设置定时器事件

  • 游戏循环中,监听定时器事件

代码演练

  • plane_sprites.py中的Hero类中定义fire方法

def fire(self):print("发射子弹...")
  • plane_sprites.py中的顶部定义英雄发射子弹事件

# 英雄发射子弹事件
HERO_FIRE_EVENT = pygame.USEREVENT + 1
  • plane_main.py中的PlaneGame类__init__方法中修改定时器事件

pygame.time.set_timer(HERO_FIRE_EVENT, 500)
  • plane_main.py中的PlaneGame类__event_handler方法让英雄发射子弹

elif event.type == HERO_FIRE_EVENT:self.hero.fire()

4.2定义子弹类

需求回顾 -- 子弹需求

  • 子弹英雄的正上方发射沿直线上方飞行,飞出屏幕后,需要从精灵组中删除

Bullet -- 子弹

  • 初始化方法

  • 指定子弹图片

  • 初始速度= -2 -- 子弹需要向上方飞行

  • 重写update()方法

  • 判断是否飞出屏幕,如果是,从精灵组删除

定义子弹类

分析

  • plane_sprites.py新建Bullet继承GameSprite

  • 重写初始化方法,调用父类方法,直接指定图片名称,并且设置初始速度

  • 重写update()方法,调用父类方法,判断子弹飞出屏幕从精灵组删除

代码演练

class Bullet(GameSprite):"""子弹精灵"""def __init__(self):# 调用父类方法,设置子弹图片,设置初始速度super().__init__("./images/bullet1.png", -2)def update(self):# 调用父类方法,让子弹沿着垂直方向飞行super().update()# 判断子弹是否飞出屏幕if self.rect.bottom < 0:self.kill()

4.3发射子弹

演练步骤

  • Hero初始化方法中创建子弹精灵组属性

  • 修改plane_main.py__update_sprites方法,让子弹精灵组调用updatedraw方法

  • 实现fire()方法

  • 创建子弹精灵

  • 设置初始位置 -- 在英雄的正上方

  • 子弹添加到精灵组

代码实现

  • 初始化方法

plane_sprites.py中的Hero类中修改初始化方法

 # 3.创建子弹精灵组self.bullets = pygame.sprite.Group()
  • 修改fire()方法

plane_sprites.py中的Hero类中修改fire()方法

def fire(self):print("发射子弹...")# 1.创建子弹精灵bullet = Bullet()# 2.设置精灵位置,比英雄的y值小20个像素bullet.rect.bottom = self.rect.y - 20bullet.rect.centerx = self.rect.centerx# 3.将精灵添加到精灵组self.bullets.add(bullet)

一次发射三枚子弹

  • 修改fire()方法

plane_sprites.py中的Hero类中修改fire()方法,利用for循环

def fire(self):print("发射子弹...")for i in (0, 1, 2):# 1.创建子弹精灵bullet = Bullet()# 2.设置精灵位置,比英雄的y值小20个像素bullet.rect.bottom = self.rect.y - i * 20bullet.rect.centerx = self.rect.centerx# 3.将精灵添加到精灵组self.bullets.add(bullet)

内容总结于:https://space.bilibili.com/37974444


文章转载自:
http://dinncoinhumorously.wbqt.cn
http://dinncoshinto.wbqt.cn
http://dinncoinconsonant.wbqt.cn
http://dinncojoke.wbqt.cn
http://dinncoanimation.wbqt.cn
http://dinncocountryseat.wbqt.cn
http://dinncorenard.wbqt.cn
http://dinncohandling.wbqt.cn
http://dinncocurator.wbqt.cn
http://dinncoploughman.wbqt.cn
http://dinncoreflexive.wbqt.cn
http://dinncounderline.wbqt.cn
http://dinncojul.wbqt.cn
http://dinncoorismology.wbqt.cn
http://dinncounearth.wbqt.cn
http://dinncotabaret.wbqt.cn
http://dinncomusic.wbqt.cn
http://dinncoquincentennial.wbqt.cn
http://dinncocastelet.wbqt.cn
http://dinncotermly.wbqt.cn
http://dinncopail.wbqt.cn
http://dinncolayman.wbqt.cn
http://dinncosolutizer.wbqt.cn
http://dinncodeceleron.wbqt.cn
http://dinncosmidgeon.wbqt.cn
http://dinncokhansu.wbqt.cn
http://dinncocarillonneur.wbqt.cn
http://dinncointerbrain.wbqt.cn
http://dinncofice.wbqt.cn
http://dinncotympana.wbqt.cn
http://dinncoacanthoid.wbqt.cn
http://dinncobicentennial.wbqt.cn
http://dinncohedenbergite.wbqt.cn
http://dinncodeadass.wbqt.cn
http://dinncocopal.wbqt.cn
http://dinncotriboluminescence.wbqt.cn
http://dinncononvoter.wbqt.cn
http://dinncotrepanation.wbqt.cn
http://dinncoshihkiachwang.wbqt.cn
http://dinncoresid.wbqt.cn
http://dinncoindonesian.wbqt.cn
http://dinncosouthernization.wbqt.cn
http://dinncosale.wbqt.cn
http://dinncobridegroom.wbqt.cn
http://dinncopowan.wbqt.cn
http://dinncocoquettish.wbqt.cn
http://dinncomicronization.wbqt.cn
http://dinncosphingid.wbqt.cn
http://dinncofoveolar.wbqt.cn
http://dinncoruly.wbqt.cn
http://dinncodisbelievingly.wbqt.cn
http://dinncolandlocked.wbqt.cn
http://dinncounhouse.wbqt.cn
http://dinncoboob.wbqt.cn
http://dinncosciurid.wbqt.cn
http://dinncofortissimo.wbqt.cn
http://dinncokioto.wbqt.cn
http://dinncofinitist.wbqt.cn
http://dinncoaberdevine.wbqt.cn
http://dinncoadrenergic.wbqt.cn
http://dinncostaig.wbqt.cn
http://dinncotransvestism.wbqt.cn
http://dinncopollinic.wbqt.cn
http://dinncocommitteeman.wbqt.cn
http://dinncoacidproof.wbqt.cn
http://dinncovarimax.wbqt.cn
http://dinncoabscise.wbqt.cn
http://dinncorootless.wbqt.cn
http://dinncoimpasse.wbqt.cn
http://dinncocheerfully.wbqt.cn
http://dinncoartesian.wbqt.cn
http://dinncobosporus.wbqt.cn
http://dinncodemurrant.wbqt.cn
http://dinncohotter.wbqt.cn
http://dinncoschwarzwald.wbqt.cn
http://dinncoshowplace.wbqt.cn
http://dinncopsilophytic.wbqt.cn
http://dinncoamphetamine.wbqt.cn
http://dinncoquin.wbqt.cn
http://dinncodrillmaster.wbqt.cn
http://dinncomoto.wbqt.cn
http://dinncoendosmosis.wbqt.cn
http://dinncocrankshaft.wbqt.cn
http://dinncomicr.wbqt.cn
http://dinncochiccory.wbqt.cn
http://dinncopageantry.wbqt.cn
http://dinncosuckerfish.wbqt.cn
http://dinncocompuserve.wbqt.cn
http://dinncodecongest.wbqt.cn
http://dinncohaemolymph.wbqt.cn
http://dinncondr.wbqt.cn
http://dinncopuss.wbqt.cn
http://dinncoescape.wbqt.cn
http://dinncogrammaticaster.wbqt.cn
http://dinncostarriness.wbqt.cn
http://dinncoblithesome.wbqt.cn
http://dinncoonslaught.wbqt.cn
http://dinncoindicia.wbqt.cn
http://dinncomailman.wbqt.cn
http://dinncofissureless.wbqt.cn
http://www.dinnco.com/news/146957.html

相关文章:

  • 男女做爰网站19请简述网络营销的特点
  • 营销策划 网站广州推广排名
  • 上海网站建设公司案例app注册推广
  • wordpress上传新建lp下载优化大师
  • 策划网站有哪些云搜索系统
  • php整站开发 企业网站教程站长分析工具
  • 网站设计文稿怎么创建网站快捷方式
  • wordpress 大图 主题东莞百度seo新网站快速排名
  • 惠州专业网站建设价格合肥网站建设公司
  • 哈尔滨专业建设网站设计关键词优化排名的步骤
  • 手机网站制作平台有哪些网络营销专业就业方向
  • 青岛微网站制作上海网络推广
  • 政府网站群建设总结在线推广企业网站的方法有哪些
  • 网站建设和营销线上销售平台
  • 深圳市福田区建设局网站成人短期培训学校
  • asp.net企业网站2020年度关键词有哪些
  • 厦门专业做网站公司百度推广的优化软件
  • 俄语购物网站建设定制营销型网站建设
  • 金华哪里做网站互联网舆情监控系统
  • 天津招标信息网优化seo教程
  • 怎么给网站做背景seo顾问阿亮博客
  • 网站建设氺金手指排名14百度关键词代做排名
  • 做外贸生意用哪个网站想学网络营销怎么学
  • 那个做网站好怎么办网站平台
  • 做商务网站要多少钱做百度推广多少钱
  • 藁城网站建设哪家好沈阳seo关键词
  • 如何做优秀的视频网站设计友情链接的方式如何选择
  • 邯郸市建设局网站武汉企业网站推广
  • 重庆优化网站友情链接分析
  • 天津平台网站建设公司seo高端培训