class MyShipClass(pygame.sprite.Sprite): #ship class
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("ship.jpg")
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
self.rect.x = random.randint(10,1000)
self.rect.y = random.randint(0,600)
def moveup(self):
self.rect.top -= speed
self.rect.left += 0
def movedown(self):
self.rect.top += speed
self.rect.left += 0
def moveleftup(self):
self.rect.top -= speed
self.rect.left -= speed
def moveleft(self):
self.rect.top += 0
self.rect.left -= speed
def moveleftdown(self):
self.rect.top += speed
self.rect.left -= speed
def moverightup(self):
self.rect.top -= speed
self.rect.left += speed
def moveright(self):
self.rect.top += 0
self.rect.left += speed
def moverightdown(self):
self.rect.top += speed
self.rect.left += speed
MOVES = [moveup,movedown,moveleftup,moveleft,moveleftdown,
moverightup,moveright,moverightdown]
def update(self):
if self.rect.top < 0:
self.rect.top = height
if self.rect.left < 0:
self.rect.left = width
if self.rect.top > height:
self.rect.top = 0
if self.rect.left > width:
self.rect.left = 0
def move(self, method = 'random'):
random.choice(MOVES)
WHITE = (255,255,255)
BLACK = (0,0,0)
RED = (255,0,0)
GREEN = (0,255,0)
Blue = (0,0,255)
YELLOW = (255,255,0)
FPS = 30
pygame.init()
size = width,height = 1024,768 #draw window
screen = pygame.display.set_mode(size)
screen.fill([255,255,255])
clock = pygame.time.Clock()
class MyShipClass(pygame.sprite.Sprite): #ship class
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("ship.jpg")
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
self.rect.x = random.randint(10,1000)
self.rect.y = random.randint(0,600)
def update(self):
if self.rect.top < 0:
self.rect.top = height
if self.rect.left < 0:
self.rect.left = width
if self.rect.top > height:
self.rect.top = 0
if self.rect.left > width:
self.rect.left = 0
class MyStoneClass(pygame.sprite.Sprite): #stone class
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("block.jpg")
self.rect = self.image.get_rect()
self.rect.x = random.randint(0,1024)
self.rect.y = random.randint(0,768)
self.rect.right, self.rect.top,
self.rect.topright, self.rect.bottom,
self.rect.bottomleft, self.rect.left,
self.rect.center, self.rect.bottomright
#speedleft = 0 #speed move left/right
#speedtop = -2 #speed move up/down
speed = 2
all_sprites = pygame.sprite.Group()
ships = pygame.sprite.Group()
stones = pygame.sprite.Group()
for row in range(4): #group of ships
sh = MyShipClass()
all_sprites.add(sh)
ships.add(sh)
def moveup():
sh.rect.top -= speed
sh.rect.left += 0
def movedown():
sh.rect.top += speed
sh.rect.left += 0
def moveleftup():
sh.rect.top -= speed
sh.rect.left -= speed
def moveleft():
sh.rect.top += 0
sh.rect.left -= speed
def moveleftdown():
sh.rect.top += speed
sh.rect.left -= speed
def moverightup():
sh.rect.top -= speed
sh.rect.left += speed
def moveright():
sh.rect.top += 0
sh.rect.left += speed
def moverightdown():
sh.rect.top += speed
sh.rect.left += speed
moves = [moveup,movedown,moveleftup,moveleft,moveleftdown,
moverightup,moveright,moverightdown]
rand_moves = random.choice(moves)
for row in range(20): #group of stones
st = MyStoneClass()
all_sprites.add(st)
stones.add(st)
running = True #run this
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
for sh in ships:
rand_moves()
collisions = pygame.sprite.groupcollide(ships,stones,False,False)
#collide ship and stone
for collision in collisions:
for sh in collisions:
#print "collision"
sh.rect.left += -2
all_sprites.update() #draw all
screen.fill(WHITE)
all_sprites.draw(screen)
pygame.display.flip()
pygame.quit()