北京专业公司建网站平台如何把做的网站与域名连接

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

北京专业公司建网站平台,如何把做的网站与域名连接,wordpress上传到哪里,厦门seo关键词优化目录 前言 一、添加子弹设置 二、创建子弹 三、创建绘制和移动子弹函数 四、让子弹飞 五、效果 总结 前言 小蜜蜂的基本操作已经完成了#xff0c;现在开始编写子弹的代码了。 一、添加子弹设置 在我的预想里#xff0c;我们的小蜜蜂既然是一只猫#xff0c;那么放出的子弹…目录 前言 一、添加子弹设置 二、创建子弹 三、创建绘制和移动子弹函数 四、让子弹飞 五、效果 总结 前言 小蜜蜂的基本操作已经完成了现在开始编写子弹的代码了。 一、添加子弹设置 在我的预想里我们的小蜜蜂既然是一只猫那么放出的子弹应该是一只猫爪或者是爪印一个小梅花也是可以的但是“大蟒蛇”是画出一个灰色的长方形小方块作为子弹我们先按照书上的来操作后期我们自己再升级。 首先跟新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, groupNone)将所有精灵绘制到屏幕上。 因此首先我们在主程序中创建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.typepygame.KEYDOWN:check_keydown_events(event,new_setting,screen,ship,bullets)elif event.typepygame.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_settingsettings.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函数刷新屏幕显示出小蜜蜂和子弹。 五、效果 截至现在让子弹飞的代码基本完成我们运行程序看看效果。 总结 子弹已经飞起来了如同我们已经走在了去往山坡的路上纵有艰险我们一一克服终将取得那美丽的蒲公英。