鱼C论坛

 找回密码
 立即注册
查看: 1485|回复: 2

[已解决]照着视频写的打飞机的代码为啥出错了, not enough values to unpack (expected 3,...

[复制链接]
发表于 2020-1-22 11:34:28 | 显示全部楼层 |阅读模式

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

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

x
运行之后就会报错:
Traceback (most recent call last):
  File "G:\python\测试\pygame\我的飞机\main.py", line 92, in <module>
    main()
  File "G:\python\测试\pygame\我的飞机\main.py", line 52, in main
    me = myplane.Myplane(bg_size)
  File "G:\python\测试\pygame\我的飞机\myplane.py", line 13, in __init__
    self.height - self.rect.height - 60
ValueError: not enough values to unpack (expected 3, got 2)


这是我写的mian部分,和myplane部分:

main:
  1. import myplane
  2. #import bullet
  3. #import enemy
  4. #import supply
  5. from pygame.locals import *
  6. from random import *

  7. #游戏 音乐初始化
  8. pygame.init()
  9. pygame.mixer.init()

  10. #尺寸,背景,标题
  11. bg_size = width, height = 480, 700
  12. screen = pygame.display.set_mode(bg_size)
  13. pygame.display.set_caption('飞机大战')

  14. background = pygame.image.load('images/background.png').convert()

  15. #载入游戏音乐
  16. pygame.mixer.music.load("sound/game_music.ogg")
  17. pygame.mixer.music.set_volume(0.2)

  18. def main():
  19.     pygame.mixer.music.play(-1)

  20.     #生成我方飞机
  21.     me = myplane.Myplane(bg_size)
  22.    
  23.     clock = pygame.time.Clock()
  24.    
  25.     running = True

  26.     while running:

  27.         #设置退出条件
  28.         for event in pygame.event.get():
  29.             if event.type == QUIT:
  30.                 pygame.quit()
  31.                 sys.exit()

  32.         #检测用户的键盘操作
  33.         key_pressed = pygame.key.get_pressed()

  34.         if key_pressed[K_w] or key_pressed[K_UP]:
  35.             me.moveUP()
  36.         if key_pressed[K_s] or key_pressed[K_DOWN]:
  37.             me.moveDOWN()
  38.         if key_pressed[K_a] or key_pressed[K_LEFT]:
  39.             me.moveLEFT()
  40.         if key_pressed[K_d] or key_pressed[K_RIGHT]:
  41.             me.moveRIGHT()

  42.         
  43.         #打印背景
  44.         screen.blit(background,(0,0))

  45.         #绘制我方飞机
  46.         screen.blit(me.image, me.rect)
  47.         
  48.         pygame.display.flip()

  49.         clock.tick(60)
  50.    
  51. #主程序运行
  52. if __name__ == '__main__':
  53.     try:
  54.         main()
  55.     except SystemExit:
  56.         pass
  57.     except:
  58.         traceback.print_exc()
  59.         pygame.quit
  60.         input()

复制代码


myplane 部分
  1. import pygame


  2. class Myplane(pygame.sprite.Sprite):
  3.     def __init__ (self, bg_size):
  4.         pygame.sprite.Sprite.__init__(self)

  5.         self.image = pygame.image.load('images/me1.png').convert_alpha()
  6.         self.rect = self.image.get_rect()
  7.         self.width,self.height = bg_size[0], bg_size[1]
  8.         self.rect.left, self,rect.top = \
  9.                         (self.width - self.rect.width) //2, \
  10.                         self.height - self.rect.height - 60
  11.         self.speed = 10

  12.     #定义上下左右属性
  13.     def moveUP(self):
  14.         if self.rect.top > 0:
  15.             self.rect.top -= self.speed
  16.         else:
  17.             self.rect.top = 0
  18.             
  19.     def moveDOWN(self):
  20.         if self.rect.bottom < self.height - 60:
  21.             self.rect.top += self.speed
  22.         else:
  23.             self.rect.bottom = self.height -60

  24.     def moveLEFT(self):
  25.         if self.rect.left > 0:
  26.             self.rect.left -= self.speed
  27.         else:
  28.             self.rect.left = 0

  29.     def moveRIGHT(self):
  30.         if self.rect.right < self.width:
  31.             self.rect.left += self.speed
  32.         else:
  33.             self.rect.right = self.width

  34.    

复制代码



求各位大佬指教!!万分感谢!!
最佳答案
2020-1-22 20:55:13
myplane里:
  1. self.rect.left, self,rect.top = \
  2.                         (self.width - self.rect.width) //2, \
  3.                         self.height - self.rect.height - 60
复制代码


把上面第一行self后面的逗号改成点号:
  1. self.rect.left, self.rect.top = \
  2.                         (self.width - self.rect.width) //2, \
  3.                         self.height - self.rect.height - 60
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-22 20:49:55 | 显示全部楼层
请问你是不是在b站上看的视频
你的代码的问题是:没有足够的值来解包
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-22 20:55:13 | 显示全部楼层    本楼为最佳答案   
myplane里:
  1. self.rect.left, self,rect.top = \
  2.                         (self.width - self.rect.width) //2, \
  3.                         self.height - self.rect.height - 60
复制代码


把上面第一行self后面的逗号改成点号:
  1. self.rect.left, self.rect.top = \
  2.                         (self.width - self.rect.width) //2, \
  3.                         self.height - self.rect.height - 60
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-13 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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