Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pygame Test by KNovak
- import pygame, sys, os, math
- from pygame.locals import *
- pygame.init()
- pygame.key.set_repeat(1)
- fullscreen = False;
- #startup settings
- for arg in sys.argv:
- if arg == "-f":
- fullscreen = True
- #Video Display information
- vidinfo = pygame.display.Info()
- if fullscreen == True:
- vidsize = (vidinfo.current_w, vidinfo.current_h)
- window = pygame.display.set_mode(vidsize, pygame.FULLSCREEN)
- else:
- vidsize = (640,480)
- window = pygame.display.set_mode(vidsize)
- pygame.display.set_caption('KNova Test Window')
- screen = pygame.display.get_surface()
- background = pygame.Surface((screen.get_width(), screen.get_height()))
- #colors
- WHITE = (255,255,255)
- BLUE = (0,0,150)
- GREEN = (0,150,0)
- #text
- def drawText (text, color, xloc, yloc, size):
- fontObj = pygame.font.Font('freesansbold.ttf', size)
- textSurface = fontObj.render(text, True, color)
- textRectObj = textSurface.get_rect()
- textRectObj.center = (xloc, yloc)
- return textSurface, textRectObj
- #Sprite Class for the Ship Image
- class Ship(pygame.sprite.Sprite):
- image = pygame.image.load("./resources/ship.png")
- image = image.convert()
- #initialization function
- def __init__(self, position=(100,100)):
- pygame.sprite.Sprite.__init__(self,self.groups)
- self.pos = position
- self.orig_image = Ship.image
- self.image = self.orig_image
- self.rect = self.image.get_rect()
- self.rect.center = self.pos
- self.angle = 0
- self.moveangle = 0
- self.vx = 0
- self.vy = 0
- self.maxvel = 3
- #move function
- def move(self, newpos):
- oldx, oldy = self.pos
- dx, dy = newpos
- self.pos = (oldx - dx, oldy - dy)
- self.rect.center = self.pos
- #update function which will replace both move and rotate
- def update(self):
- #handle rotations
- if self.angle >= 360:
- self.angle = 0
- if self.angle <= -360:
- self.angle = 0
- loc = self.rect.center
- self.image = pygame.transform.rotate(self.orig_image, self.angle)
- self.rect = self.image.get_rect()
- self.rect.center = loc
- #handle 2D movement
- self.move( (self.vx, self.vy) )
- #boundaries
- if self.pos[0] > vidsize[0]:
- #right
- self.vx = -self.vx
- if self.pos[0] < 0:
- #left
- self.vx = -self.vx
- if self.pos[1] > vidsize[1]:
- #bottom
- self.vy = -self.vy
- if self.pos[1] < 0:
- #top
- self.vy = -self.vy
- spriteGroup = pygame.sprite.Group()
- Ship.groups = spriteGroup
- newShip = Ship()
- #sprite group update
- def spriteUpdate(group, screen, background):
- group.clear(screen, background)
- group.update()
- group.draw(screen)
- #trig functions for updating position
- def getDirection(angle,velx, vely):
- x = math.sin(math.radians(angle)) * velx
- y = math.cos(math.radians(angle)) * vely
- return (x,y)
- #get keyboard events
- def pyin(events):
- for event in events:
- if event.type == QUIT:
- sys.exit(0)
- if event.type == KEYDOWN:
- key = pygame.key.get_pressed()
- if (key[pygame.K_ESCAPE]):
- sys.exit(0)
- if (key[K_UP]):
- newShip.vx += math.sin( math.radians( newShip.angle ) )
- newShip.vy += math.cos( math.radians( newShip.angle ) )
- if newShip.vx >= newShip.maxvel: newShip.vx = newShip.maxvel
- if newShip.vy >= newShip.maxvel: newShip.vy = newShip.maxvel
- if (key[K_DOWN]):
- newShip.vx -= math.sin( math.radians( newShip.angle ) )
- newShip.vy -= math.cos( math.radians( newShip.angle ) )
- if newShip.vx <= (0-newShip.maxvel): newShip.vx = (0-newShip.maxvel)
- if newShip.vy <= (0-newShip.maxvel): newShip.vy = (0-newShip.maxvel)
- if (key[K_LEFT]):
- newShip.angle += 4
- if (key[K_RIGHT]):
- newShip.angle -= 4
- while True:
- pyin(pygame.event.get())
- # pykey(pygame.key.get_pressed())
- pygame.display.update()
- spriteUpdate(spriteGroup, screen, background)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement