Tuples are immutable. Strictly speaking, that means that their
structure cannot change after definition. In practical use, tuples
will contain ints, floats, or strings, all of which are also
immutable. Since you can't change an int without "replacing" it, you
can't change an int in a tuple without replacing the whole tuple.
tl;dr: You need to either recreate the tuple or use a list.
-Zack
On Apr 10, 2009, at 11:29 AM, Yanom Mobis wrote:
ok, thanks! by the way, python2.6 won't let me change just one part
of a tuple...
--- On Thu, 4/9/09, Brian Song <[email protected]> wrote:
From: Brian Song <[email protected]>
Subject: Re: [pygame] move problems
To: [email protected]
Date: Thursday, April 9, 2009, 10:26 PM
Yea... Jakes method would do.. or you can just simplify it
spaceship_speed = 10
if keys[K_LEFT]:
x_move += -spaceship_speed
if keys[K_RIGHT]:
x_move += spaceship_self.speed
rect = rect.move(x_move, 0)
BTW... spaceship.speed=(spaceship.speed[0]-10, spaceship.speed[1])
is unnecessary. No point in rewriting the whole list when your only
changing one part
On Thu, Apr 9, 2009 at 9:56 PM, Jake b <[email protected]> wrote:
Print out .speed to see what the values are.
example: in IDLE
>>> from euclid import Vector2
>>> class Ship():
def __init__(self):
self.speed = Vector2(0,0)
self.loc = Vector2(0,0)
def accel(self, xvel, yvel):
self.speed += Vector2(xvel, yvel)
def update(self):
self.loc += self.speed
def __repr__(self): return "s=%s, l=%s" % (self.speed, self.loc )
>>> s = Ship()
>>> s
s=Vector2(0.00, 0.00), l=Vector2(0.00, 0.00)
>>> s.accel( 10, 0 )
>>> s
s=Vector2(10.00, 0.00), l=Vector2(0.00, 0.00)
>>> s.update()
>>> s
s=Vector2(10.00, 0.00), l=Vector2(10.00, 0.00)
>>> s.update()
>>> s
s=Vector2(10.00, 0.00), l=Vector2(20.00, 0.00)
--
Jake