1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#player ship class
import pygame
from pygame.locals import *
import game, gfx
shipimages = []
def load_game_resources():
#load ship graphics
global shipimages
for i in range(1,5):
img = gfx.load('ship%d.gif'%i)
shipimages.append(img)
class Ship:
def __init__(self):
self.move = [0, 0]
self.turbo = 0
self.image = 0
self.rect = shipimages[0].get_rect()
self.lastrect = None
self.dead = 0
self.active = 0
self.speeds = game.ship_slowspeed, game.ship_fastspeed
self.pos = list(self.rect.topleft)
def start(self, pos):
self.rect.center = pos
self.pos = list(self.rect.topleft)
self.active = 1
self.dead = 0
self.move = [0, 0]
self.turbo = 0
self.image = 0
def erase(self, background):
if self.lastrect:
background(self.lastrect)
if self.dead:
gfx.dirty(self.lastrect)
def draw(self, gfx):
img = shipimages[self.image]
gfx.surface.blit(img, self.rect)
gfx.dirty2(self.rect, self.lastrect)
self.lastrect = Rect(self.rect)
def tick(self, speedadjust = 1.0):
speed = self.speeds[self.turbo]
speed = int(speed * speedadjust)
self.pos[0] += self.move[0] * speed
self.pos[1] += self.move[1] * speed
self.rect.topleft = self.pos
if self.rect.top < game.arena.top:
self.rect.top = game.arena.top
self.pos[1] = float(self.rect.top)
self.move[1] = 0
elif self.rect.bottom > game.arena.bottom:
self.rect.bottom = game.arena.bottom
self.pos[1] = float(self.rect.top)
self.move[1] = 0
if self.rect.left < game.arena.left:
self.rect.left = game.arena.left
self.pos[0] = float(self.rect.left)
self.move[0] = 0
elif self.rect.right > game.arena.right:
self.rect.right = game.arena.right
self.pos[0] = float(self.rect.left)
self.move[0] = 0
def cmd_left(self):
self.move = [-1, 0]
self.image = 1
def cmd_up(self):
self.move = [0, -1]
self.image = 0
def cmd_right(self):
self.move = [1, 0]
self.image = 3
def cmd_down(self):
self.move = [0, 1]
self.image = 2
def cmd_turbo(self, onoff):
self.turbo = onoff
|