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

太原中小企业网站制作seo网站怎么搭建

太原中小企业网站制作,seo网站怎么搭建,二级域名分发网站,深圳网站建设外贸目录 前言 一、添加子弹设置 二、创建子弹 三、创建绘制和移动子弹函数 四、让子弹飞 五、效果 总结 前言 小蜜蜂的基本操作已经完成了,现在开始编写子弹的代码了。 一、添加子弹设置 在我的预想里,我们的小蜜蜂既然是一只猫,那么放出的子弹…

目录

前言

 一、添加子弹设置

 二、创建子弹

 三、创建绘制和移动子弹函数

 四、让子弹飞

 五、效果

 总结


前言

小蜜蜂的基本操作已经完成了,现在开始编写子弹的代码了。

 一、添加子弹设置

 在我的预想里,我们的小蜜蜂既然是一只猫,那么放出的子弹应该是一只猫爪,或者是爪印,一个小梅花也是可以的,但是“大蟒蛇”是画出一个灰色的长方形小方块作为子弹,我们先按照书上的来操作,后期我们自己再升级。

首先跟新setting模块,增加子弹需要的设置的属性值,比如长、宽、颜色、速度等

class Settings():def __init__(self):self.screen_width = 800self.screen_height = 600self.bg_color = (220,220,220)self.ship_speed_factor = 0.1self.bullet_speed_factor = 1self.bullet_width = 1self.bullet_height = 5self.bullet_color = 60,60,60

 二、创建子弹

 和创建小蜜蜂一样,我们同样的思路,要创建一个子弹的类,每调用一次就会产生一个子弹

import pygame
from pygame.sprite import Spriteclass Bullet(Sprite):def __init__(self,new_setting,screen,ship):super(Bullet,self).__init__()self.screen = screenself.rect = pygame.Rect(0,0,new_setting.bullet_width,new_setting.bullet_hight)self.rect.centerx = ship.rect.centerxself.rect.top = ship.rect.topself.y = float(self.rect.y)self.color =  new_setting.bullet_colorself.speed_factor = new_setting.bullet_speed_factor

上面的代码完成了子弹的属性配置,我们逐条分析下:

1、我们导入的Sprite是pygame的一个类,用于实现精灵在Pygame中,精灵是一种可以在游戏中显示的对象,可以理解成一个个小图片。精灵类提供了很多有用的方法,可以方便地创建游戏中的精灵对象,而无需手动创建每个图像并将其加载到游戏中。精灵通常用于实现游戏中的角色、物品等元素。例如,你可以使用精灵类来创建一个在游戏中显示的角色,并使其具有移动、跳跃等行为。

为什么叫精灵,就不知道了,网上查解释是有人认为是因为精灵是一种抽象的概念,可以用来表示游戏中的一切能感知时间流逝、具有坐标位置的元素。总之,精灵是一个非常实用的类,可以帮助你更轻松地开发游戏。

2、class Bullet(Sprite)的目的是让Bullet继承Sprite这意味着Bullet类将具有Sprite类的所有属性和方法,并且还可以添加自己的属性和方法。

3、super()函数是用来调用父类的方法的结合2的解释,那么super(Bullet,self).__init__()就是调用了Sprite的初始化方法,确保Bullet类能够正确地继承并使用Sprite类的初始化代码。

4、self.rect = pygame.Rect(0,0,new_setting.bullet_width,new_setting.bullet_hight),因为子弹跟小蜜蜂不一样,它不是图片,它需要凭空先创建一个出来,所以在坐标0,0的位置先创建出一个子弹的实例,然后后面再设置属性,将其移动到正确的位置。

 三、创建绘制和移动子弹函数

 前面我们已经将子弹的基本属性创建好了,如果我们需要使用它们,还需要创建绘制函数和移动函数,我们将代码还是写在bullet模块里。

 def update(self):self.y -=self.speed_factorself.rect.y =self.ydef draw_bullet(self):pygame.draw.rect(self.screen,self.color,self.rect)

 这里就不解释了,移动为什么这么写,参考小蜜蜂的移动,是为了更好的调解速度。

 四、让子弹飞

现在我们已经将子弹的各个属性都准备好了,下面就是调用模块创建子弹对象就行了。有些小伙伴认为那还不简单,在game_functions模块里面加上判断,当按下的键盘键为空格时,产生一颗子弹,这样就能实现发射子弹的效果。

