nanaluo٩(๑•̀ω•́๑)۶ 2022-01-17 14:13 采纳率: 100%
浏览 39
已结题

为什么我的飞船不去底下中间呢

问题遇到的现象和发生背景
import pygame


class Ship:
    """"管理飞船的类"""

    def __init__(self, ai_game):
        """"初始化飞船并设计其初始位置"""
        self.screen = ai_game.screen
        self.screen_rect = ai_game.screen.get_rect()
        # 加载外形并获取其外接矩形
        self.image = pygame.image.load('images/ship.bmp')
        self.rect = ai_game.screen.get_rect()
        # 对于每艘新飞船,都将其放到屏幕底部中央
        self.rect.midbottom = self.screen_rect.midbottom

    def blitme(self):
        """"在指定位置绘制飞船"""
        self.screen.blit(self.image, self.rect)

```python


```python
import sys
import pygame
from settings import Settings
from ship import Ship
class AlienInvaison:
    """"管理游戏资源和行为的类"""
    def __init__(self):
        """"初始化游戏并创建游戏"""
        pygame.init()
        self.settings =Settings()
        self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))
        pygame.display.set_caption("Alien invasion")
        self.ship = Ship(self)
    def run_game(self):
        """"开始游戏主循环"""
        while True:
            #监视键盘和鼠标事件
            for event in pygame.event.get():
                if event.type ==pygame.QUIT:
                    sys.exit()
            #每次循环都要重新绘制屏幕
            self.screen.fill(self.settings.bg_color)
            self.ship.blitme()
            #让最近绘制的屏幕可见
            pygame.display.flip()
if __name__ == '__main__':
    #创建游戏示例并运行游戏
    ai = AlienInvaison()
    ai.run_game()



```问题相关代码,请勿粘贴截图 

```python
class Settings:
    """"储存游戏中所有设置的类"""
    def __init__(self):
        """"初始化游戏的设置"""
    #屏幕设置
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230,230,230)



运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果达到midbottom求解答
  • 写回答

2条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-01-19 09:43
    关注

    加载飞船图像并获取其外接矩形 

     self.image = pygame.image.load('images/ship.bmp') 
     self.rect = self.image.get_rect() 
     self.screen_rect = screen.get_rect()

    将每艘新飞船放在屏幕底部中央 

     _self.rect.centerx = self.screen_rect.centerx ___ #你少了这句****************
    self.rect.bottom = self.screen_rect.bottom

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月19日
  • 已采纳回答 1月19日
  • 创建了问题 1月17日

悬赏问题

  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入