najanaja73
Still Fresh
- Joined
 - Nov 18, 2014
 
- Messages
 - 4
 
Hi, I've just started using Python/Pygame as a hobby. I've gotten the code to draw my Plane.png and move it using the wsad keys, and I mapped the q and e keys to rotate it which it does, but each time it rotates, it 'falls' down the screen to the bottom right and after a few key presses, disappears. I read that this is because when it turns the sprite, it adds padding to resize the image while it is turning. I think that each time it turns, it adds more padding, making it add exponentially for each keypress. I can't figure out how to stop this from happening. Any help for a beginner greatly appreciated! The Colours import is just a file where I keep my pre-defined colours for easier colour filling, and Plane.gif is an inch by inch and a half gif of a black plane with transparent background, and loads no problem, it just flies away when i use the e or q keys
	
	
	
		
This is the code, hope you can help, thanks!
				
			
		Code:
	
	import pygame, sys, time, random
from pygame.locals import *
from Colours import *
from PIL import Image, ImageDraw
 
 
class MySprite(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load('Plane.gif').convert()
        self.rect = self.image.get_rect()
        self.x = 0
        self.y = 0
 
    def draw(self,surface):
 
            surface.blit(self.image,(self.x,self.y))
 
 
    def onKeyPress(self):
 
        key = pygame.key.get_pressed()
        distance = 5
        if key[ord('s')] or key[pygame.K_DOWN]: #down
            self.y += distance
        elif key[ord('w')] or key[pygame.K_UP]: #up
            self.y -= distance
        if key[ord('d')] or key[pygame.K_RIGHT]: #right
            self.x += distance
        elif key[ord('a')] or key[pygame.K_LEFT]: #left
            self.x -= distance
 
        rotate = pygame.transform.rotate
        if key[ord('e')]:
            self.image = rotate(self.image, 10)
        elif key[ord('q')]:
            self.image = rotate(self.image, -10)
 
class Event(object):
 
    def __init__(self):
 
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    pygame.quit()
                    sys.exit()
 
 
pygame.init()
 
fps = 30
fpsClock = pygame.time.Clock()
 
size = width,height = 800,600
screen = pygame.display.set_mode(size)
mySprite = MySprite()
 
while True:
 
    event = Event()
    screen.fill(Blue)
 
    mySprite.draw(screen)
    mySprite.onKeyPress()
 
    pygame.display.update()
 
    fpsClock.tick(fps)
 
	
			
				Last edited by a moderator: 
			
		
	
								
								
									
	
								
							
							
	