AttributeError: 'pygame.math.Vector2' 对象没有属性

如何解决AttributeError: 'pygame.math.Vector2' 对象没有属性

无法绘制食物,因为 pygame 错误“AttributeError: 'pygame.math.Vector2' object has no attribute”。不知道我错过了什么......帮我摆脱它。 我的代码在这里

import pygame,sys
from pygame.locals import *
from pygame.math import Vector2

class Food:
    def __init__(self):
        self.food_x = 5
        self.food_y = 4
        self.position = Vector2(self.food_x,self.food_y)

    def draw_food(self):
        food_shape = pygame.Rect(self.position.food_x,self.position.food_y,cell_size,cell_size)
        pygame.draw.rect(screen,screen_surface_color,food_shape)

cell_size = 40
cell_number = 19
screen_color = (175,215,70)
screen_surface_color = (70,70,214)

pygame.init()
screen = pygame.display.set_mode((cell_number * cell_size,cell_number * cell_size))
clock = pygame.time.Clock()

food = Food()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
    
        elif event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill(screen_color)
    food.draw_food()
    pygame.display.update()
    clock.tick(60)

我收到此错误

Traceback (most recent call last):
File "e:\archive_root\CSE\Python\portfolio_py\projects_py\games_py\snake2_py\snake_game2.py",line 39,in <module>
food.draw_food()
File "e:\archive_root\CSE\Python\portfolio_py\projects_py\games_py\snake2_py\snake_game2.py",line 12,in draw_food
food_shape = pygame.Rect(self.position.food_x,cell_size)
AttributeError: 'pygame.math.Vector2' object has no attribute 'food_x'

解决方法

import sys import pygame from pygame import * import cv2 pygame.init() screen = pygame.display.set_mode((226,318)) player_pos = [95,292] player = pygame.image.load('Player.png').convert() player.set_colorkey((255,255,255)) level1 = list(cv2.imread('Map1.png')) # the​ image moving_right = False moving_left = False moving_up = False moving_down = False clock = pygame.time.Clock() while True: screen.fill((15,15,15)) player_rect = screen.blit(player,player_pos) if moving_right == True: player_pos[0] += 2 if moving_left == True: player_pos[0] -= 2 if moving_up == True: player_pos[1] -= 2 if moving_down == True: player_pos[1] += 2 for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == KEYDOWN: if event.key == K_RIGHT: moving_right = True if event.key == K_LEFT: moving_left = True if event.key == K_UP: moving_up = True if event.key == K_DOWN: moving_down = True if event.type == KEYUP: if event.key == K_RIGHT: player_pos[0] += 24 moving_right = False if event.key == K_LEFT: player_pos[0] -= 24 moving_left = False if event.key == K_UP: player_pos[1] -= 24 moving_up = False if event.key == K_DOWN: player_pos[1] += 24 moving_down = False if player_pos[1] > 290: moving_down = False #This will be changed later so you die if player_pos[1] < 4: moving_up = False if player_pos[0] < 4: moving_left = False if player_pos[0] > 212: moving_right = False a = screen.get_width()/32 b = screen.get_height()/24 print(a,b) for i in range(len(level1)): for j in range(len(level1[i])): blue = list(level1[i][j])[0] green = list(level1[i][j])[1] red = list(level1[i][j])[2] if blue == 255 and green == 255 and red == 255: pygame.draw.rect(screen,(255,255),pygame.Rect(100,100,32,32)) else: pygame.draw.rect(screen,(0,0),32)) pygame.display.update() clock.tick(120) print(clock.get_fps()) pygame.quit() 没有 pygame.math.Vector2 属性,我认为您指的是它具有的 flood_xx 属性:

y

Pygame Docs for Vector2 here

,

Food 有属性 food_xfood_y,但是矢量对象 position 有属性 xy

food_shape = pygame.Rect(self.position.food_x,self.position.food_y,cell_size,cell_size)

food_shape = pygame.Rect(self.position.x,self.position.y,cell_size)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?