|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 junco 于 2018-6-14 16:54 编辑
各位大神好,
小弟最近在看《Python从入门到实践》这边儿书,看到12章节关于做外星人入侵的这个实验项目。
做到这里有点儿问题,下面的代码基本上是和书上一模一样。但是会报错说:
File "C:\Users\z628483\Desktop\Junco\Study\Python\Pycharm\alien_invasion\ship.py", line 11, in __init__
self.rect.centerx=self.screen_rect.centerx
AttributeError:builtin_function_or_method' object has no attribute 'centerx’
书上的意思是“centerx”是pygame的一个内嵌属性,但是从自己实验来看,好像不是。
以下是代码,请哪位大神帮我看一下,谢谢。
——————————————————————————————————
##Alien_invasion.py
import sys
import pygame
from settings import Settings
from ship import Ship
def run_game():#初始化游戏并创建一个屏幕对象
pygame.init()
ai_settings=Settings()
screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_hight))
pygame.display.set_caption('Alien Invasion')
ship = Ship(screen)
#开始游戏的主循环
while True:
#监视键盘和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(ai_settings.bg_color)
ship.blitme()
pygame.display.flip()#让最近绘制的屏幕可见
run_game()
___________________________
#ship.py
import pygame
class Ship():
def __init__(self,screen): #screen 指定要将飞船绘制到什么地方
self.screen = screen
self.image = pygame.image.load('images/ship.bmp') #调用图形,返回一个表示飞船的surface,存到self.image中
self.rect = self.image.get_rect #使用get_rect()获取surface的属性rect
self.screen_rect = screen.get_rect #首先将屏幕的矩形存储在self.screen_rect中
self.rect.centerx=self.screen_rect.centerx
self.rect.bottom=self.screen_rect.bottom
def blitme(self):
self.screen.blit(self.image,self.rect)
——————————————————————————————————
##settings.py
class Settings():
'存储所有设置的类'
def __init__(self):
self.screen_width = 1200
self.screen_hight = 800
self.bg_color = (250,250,250)
self.rect = self.image.get_rect #使用get_rect()获取surface的属性rect
self.screen_rect = screen.get_rect #首先将屏幕的矩形存储在self.screen_rect中
这里的 get_rect都是函数,后面请加上小括号
|
|