Original Post
The program boots up but whenever I try to move the sprite the error unbounderror local variable 'data' referenced before assignment.
I do not know how to fix this error. I tried to fix the spacing because for some reason it messes up whenever I post it in the code tags.
Here is a pastebin of the code. http://pastebin.com/xWTsfAbT
I do not know how to fix this error. I tried to fix the spacing because for some reason it messes up whenever I post it in the code tags.
Here is a pastebin of the code. http://pastebin.com/xWTsfAbT
import pygame
from pygame.locals import *
pygame.init()
pygame.mixer.init()
size = (640,480)
screen = pygame.display.set_mode(size)
class Ship(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("Ship1.bmp")
self.image = self.image.convert()
self.image.set_colorkey((255,255,255))
self.rect = self.image.get_rect()
self.rect.centerx = 300
self.rect.centery = 400
self.left = -1
self.right = +1
self.up = -1
self.down = +1
def checkkey(data):
(event) = data
if event.key == K_LEFT:
self.rect.centerx = self.rect.centerx + self.left
if event.key == K_RIGHT:
self.rect.centerx = self.rect.centerx + self.right
if event.key == K_UP:
self.rect.centery = self.rect.centery + self.up
if event.key == K_DOWN:
self.rect.centery = self.rect.centery + self.down
data = (event)
return data
def update(self):
if self.rect.centerx > screen.get_width():
self.rect.centerx = screen.get_width()
if self.rect.centerx < 0:
self.rect.centerx = 0
if self.rect.centery > screen.get_height():
self.rect.centery = screen.get_height()
if self.rect.centery < 0:
self.rect.centery = 0
def main():
pygame.display.set_caption("Ship Test")
bg = pygame.Surface(screen.get_size())
bg = bg.convert()
bg.fill((123,200,100))
screen.blit(bg,(0,0))
ship = Ship()
allsprites = pygame.sprite.Group(ship)
ok = True
clock = pygame.time.Clock()
while ok:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
ok = False
if event.type == KEYDOWN:
ship.data = (event)
data = ship.checkkey(data)
(event) = ship.data
if event.key == K_ESCAPE:
ok = False
allsprites.clear(screen, bg)
allsprites.update()
allsprites.draw(screen)
pygame.display.update()
if __name__ == "__main__":
main()