|
|

楼主 |
发表于 2025-8-29 18:37:56
|
显示全部楼层
这段代码在我的设备上运行没有问题啊……
抱歉,我水平有限,不能解决你的报错问题。下面是AI提供的修改方案,如果还是不行的话再看看有没有大佬能提供建议吧:
- import pygame as pg
- import sys
- from random import *
- from math import *
- # pygame初始化
- pg.init()
- # 设置窗口
- window = pg.display.set_mode((800,600))
- pg.display.set_caption("game")
- # 设置弹幕速度
- speed = 2
- # 设置角色坐标
- mx = 400
- my = 500
- isOver = False
- life = 10
- score = 0
- # 每20个红色弹幕之后生成1个绿色弹幕
- wait = 20
- # 设置按键重复
- pg.key.set_repeat(1,10)
- # 获得字体
- font = pg.font.Font(None,35)
- # 定义弹幕类
- class Bullet():
- def __init__(self, colour):
- self.x = 400
- self.y = 300
- self.ifDistory = False
- self.angle = pi / 180 * randint(0,359)
- self.colour = colour
- # 建立子弹库
- every = []
- def main_game_loop():
- global mx, my, isOver, life, score, wait, every
-
- while True:
- # 处理按键事件
- for ev in pg.event.get():
- if ev.type == pg.QUIT:
- pg.quit()
- sys.exit()
-
- # 角色控制
- elif ev.type == pg.KEYDOWN:
- if ev.key == pg.K_UP:
- my -= 2
- if ev.key == pg.K_DOWN:
- my += 2
- if ev.key == pg.K_LEFT:
- mx -= 2
- if ev.key == pg.K_RIGHT:
- mx += 2
-
- if not isOver:
- # 增加弹幕数量
- every.append(Bullet("red"))
- if wait == 0:
- every.append(Bullet("green"))
- wait = 20
- else:
- wait -= 1
- # 绘制背景
- window.fill("white")
-
- for i in every:
- # 更改弹幕状态
- i.x += (speed * cos(i.angle))
- i.y -= (speed * sin(i.angle))
- # 绘制弹幕
- pg.draw.circle(window, i.colour, (i.x, i.y), 5, 2)
- # 边缘检测
- if i.x < 0 or i.x > 800 or i.y < 0 or i.y > 600:
- i.ifDistory = True
- # 碰撞判定
- if ((i.x - mx) ** 2 + (i.y - my) ** 2) ** 0.5 <= 10:
- i.ifDistory = True
- if i.colour == "red":
- life -= 1
- else:
- score += 1
- for i in every[:]: # 使用切片创建副本,避免在迭代时修改列表
- # 删除弹幕
- if i.ifDistory:
- every.remove(i)
-
- # 死亡判定
- if life <= 0 or mx < 0 or mx > 800 or my < 0 or my > 600:
- isOver = True
- # 绘制角色
- pg.draw.circle(window, "black", (mx, my), 5, 2)
- # 绘制文字
- window.blit(font.render("life:%s" % life, True, "black"), (20, 20))
- window.blit(font.render("score:%s" % score, True, "black"), (20, 60))
- # 画面更新
- pg.display.update()
- # 设置延迟
- pg.time.delay(10)
- # 启动游戏
- if __name__ == "__main__":
- main_game_loop()
复制代码 |
|