当前位置:   article > 正文

星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫

星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大脸猫

系列文章目录

 星际争霸之小霸王之小蜜蜂(七)--消失的子弹

 星际争霸之小霸王之小蜜蜂(六)--让子弹飞

 星际争霸之小霸王之小蜜蜂(五)--为小蜜蜂降速

 星际争霸之小霸王之小蜜蜂(四)--事件监听-让小蜜蜂动起来

目录

 前言

一、寻找图片

 二、创建Alien类

 三、小老鼠实例化

 四、小老鼠上灯台

 总结


前言

 前期已经完成了小蜜蜂(这里我想更名了,因为是一只大花猫,每次说小蜜蜂怪怪的,以后都叫大花猫吧)的创建,现在我们要创建它的对手了,一群小老鼠,今天我们按照计划,先搞定一只小老鼠。

一、寻找图片

 像之前的小蜜蜂一样,找图片不好找,本来是想找一只可爱的小老鼠,白色的,萌萌的,结果找不到,只能找一只写实的,看着有点恶心,不过缩小以后好多了,大家凑合看。

 

 二、创建Alien类

 有了前面创建大花猫的经历,其实我们做这个小老鼠还是有一定思路的,首先,我们要创建一个老鼠的类mouse,为了编写的时候不搞混淆,我们把类的名字设置的和书上一样,也命名为Alien,然后我们需要在里面设置小老鼠的位置、速度等属性,和大花猫一样,下面我们看代码:

  1. import pygame
  2. from pygame.sprite import Sprite
  3. class Alien(Sprite):
  4. def __init__(self,new_setting,screen):
  5. super(Alien,self).__init__()
  6. self.screen = screen
  7. self.new_setting = new_setting
  8. self.image = pygame.image.load('mouse.jpg')
  9. self.rect = self.image.get_rect()
  10. self.rect.x = self.rect.width
  11. self.rect.y = self.rect.height
  12. self.x = float(self.rect.x)
  13. def blitme(self):
  14. self.screen.blit(self.image,self.rect)

 可以看出,这段代码与大花猫的代码Ship很相似,但是它导入了Sprite类,这个类在创建子弹的时候也导入了,因为Sprite可以处理多个对象,子弹和小老鼠都不止一个。self.x = float(self.rect.x)的作用也和子弹、大花猫一致,用来存储位置信息,会有一个属性来控制速度,不明白的可以看看前面的内容。

 三、小老鼠实例化

 Alien类写好之后,我们就需要在主函数中创建它的实例,创建实例很简单,我们导入Alien类,再创建,看代码:

  1. import pygame
  2. import settings
  3. from ship import Ship
  4. import game_functions as gf
  5. from pygame.sprite import Group
  6. from alien import Alien
  7. def run_game():
  8. pygame.init()
  9. new_setting=settings.Settings()
  10. screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))
  11. ship = Ship(screen,new_setting)
  12. alien = Alien(new_setting,screen)
  13. pygame.display.set_caption("狂敲代码的橘子")
  14. bullets = Group()
  15. while True:
  16. gf.check_events(new_setting,screen,ship,bullets)
  17. ship.update()
  18. gf.update_bullets(bullets)
  19. gf.update_screen(new_setting,screen,ship,bullets)
  20. run_game()

 我们将创建实例的代码就写在ship下面,目前我们的操作都是按照先创建一只小老鼠来的,创建好实例后,我们先让屏幕显示这一只小老鼠看看效果。

 四、小老鼠上灯台

 在Alien类中,我们已经写好了显示函数blitme(),我们只需要在game_functions模块的update_screen()函数里调用blitme就可以了,同样,我们把代码写在ship.blitme()后面。

  1. import sys
  2. import pygame
  3. from bullet import Bullet
  4. def check_keydown_events(event,new_setting,screen,ship,bullets):
  5. if event.key == pygame.K_RIGHT:
  6. ship.moving_right = True
  7. elif event.key == pygame.K_LEFT:
  8. ship.moving_left = True
  9. elif event.key == pygame.K_SPACE:
  10. fire_bullet(new_setting, screen, ship, bullets)
  11. elif event.key ==pygame.K_q:
  12. sys.exit()
  13. def check_keyup_events(event,ship):
  14. if event.key == pygame.K_RIGHT:
  15. ship.moving_right = False
  16. if event.key == pygame.K_LEFT:
  17. ship.moving_left = False
  18. def check_events(new_setting,screen,ship,bullets):
  19. for event in pygame.event.get():
  20. if event.type == pygame.QUIT:
  21. sys.exit()
  22. elif event.type==pygame.KEYDOWN:
  23. check_keydown_events(event,new_setting,screen,ship,bullets)
  24. elif event.type==pygame.KEYUP:
  25. check_keyup_events(event, ship)
  26. def fire_bullet(new_setting,screen,ship,bullets):
  27. if len(bullets) < new_setting.bullets_allowed:
  28. new_bullet = Bullet(new_setting, screen, ship)
  29. bullets.add(new_bullet)
  30. def update_bullets(bullets):
  31. bullets.update()
  32. for bullet in bullets.copy():
  33. if bullet.rect.bottom <= 0:
  34. bullets.remove(bullet)
  35. def update_screen(new_setting,screen,ship,bullets,alien):
  36. screen.fill(new_setting.bg_color)
  37. for bullet in bullets.sprites():
  38. bullet.draw_bullet()
  39. ship.blitme()
  40. alien.blitme()
  41. pygame.display.flip()

 这里我们要注意,我们将alien作为传参,传给了update_screen,所以我们的主函数调用update_screen的代码需要修改,加上传参alien。

 现在一只小老鼠已经完成,我们来看看效果。

 

 总结

今天完成了一只小老鼠的创建,明天我们来创建一群小老鼠。 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/134443
推荐阅读
相关标签
  

闽ICP备14008679号