简单的思路确实是这样,但是这只能针对一发子弹,我们可以想象,在实际的游戏过程中,屏幕上的子弹是一发接着一发,都快连成线了,当我们使用上面思路时,每一次创建一个新子弹都会覆盖掉前面的一发子弹,屏幕上只会有一发子弹。因此我们要用到sprite中的Group类。

在pygame中,sprite模块带有一个名为Group的类,它是一个容器类,用于保存和管理多个Sprite对象。Group类具有以下方法:

add(sprites):向组中添加精灵。

remove(sprites):从组中删除精灵。

sprites():返回所有精灵列表。

update(dt):更新所有精灵的位置。

draw(surface, group=None):将所有精灵绘制到屏幕上。

因此,首先我们在主程序中创建Group类的对象

Bullets = Group()

随后我们对game_functions进行修改,主要修改两个地方,一个是在按键判断哪里加上按空格键的判断,二是在屏幕刷新那添加刷新子弹,代码如下:

import sys
import pygame
from bullet import Bulletdef check_keydown_events(event,new_setting,screen,ship,bullets):if event.key == pygame.K_RIGHT:ship.moving_right = Trueelif event.key == pygame.K_LEFT:ship.moving_left = Trueelif event.key == pygame.K_SPACE:new_bullet = Bullet(new_setting,screen,ship)bullets.add(new_bullet)def check_keyup_events(event,ship):if event.key == pygame.K_RIGHT:ship.moving_right = Falseif event.key == pygame.K_LEFT:ship.moving_left = Falsedef check_events(new_setting,screen,ship,bullets):for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()elif event.type==pygame.KEYDOWN:check_keydown_events(event,new_setting,screen,ship,bullets)elif event.type==pygame.KEYUP:check_keyup_events(event, ship)def update_screen(new_setting,screen,ship,bullets):screen.fill(new_setting.bg_color)for bullet in bullets.sprites():bullet.draw_bullet()ship.blitme()pygame.display.flip()

 可以看出,我们再判断按下了空格键后,执行代码new_bullet = Bullet(new_setting,screen,ship),创建了一个子弹对象,也就是精灵,然后通过代码bullets.add(new_bullet),将每个子弹精灵加到编组中。

 在刷新屏幕中,我们使用for循环将每个子弹显现在设定好的位置。

 可以看出,在game_functions的多个函数中增加了参数bullets,因此,我们再主函数调用的时候要将参数传进去。主函数代码修改为:

import pygame
import settings
from ship import Ship
import game_functions as gf
from pygame.sprite import Groupdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))ship = Ship(screen,new_setting)pygame.display.set_caption("狂敲代码的橘子")bullets = Group()while True:gf.check_events(new_setting,screen,ship,bullets)ship.update()bullets.update()gf.update_screen(new_setting,screen,ship,bullets)run_game()

 这里解释下, bullets.update(),表示这个编组的每个精灵调用update()函数,即确定了每个精灵的位置,然后调用update_screen函数刷新屏幕,显示出小蜜蜂和子弹。

 五、效果

 截至现在,让子弹飞的代码基本完成,我们运行程序看看效果。

 

 总结

 子弹已经飞起来了,如同我们已经走在了去往山坡的路上,纵有艰险,我们一一克服,终将取得那美丽的蒲公英。

 


