鱼C论坛

 找回密码
 立即注册
查看: 891|回复: 7

[已解决]飞机大战,55行,AttributeError: has no attribut...

[复制链接]
发表于 2020-5-8 09:43:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. import sys
  2. import traceback
  3. from pygame.locals import *
  4. import pygame
  5. #import myplane
  6. import random
  7. import enemy_me

  8. pygame.init()
  9. pygame.mixer.init()

  10. bg_size = widh,height = 480,700
  11. screen = pygame.display.set_mode(bg_size)
  12. pygame.display.set_caption("飞机大战")

  13. background = pygame.image.load("image/background.png").convert()

  14. BLACK = (0,0,0)
  15. GREEN = (0,255,0)
  16. RED = (255,0,0)

  17. #载入游戏音乐
  18. pygame.mixer.music.load("sound/game_music.ogg")
  19. pygame.mixer.music.set_volume(0.2)
  20. bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
  21. bullet_sound.set_volume(0.2)
  22. bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
  23. bomb_sound.set_volume(0.2)
  24. supply_sound = pygame.mixer.Sound("sound/supply.wav")
  25. supply_sound.set_volume(0.2)
  26. get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
  27. get_bomb_sound.set_volume(0.2)
  28. get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
  29. get_bullet_sound.set_volume(0.2)
  30. upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
  31. upgrade_sound.set_volume(0.2)
  32. enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
  33. enemy3_fly_sound.set_volume(0.2)
  34. enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
  35. enemy1_down_sound.set_volume(0.2)
  36. enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
  37. enemy2_down_sound.set_volume(0.2)
  38. enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
  39. enemy3_down_sound.set_volume(0.2)
  40. me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
  41. me_down_sound.set_volume(0.2)

  42. class Myplane(pygame.sprite.Sprite):
  43.     def __init__(self,bg_size):
  44.         pygame.sprite.Sprite.__init__(self)  #继承类

  45.         self.image = pygame.image.load("image/me1.png").convert_alpha
  46.         #self.image2 = pygame.image.load("image/me2.png").convert_alpha()
  47.         self.rect = self.image.get_rect()
  48.         self.width,self.height =bg_size[0], bg_size[1]
  49.         self.rect.left,self.rect.top = \
  50.                                      (self.width - self.rect.width)//2,\
  51.                                       self.height - self.rect.height -60
  52.         self.speed = 10

  53.     def moveUp(self):
  54.         if self.rect.top >0:
  55.             self.rect.top -= self.speed
  56.         else:
  57.             self.rect.top = 0

  58.     def moveDown(self):
  59.         if self.rect.bottom < self.height-60:
  60.             self.rect.bottom += self.speed
  61.         else:
  62.             self.rect.bottom = self.height -60

  63.     def moveLeft(self):
  64.         if self.rect.left >0:
  65.             self.rect.left -= self.speed
  66.         else:
  67.             self.rect.left = 0

  68.     def moveRight(self):
  69.         if self.rect.right < self.width:
  70.             self.rect.right += self.speed
  71.         else:
  72.             self.rect.right = self.width




  73. def main():
  74.     pygame.mixer.music.play(-1)   #无限循环背景
  75.     clock = pygame.time.Clock()

  76.     #生成我方飞机
  77.     me = Myplane(bg_size)


  78.     #生成敌方飞机
  79.     #you = enemy_me.Enemyplane(bg_size)

  80.     #用于切换图片
  81.     switch_image = True
  82.    
  83.     running = True
  84.     while running:
  85.         for event in pygame.event.get():
  86.             if event.type == QUIT:
  87.                 pygame.quit()
  88.                 sys.exit()

  89.         #获取用户的键盘操作,当键盘操作频繁时,建议使用这种方式获取键盘
  90.         key_pressed = pygame.key.get_pressed()
  91.         
  92.         if key_pressed[K_w] or key_pressed[K_UP]:  #按下w或者方向键
  93.             me.moveUp()
  94.         if key_pressed[K_s] or key_pressed[K_DOWN]:  #按下w或者方向键
  95.             me.moveDown()
  96.         if key_pressed[K_a] or key_pressed[K_LEFT]:  #按下w或者方向键
  97.             me.moveLeft()
  98.         if key_pressed[K_d] or key_pressed[K_RIGHT]:  #按下w或者方向键
  99.             me.moveRight()
  100.   
  101.         screen.blit(background,(0,0))
  102.         #绘制我方飞机
  103.         #switch_image = not switch_image  #取反,实现不断切换
  104.         #if switch_image:
  105.         screen.blit(me.image,me.rect)
  106.         #else:
  107.         #    screen.blit(me.image2,me.rect)
  108.         
  109.         pygame.display.flip()
  110.         clock.tick(60)
  111.         
  112.         
  113.   
  114. if __name__ =="__main__":
  115.     #在双击打开文件时,如果出现异常,将异常显示出来
  116.     try:
  117.         main()
  118.     except SystemExit:
  119.         pass
  120.     except:
  121.         traceback.print_exc()
  122.         pygame.quit()
  123.         input()



复制代码
最佳答案
2020-5-8 09:59:06
54行,那个convert_alpha那里为何没了括号?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-8 09:50:40 | 显示全部楼层
错误信息发全
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-8 09:59:06 | 显示全部楼层    本楼为最佳答案   
54行,那个convert_alpha那里为何没了括号?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-8 10:03:40 | 显示全部楼层
  1.   self.rect = self.image.get_rect()
  2. AttributeError: 'builtin_function_or_method' object has no attribute 'get_rect'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-8 10:06:33 | 显示全部楼层
qiuyouzhi 发表于 2020-5-8 09:59
54行,那个convert_alpha那里为何没了括号?

找了好久没找到错误,我都开始怀疑人生了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-8 10:08:47 | 显示全部楼层
猪猪虾 发表于 2020-5-8 10:06
找了好久没找到错误,我都开始怀疑人生了

你都把错误位置(55行)发出来了,那就直接看55行呗
发现,有个self.image.get_rect(),估计是在调用
get_rect的时候出了问题,所以去看self.image的定义,
就可以发现少了个括号了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-8 11:10:43 | 显示全部楼层
qiuyouzhi 发表于 2020-5-8 10:08
你都把错误位置(55行)发出来了,那就直接看55行呗
发现,有个self.image.get_rect(),估计是在调用
g ...

学到了,谢谢,我满脑子都是,这个地方怎么可能错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-8 11:11:51 | 显示全部楼层
猪猪虾 发表于 2020-5-8 11:10
学到了,谢谢,我满脑子都是,这个地方怎么可能错


永远不要认为某个地方一定对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 22:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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