2021-02-28

学习python之武装飞机项目之路(day2-创建Ship类)

今天学习创建Ship类:

ship.py

import pygame
class Ship():

    def __init__(self,screen):
        #初始化飞船并设置初始位置
        self.screen = screen

        #加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('images\ship.bmp')
        self.rect = self.image.get_rect()#返回一个get_rect()的属性
        self.screen_rect =screen.get_rect()
        #将每个新飞船放在屏幕底部中央

        self.rect.centerx = self.screen_rect.centerx#对象在x方向上居中
        self.rect.bottom = self.screen_rect.bottom#对象底部与屏幕底部对齐

    def blitme(self):
        #指定位置绘制飞船
        self.screen.blit(self.image,self.rect) #调用这个方法在屏幕上绘制飞机
`

alien_invasion

修改后的主文件代码:

import sys
import pygame
from settings import *
from ship import *

def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings = Settings()
    screen =pygame.display.set_mode((ai_settings.screen_with,ai_settings.screen_height))
    pygame.display.set_caption('Alien Invasion')
    #创建一艘飞船
    ship =Ship(screen)

    # 设置背景色
    bg_color = (230, 230, 230)
    # 开始游戏的主循环
    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文件中,把 self.screen.blit(self.image,self.rect)
写成了: self.screen.bilt(self.image,self.rect)
把原本的blit写错了bilt,导致出现了以下错误:

AttributeError: 'pygame.Surface' object has no attribute 'bilt'

这句话的意思就是在pygame.Surface类中没有bilt这个属性,让我纠结了半天,最后回头发现原理字母拼写错误,还一直以为是正确的。

经验教训:
1.出现问题是先检查一下字母有没有写错。
2.出现问题再捋一下思路,流程。

今天知识点:

pygame.image.load()#作用是读取图像文件

get_rect() #作用是一个处理矩形图像的方法,返回值包含矩形的设置居中属性(比如再x方向上居中等等)

self.screen.bilt(): 将位图按照设置绘制到屏幕上,screen为建立的主屏;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值