Reputation: 11
This is my first post here and I would really appreciate it if someone could tell me how to move an image to a point. Here's my code:
class bullet:
image = "bullet.png"
spr = pygame.image.load(image).convert_alpha()
x = 0
y = 0
def __init__(self, a, b):
self.x = a
self.y = b
while self.x > 0 and self.x < 500 and self.y > 0 and self.y < 500:#the boundries for the bullet
CODE GOES IN HERE TO MOVE IMAGE
Upvotes: 1
Views: 1821
Reputation: 101072
Take a look at this example:
import pygame
import base64
import math
import random
# some functions for vector math
def magnitude(v):
return math.sqrt(sum(v[i]*v[i] for i in range(len(v))))
def add(u, v):
return [(a+b) for (a, b) in zip(u, v)]
def sub(u, v):
return [(a-b) for (a, b) in zip(u, v)]
def dot(u, v):
return sum((a*b) for a, b in zip(u, v))
def normalize(v):
vmag = magnitude(v)
return [ v[i]/vmag for i in range(len(v)) ]
def length(v):
return math.sqrt(dot(v, v))
def angle(v1, v2):
return math.acos(dot(v1, v2) / (length(v1) * length(v2)))
def get_image():
dec = base64.b64decode(img, 'UTF-8')
surf = pygame.image.fromstring(dec, (32, 32), 'RGBA')
return surf
def rot_center(image, angle):
orig_rect = image.get_rect()
rot_image = pygame.transform.rotate(image, angle)
rot_rect = orig_rect.copy()
rot_rect.center = rot_image.get_rect().center
rot_image = rot_image.subsurface(rot_rect).copy()
return rot_image
class Actor(object):
surf = None
def __init__(self):
self.x, self.y = (0, 0)
self.speed, self.angle = 1.7, 0
self.target_vector = [0, 0]
@property
def img(self):
if not self.surf:
self.surf = get_image()
return self.surf
@property
def pos(self):
return self.x, self.y
@property
def int_pos(self):
return map(int, self.pos)
@property
def center_pos(self):
return [a-16 for a in self.int_pos]
def update(self):
if self.speed == 0:
return
# apply speed to target_vector
move_vector = [c * self.speed for c in normalize(self.target_vector)]
# update position by adding the position vector to the movment vector
self.x, self.y = add(self.pos, move_vector)
def draw(self, s):
s.blit(rot_center(self.img, self.angle), self.center_pos)
def fire(start, angle, target_vector):
act = Actor()
act.x, act.y = start
act.angle = angle
act.target_vector = target_vector
return act
def main():
pygame.init()
quit = False
s = pygame.display.set_mode((300, 300))
c = pygame.time.Clock()
pos = (134, 268)
actors = []
FIRE = pygame.USEREVENT + 1
pygame.time.set_timer(FIRE, 1000)
while not quit:
quit = pygame.event.get(pygame.QUIT)
if pygame.event.get(FIRE):
angle = random.randint(0, 180)
print 'angle is ', angle
# calculate vector that represents the direction
rangle = math.radians(-angle)
target_vector = normalize((math.cos(rangle), math.sin(rangle)))
actors.append(fire(pos, angle, target_vector))
pygame.event.poll()
for ar in actors:
ar.update()
s.fill((255, 255, 255))
for ar in actors:
ar.draw(s)
pygame.display.flip()
c.tick(60)
img = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFEAAADUAAAAXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAP8AAADTAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAATwAAAP8AAADTAAAAhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAADTAAAATwAAAP8AAADTAAAAdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAP8AAADTAAAATwAAAP8AAADTAAAApwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAnwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAxQAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAywAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAA3QAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHAAAAhwAAAIcAAACHAAAAhwAAAIcAAACHAAAAhwAAAIcAAACHAAAAhwAAAIcAAACHAAAAhgAAAK0AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAA7wAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAA7wAAAC8AAAAAAAAAAAAAAAAAAAAAAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAADwAAAAAAAAAAAAAAAAAAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAUgAAAFMAAAAAAAAAAAAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAGQAAAAAAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAIAAAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAggAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAGUAAAAAAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAPoAAABUAAAAAAAAAAAAAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAPgAAAAAAAAAAAAAAAAAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAA7wAAADAAAAAAAAAAAAAAAAAAAAAAAAAAhwAAAIcAAACHAAAAhwAAAIcAAACHAAAAhwAAAIcAAACHAAAAhwAAAIcAAACHAAAAhwAAAIYAAACtAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAPAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADdAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAAywAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAATwAAAP8AAADTAAAATwAAAP8AAADTAAAATwAAAMUAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAADTAAAATwAAAP8AAADTAAAATwAAAP8AAACgAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAP8AAADTAAAATwAAAP8AAADTAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAATwAAAP8AAADTAAAATwAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAADTAAAATwAAAP8AAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAP8AAADTAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRAAAATgAAAF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4AAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=='
if __name__ == '__main__':
main()
Here, a random angle is converted to a vector which is used to move an object.
Upvotes: 2
Reputation: 98
First of all you need a screen to set up the display:
size = (640, 480) # window size
screen = pygame.display.set_mode(size) # screen where the image will be displayed
You need to use the screen.blit to display the image. It takes the image object and x,y coordinates as parameters. In your case it should be like:
screen.blit(spr, (x,y)) # draws image at x,y coordinate
Upvotes: 0