Python从入门到实践
项目1
判断aliens(编组)是否为0是报错
目前看是数据类型不对。你看看上面给你报错的这些行的代码有没有问题。然后再debug看一下,这些位置的数据类型,基本就可以了
"""外星人的相关数据"""
import pygame
from pygame.sprite import Sprite
class Alien(Sprite):
def __init__(self, ai_settings, screen):
super(Alien, self).__init__() # 继承pygame中的Sprite
self.screen = screen
self.ai_settings = ai_settings
self.image = pygame.image.load('images/alien.png') # 加载外星人的图像
self.rect = self.image.get_rect() # 获取该图像的rect对象
# 设置图像的位置(即x,y值)
self.rect.x = self.rect.width # 设置图像的横坐标为图像的宽
self.rect.y = self.rect.height # 设置图像的纵坐标为图像的高(即将图像放在屏幕左上角(0,0)点)
self.x = float(self.rect.x) # rect对应值只能为整数,这里将其转为字符串
def blitme(self):
self.screen.blit(self.image, self.rect) # 将该外星人图像移到屏幕中
def update(self):
# 外星人每一次移动都是在刷新屏幕
self.x += (self.ai_settings.alien_speed_factor * self.ai_settings.fleet_direction) # 图像的横坐标等于速度乘以方向,方向1为右,-1为左
self.rect.x = self.x
def check_edges(self):
# 判断是否碰到屏幕边缘,碰到就改变方向
screen_rect = self.screen.get_rect() # 获取屏幕的rect对象
if self.rect.right >= screen_rect.right:
return True # 图像的右边缘超出了屏幕右边缘返回True
elif self.rect.left <= 0:
return True # 图像的左边缘小于0返回True,因为屏幕远点在左上角,左边缘为0