import random import time import pygame from pygame.constants import * from pygame.image import load as addimage class Base(object): def __init__(self, image, x, y, screen): self.x = x self.y = y self.image = image self.screen = screen self.speedx= 0 self.speedy = 0 def draw(self): self.screen.blit(self.image, (self.x, self.y)) def changespeed(self, x, y): self.speedx = x self.speedy = y def changespeedx(self, x): self.speedx = x def changespeedy(self, y): self.speedy = y def move(self): self.x += self.speedx self.y += self.speedy class Background(): def __init__(self): pygame.display.set_caption("Plane War Game") self.image1 = Base(addimage('./images/bg1.png'), 0, -1200) self.image2 = Base(addimage('./images/bg2.png'), 0, -600) self.image3 = Base(addimage('./images/bg3.png'), 0, 0) self.bgs = [] self.bgs.append(self.image1) self.bgs.append(self.image2) self.bgs.append(self.image3) self.speedy = 3 for bg in self.bgs: bg.changespeedy(self.speedy) def show(self): for bg in self.bgs: bg.move() bg.draw() if bg.y > 1200: bg.y = -600 def main(): maxsize = (800, 600) screen = pygame.display.set_mode(maxsize) a = pygame.image.load("./images/bg2.png") while True: a.show() time.sleep(0.03) if __name__ == '__main__': main()
时间: 2023-07-14 10:11:47 浏览: 79
这段代码存在一些错误,例如:
1. 在 Base 类的构造函数中,没有设置 self.rect 属性,导致无法使用碰撞检测函数;
2. 在 Background 类的构造函数中,没有设置 self.rect 属性,同样无法使用碰撞检测函数;
3. 在 main 函数中,应该创建 Background 类的对象,而不是直接创建 Base 类的对象;
4. 在 main 函数中,没有处理 pygame.QUIT 事件,导致无法正常退出游戏。
下面是修正后的代码:
相关问题
File "D:\Anaconda3\envs\yolo5_fire\lib\site-packages\pygame\__init__.py", line 92, in <module> from pygame.base import * # pylint: disable=wildcard-import; lgtm[py/polluting-import] ModuleNotFoundError: No module named 'pygame.base'
这是一段报错信息,意思是在 D 盘上的 Anaconda3 目录下,yolo5_fire 环境中的 site-packages 文件夹里的 pygame 包的 __init__.py 文件的第 92 行出现问题,可能是因为无法导入 pygame.base 模块。
import random import sys import time import pygame from pygame.locals import * from collections import deque
您的代码有语法错误,应该将多个`import`语句分开写,每个`import`语句后面只能跟一个模块名或变量名。可以将代码修改为以下形式:
```python
import random
import sys
import time
import pygame
from pygame.locals import *
from collections import deque
```
这样就可以分别导入`random`、`sys`、`time`、`pygame`、`pygame.locals`和`collections`模块中的内容,方便我们在代码中使用它们。其中`from pygame.locals import *`表示从`pygame`模块中导入所有常量和函数,可以直接使用,而不需要加上模块名。`from collections import deque`表示从`collections`模块中只导入`deque`类。
阅读全文