gpt4 book ai didi

python - 类型错误 : can only concatenate tuple (not "vector") to tuple

转载 作者:太空宇宙 更新时间:2023-11-04 06:16:41 25 4
gpt4 key购买 nike

我是 python 和 pygame 的新手,我正在尝试学习向量和类的基础知识,但在这个过程中我搞砸了,而且我在理解和修复标题中的错误消息方面苦苦挣扎。

这是我的 Vector 类的代码:

import math

class Vector(object):

#defaults are set at 0.0 for x and y
def __init__(self, x=0.0, y=0.0):
self.x = x
self.y = y

#allows us to return a string for print
def __str__(self):
return "(%s, %s)"%(self.x, self.y)

# from_points generates a vector between 2 pairs of (x,y) coordinates
@classmethod
def from_points(cls, P1, P2):
return cls(P2[0] - P1[0], P2[1] - P1[1])

#calculate magnitude(distance of the line from points a to points b
def get_magnitude(self):
return math.sqrt(self.x**2+self.y**2)

#normalizes the vector (divides it by a magnitude and finds the direction)
def normalize(self):
magnitude = self.get_magnitude()
self.x/= magnitude
self.y/= magnitude

#adds two vectors and returns the results(a new line from start of line ab to end of line bc)
def __add__(self, rhs):
return Vector(self.x +rhs.x, self.y+rhs.y)

#subtracts two vectors
def __sub__(self, rhs):
return Vector(self.x - rhs.x, self.y-rhs.y)

#negates or returns a vector back in the opposite direction
def __neg__(self):
return vector(-self.x, -self.y)

#multiply the vector (scales its size) multiplying by negative reverses the direction
def __mul__(self, scalar):
return Vector(self.x*scalar, self.y*scalar)

#divides the vector (scales its size down)
def __div__(self, scalar):
return Vector(self.x/scalar, self.y/scalar)

这是我的程序的代码:

#The simple mouse move game by Ramon Cabral


#imports
import pygame, sys, Vector
from pygame.locals import *

#game init
pygame.init()

#screen
screen = pygame.display.set_mode((800,600),0,32)

#images
mouse_file = 'mouse.png'
MOUSE = pygame.image.load(mouse_file).convert_alpha()


#variables
bgcolor = (255,255,255)
position = (100.0,100.0)
heading = Vector.vector()

#clock and speed
clock = pygame.time.Clock()
speed = 250.0


#main game function
while True:

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()

if event.type == MOUSEBUTTONDOWN:
destination = pygame.mouse.get_pos()
heading = Vector.vector.from_points(position, destination)
heading.normalize()

screen.fill(bgcolor)
screen.blit(MOUSE, position)

time_passed = clock.tick(30.)
time_passed_seconds = time_passed/1000.0

distance_moved = time_passed_seconds*speed
position += heading * distance_moved

pygame.display.update()

最佳答案

给你的类一个元组方法:

class Vector(object):
...

def tuple(self):
return (self.x, self.y)

改变:

position = (100.0,100.0)

收件人:

position = Vector.vector(100.0,100.0)

和:

screen.blit(MOUSE, position)

收件人:

screen.blit(MOUSE, position.tuple())

您正在添加不兼容的类型。

关于python - 类型错误 : can only concatenate tuple (not "vector") to tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15127521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com