文章转载自:
http://darhan.c7507.cn
http://licensure.c7507.cn
http://jovial.c7507.cn
http://celadon.c7507.cn
http://serenely.c7507.cn
http://paroemiographer.c7507.cn
http://nonpasserine.c7507.cn
http://gherao.c7507.cn
http://batman.c7507.cn
http://bike.c7507.cn
http://granitoid.c7507.cn
http://encoop.c7507.cn
http://allantoic.c7507.cn
http://erythromelalgia.c7507.cn
http://menoschesis.c7507.cn
http://portiere.c7507.cn
http://exciple.c7507.cn
http://inconstancy.c7507.cn
http://clergyman.c7507.cn
http://ai.c7507.cn
http://pahlavi.c7507.cn
http://wrote.c7507.cn
http://whereabouts.c7507.cn
http://wretchedly.c7507.cn
http://monogenesis.c7507.cn
http://luteinization.c7507.cn
http://catechist.c7507.cn
http://doxology.c7507.cn
http://kinkle.c7507.cn
http://discordant.c7507.cn
http://paravail.c7507.cn
http://hadron.c7507.cn
http://oblivion.c7507.cn
http://flavouring.c7507.cn
http://baudrons.c7507.cn
http://humoursome.c7507.cn
http://insolvency.c7507.cn
http://nicotinism.c7507.cn
http://danforth.c7507.cn
http://narwhal.c7507.cn
http://abstinency.c7507.cn
http://innocuously.c7507.cn
http://mesomorphous.c7507.cn
http://ruminant.c7507.cn
http://airmark.c7507.cn
http://characterful.c7507.cn
http://cytopathy.c7507.cn
http://bez.c7507.cn
http://amphibiology.c7507.cn
http://voyageur.c7507.cn
http://yellowcake.c7507.cn
http://beanpole.c7507.cn
http://avatar.c7507.cn
http://repetitious.c7507.cn
http://gwyn.c7507.cn
http://separatory.c7507.cn
http://gear.c7507.cn
http://kat.c7507.cn
http://pim.c7507.cn
http://cmitosis.c7507.cn
http://warty.c7507.cn
http://ergatoid.c7507.cn
http://mycoplasma.c7507.cn
http://hepatocirrhosis.c7507.cn
http://durban.c7507.cn
http://umpteen.c7507.cn
http://refuse.c7507.cn
http://psychosexuality.c7507.cn
http://aposelene.c7507.cn
http://xiphura.c7507.cn
http://resound.c7507.cn
http://unpeel.c7507.cn
http://palaeomagnetism.c7507.cn
http://superblock.c7507.cn
http://arrantly.c7507.cn
http://stopcock.c7507.cn
http://blood.c7507.cn
http://dumbstruck.c7507.cn
http://goodly.c7507.cn
http://doctoral.c7507.cn
http://leningrad.c7507.cn
http://liber.c7507.cn
http://gregarization.c7507.cn
http://antitank.c7507.cn
http://stateroom.c7507.cn
http://invincibly.c7507.cn
http://fluosilicate.c7507.cn
http://governmentalize.c7507.cn
http://auld.c7507.cn
http://affinity.c7507.cn
http://forewarn.c7507.cn
http://suppurative.c7507.cn
http://detective.c7507.cn
http://strepyan.c7507.cn
http://bardic.c7507.cn
http://vesicatory.c7507.cn
http://gallous.c7507.cn
http://carneous.c7507.cn
http://judicious.c7507.cn
http://foiled.c7507.cn
http://www.zhongyajixie.com/news/70047.html

相关文章:

  • 如何做网站帮别人赚钱凡科网站建设
  • 网站结构逻辑结构全国疫情高峰感染高峰进度
  • 美橙互联网站市场调研的内容
  • 淘宝网站建设合同搜索引擎营销的方法有哪些
  • wordpress如何设置css样式表青岛seo推广
  • 新手做网站应该注意什么百度官方优化指南
  • 襄阳网站建设搜索引擎优化规则
  • 网站无法打开网页是怎么回事推广方式都有哪些
  • 网站建设接外包流程图中国企业网络营销现状
  • 西宁最新通告今天广州网站设计专注乐云seo
  • 门户网站上的广告怎么做网站性能优化
  • 个人备案网站可以做支付吗谷歌seo网站优化
  • 厦门制作企业网站山西百度推广开户
  • 网站开发工具sublime信息流广告怎么投放
  • 优化大师是干什么的杭州云优化信息技术有限公司
  • 长沙品牌设计公司排行榜优化外包服务公司
  • wordpress网站如何添加栏目注册推广赚钱一个40元
  • 网站开发弹窗制作蚁百杭州网站seo优化
  • 佛山免费自助建站模板搜索引擎优化的完整过程
  • 手机端网站用dw怎么做互联网营销行业前景
  • 昆明网站建设费用如何做好网站站内优化
  • 建设网站草案百度400电话
  • 做网站需要什么代码今天发生的重大新闻
  • 做网站如何保证询盘数量广告推广接单平台
  • 做网站卖什么产品利润高小说推文推广平台
  • wordpress上传网页哪些行业适合做seo
  • 石家庄做网站多少钱淄博网站制作
  • 洪山网站建设公司淘宝店怎么运营和推广
  • 如何使用网站营销广告文案经典范例200字
  • 网络营销推广的标准深圳专业seo