最近在看《python编程:从入门到实践》这本书学习python。在项目外星人入侵的射击练习——侧面射击这里遇到了问题。
侧面射击 :编写一个游戏,将一艘飞船放在屏幕左边,并允许玩家上下移动飞船。在玩家按空格键时,让飞船发射一颗在屏幕中向右穿行的子弹,并在子弹离开 屏幕而消失后将其删除。
我在编写代码时想要试一试其他效果,所以设定飞船为可以上下左右移动,子弹是一个png格式的图片而非python内生成的矩形。
我把飞船图片替换为图一,命名为eye 后面的飞船概念命名都为eye
我把子弹图片设置为图二,命名为fire,后面的子弹概念命名都为fire
设置模块
settings.py#储存相关设置的模块 class Settings: def __init__(self): #设置屏幕参数 self.screen_width = 1400 self.screen_height = 750 self.bg_color = (200,200,200) #设置眼的参数 self.eye_speed_factor = 1.5 #设置关于火的参数 self.fire_speed_factor = 2.5 #此游戏不限制子弹数量
eye.py
#创建一个关于眼的模块
import pygame
class Eye:
def __init__(self,settings,screen):
#初始化眼
self.setting = settings
self.screen = screen
#返回飞船贴图路径
self.image = pygame.image.load("image/eye.png")
#矩形化屏幕和眼贴图
self.screen_rect = self.screen.get_rect()
self.rect = self.image.get_rect()
#以屏幕为参照设置眼的初始位置(屏幕右边界中央)
self.rect.right = self.screen_rect.right
self.rect.centery = self.screen_rect.centery
#用属性x和y来储存浮点化后的坐标
self.x = float(self.rect.right)
self.y = float(self.rect.centery)
#设置眼上下左右移动的标志
self.moving_right = False
self.moving_left = False
self.moving_down = False
self.moving_up = False
#创建一个函数用于传输图像