cerper 2022-07-12 23:22 采纳率: 33.3%
浏览 50
已结题

我想自己模仿着做一个飞机大战,代码差不多但是报错,望解答

模仿如下:


import sys

import pygame

from settings import Settings

from ship import Ship

class AlienInvasion:
    #管理游戏资源和行为的类

    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)

        #设备背景色
        self.bg_color = (230, 230, 230)

    def run_game(self):
        #开设游戏的主循环
        while True:
            self._check_events()
            self._update_screen()

            

            #让最近绘制的屏幕可见
            pygame.display.flip()

    def _check_events(self):
        #响应按键和鼠标事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

    def _update_screen(self):
        #更新屏幕上的图像,并切换到新屏幕
        self.screen.fill(self.settings.bg_color)
        self.ship.blitme()

        pygame.display.flip()

if __name__ == '__main__':
    #创建游戏实例并运行游戏
    ai = AlienInvasion()
    ai.run_game()

自己的如下:

import sys

import pygame

from fish import Fish

class Bulesky:
    """管理游戏的类"""

    def __init__(self):
        """初始化并创建资源"""
        pygame.init()

        self.screen = pygame.display.set_mode((1200, 800))
        pygame.display.set_caption('Bulesky')

        self.bg_color = (0, 0, 250)

        self.fish = Fish(self)

    def run_game(self):
        """开始游戏"""
        while True:
            #监视游戏行为
            self._check_events()
            self._update_screen()

            #让最近绘制的屏幕可见
            pygame.display.flip()

    def _check_events(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()    
            


    def _update_screen(self):
        """更新屏幕上的图像,并切换屏幕"""
        self.screen.fill(self.bg_color)
        self.fish.blitme()

        pygame.display.flip()

if __name__ =='__main__':

    ai = Bulesky()
    ai.run_game()

报错

pygame 2.1.2 (SDL 2.0.18, Python 3.9.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "E:\12-1\Bulesky.py", line 48, in <module>
    ai.run_game()
  File "E:\12-1\Bulesky.py", line 26, in run_game
    self._update_screen()
  File "E:\12-1\Bulesky.py", line 41, in _update_screen
    self.fish.blitme()
AttributeError: 'Fish' object has no attribute 'blitme'
[Finished in 2.6s]

期望结果:

img

  • 写回答

1条回答 默认 最新

  • 於黾 2022-07-13 08:26
    关注

    别发图片,发代码
    首先,你这报错信息我没法复制了去你的代码里搜索,只能用眼睛看
    其次,我发现问题了但是没法复制粘贴告诉你怎么改,还要一个字一个字的敲

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 已采纳回答 7月13日
  • 修改了问题 7月13日
  • 创建了问题 7月12日

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因