鱼C论坛

 找回密码
 立即注册
查看: 3530|回复: 6

pygame

[复制链接]
发表于 2023-8-5 18:42:20 | 显示全部楼层
运行后报错:
  1. Traceback (most recent call last):
  2.   File "D:\1.py", line 74, in <module>
  3.     ditu()
  4.   File "D:\1.py", line 43, in ditu
  5.     if Bird.dead:
  6. AttributeError: type object 'Bird' has no attribute 'dead'
复制代码

所以才会一闪而过。
错误原因:
self.birdrect = pygame.Rect(65, 50, 50, 50) # 鸟的矩形
self.birdStatus = [pygame.image.load('niao.png'), pygame.image.load('niao.png'), pygame.image.load('niao.png')]
self.status = 0# 默认飞行状态
self.birdX = 120# 鸟所在 X 轴坐标
self.birdY = 350# 鸟所在 Y 轴坐标, 及上下飞行高度
self.jump = False# 默认情况下小鸟自动降落
self.jumpspeed = 10# 跳跃高度
self.gravity = 5# 重力
self.dead = False# 默认小鸟生命状态为活着

这些实例属性只有通过实例bird才能调用,而在你的程序里你尝试用Bird类直接调用。
修改后的程序:
  1. import sys
  2. import pygame
  3. import random
  4. class Bird(object):
  5.     '''定义一个鸟类'''
  6.     def __init__(self):
  7.         '''定义初始化方法'''
  8.         self.birdrect = pygame.Rect(65, 50, 50, 50)             # 鸟的矩形
  9.         # 定义鸟的3种状态列表
  10.         self.birdStatus = [pygame.image.load('niao.png'), pygame.image.load('niao.png'), pygame.image.load('niao.png')]
  11.         self.status = 0                 # 默认飞行状态
  12.         self.birdX = 120                # 鸟所在 X 轴坐标
  13.         self.birdY = 350                # 鸟所在 Y 轴坐标, 及上下飞行高度
  14.         self.jump = False               # 默认情况下小鸟自动降落
  15.         self.jumpspeed = 10             # 跳跃高度
  16.         self.gravity = 5                # 重力
  17.         self.dead = False               # 默认小鸟生命状态为活着

  18.     def bird_update(self):
  19.         if self.jump:
  20.             self.jumpspeed -= 1                     # 速度递减 上升越来越慢
  21.             self.birdY -= self.jumpspeed            # 鸟 Y 轴坐标减小 小鸟上升
  22.         else:
  23.             # 小鸟坠落
  24.             self.gravity += 0.2                     # 重力递增,下降越来越快
  25.             self.birdY += self.gravity              # 鸟 Y 轴坐标增加 小鸟下降
  26.         self.birdrect[1] = self.birdY               # 更改 Y 轴位置

  27. class Guandao(object):
  28.     '''定义一个管道类'''
  29.     def __init__(self):
  30.         '''定义初始化方法'''
  31.         pass
  32.     def updateGuandao(self):
  33.         '''水平移动'''
  34.         pass

  35. def ditu():
  36.     '''定义创建地图的方法'''
  37.     screen.fill((255, 255, 255))                                # 填充颜色
  38.     screen.blit(background, (0, 0))                             # 填入到背景
  39.     # 显示小鸟
  40.     if bird.dead:
  41.         bird.status = 2
  42.     elif bird.jump:                                             # 起飞状态
  43.         bird.status = 1
  44.     screen.blit(bird.birdStatus[bird.status], (bird.birdX, bird.birdY))            # 设置小鸟的坐标
  45.     bird.bird_update()                                          # 鸟移动
  46.     pygame.display.update()                                     # 更新显示

  47. if __name__ == '__main__':
  48.     '''主程序'''
  49.     pygame.init()                                               # 初始化 pygame
  50.     size   = width, height = 400, 680                           # 设置窗口大小
  51.     screen = pygame.display.set_mode(size)                      # 显示窗口
  52.     clock  = pygame.time.Clock()                                # 设置时钟
  53.     guandao = Guandao()                                         # 实例化管道
  54.     bird = Bird()                                               # 实例化鸟
  55.    
  56.     # 执行死循环,确保窗口一直显示
  57.     while True:
  58.         clock.tick(60)
  59.         # 轮询事件
  60.         for event in pygame.event.get():
  61.             if event.type == pygame.QUIT:
  62.                 pygame.quit()
  63.                 sys.exit()
  64.             if (event.type == pygame.KEYDOWN or event.type == pygame.MOUSEBUTTONDOWN) and not bird.dead:
  65.                 bird.jump = True                                # 跳跃
  66.                 bird.gravity = 5                                # 重力
  67.                 bird.jumpspeed = 10                             # 跳跃速度

  68.         background = pygame.image.load('女孩.jpg')
  69.         ditu()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-8 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表