167 lines
4.7 KiB
Python
167 lines
4.7 KiB
Python
import pygame, random, sys, time
|
|
from pygame.locals import *
|
|
|
|
windowWidth = 600
|
|
windowHeight = 600
|
|
FPS = 6000
|
|
|
|
Green = (0, 255, 0)
|
|
Blue = (0, 0, 255)
|
|
Red = (255, 0, 0)
|
|
Grey = (100, 100, 100)
|
|
Black = (0, 0, 0)
|
|
White = (255, 255, 255)
|
|
moveLeft,moveRight=0,0
|
|
moveUp,moveDown=0,0
|
|
|
|
pygame.init()
|
|
|
|
Clock = pygame.time.Clock()
|
|
|
|
windowSurface = pygame.display.set_mode((windowWidth,windowHeight))
|
|
|
|
pygame.display.set_caption('Rect Race')
|
|
|
|
pygame.mouse.set_visible(True)
|
|
|
|
|
|
def terminate():
|
|
pygame.quit()
|
|
sys.exit()
|
|
|
|
def waitForPlayerToPressKey():
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == QUIT:
|
|
terminate()
|
|
if event.type == KEYDOWN:
|
|
if event.key == K_ESCAPE:
|
|
terminate()
|
|
if event.key == K_RETURN:
|
|
return
|
|
if event.key == ord ('e'):
|
|
return
|
|
class Sprite:
|
|
def __init__(self,x,y):
|
|
#demensions
|
|
self.x=x
|
|
self.y=y
|
|
self.width=50
|
|
self.height=50
|
|
#images
|
|
self.i0 = pygame.image.load('sprite1.png')
|
|
self.i1 = pygame.image.load('sprite2.png')
|
|
#frame update
|
|
self.timeTarget=10
|
|
self.timeNum=0
|
|
self.currentImage=0
|
|
def update(self):
|
|
self.timeNum+=1
|
|
if self.timeNum==self.timeTarget:
|
|
if self.currentImage==0:
|
|
self.currentImage=1
|
|
|
|
else:
|
|
self.currentImage=0
|
|
|
|
self.timeNum=0
|
|
self.render()
|
|
|
|
def render(self):
|
|
if (self.currentImage==0):
|
|
windowSurface.blit(self.i0, (self.x, self.y))
|
|
|
|
else:
|
|
windowSurface.blit(self.i1, (self.x, self.y))
|
|
|
|
|
|
def playerHasHitSquare(playerRect, Square):
|
|
for s in square:
|
|
if Player.coliderect(s['rect']):
|
|
return True
|
|
return False
|
|
|
|
def drawTextGrey(text, font, surface, x, y):
|
|
textobj = font.render(text, 1, Grey)
|
|
textrect = textobj.get_rect()
|
|
textrect.topleft = (x, y)
|
|
surface.blit(textobj, textrect)
|
|
|
|
def drawTextRed(text, font, surface, x, y):
|
|
textobj = font.render(text, 1, Red)
|
|
textrect = textobj.get_rect()
|
|
textrect.topleft = (x, y)
|
|
surface.blit(textobj, textrect)
|
|
|
|
def drawTextBlue(text, font, surface, x, y):
|
|
textobj = font.render(text, 1, Blue)
|
|
textrect = textobj.get_rect()
|
|
textrect.topleft = (x, y)
|
|
surface.blit(textobj, textrect)
|
|
|
|
def drawTextGreen(text, font, surface, x, y):
|
|
textobj = font.render(text, 1, Green)
|
|
textrect = textobj.get_rect()
|
|
textrect.topleft = (x, y)
|
|
surface.blit(textobj, textrect)
|
|
|
|
def drawTextBlack(text, font, surface, x, y):
|
|
textobj = font.render(text, 1, Black)
|
|
textrect = textobj.get_rect()
|
|
textrect.topleft = (x, y)
|
|
surface.blit(textobj, textrect)
|
|
|
|
Player = Sprite (100,150)
|
|
|
|
font = pygame.font.SysFont(None, 48)
|
|
|
|
while True: # the game loop runs while the game part is playing
|
|
for event in pygame.event.get():
|
|
if event.type == QUIT:
|
|
terminate()
|
|
|
|
if event.type == KEYDOWN:
|
|
if event.key == K_LEFT or event.key == ord('a'):
|
|
moveRight = False
|
|
moveLeft = True
|
|
if event.key == K_RIGHT or event.key == ord('d'):
|
|
moveLeft = False
|
|
moveRight = True
|
|
if event.key == K_UP or event.key == ord('w'):
|
|
moveUp = True
|
|
moveDown = False
|
|
if event.key == K_DOWN or event.key == ord('s'):
|
|
moveUp = False
|
|
moveDown = True
|
|
if event.type == KEYUP:
|
|
if event.key == K_ESCAPE:
|
|
terminate()
|
|
|
|
if event.key == K_LEFT or event.key == ord('a'):
|
|
moveLeft = False
|
|
if event.key == K_RIGHT or event.key == ord('d'):
|
|
moveRight = False
|
|
if event.key == K_DOWN or event.key == ord('s'):
|
|
moveDown = False
|
|
if event.key == K_UP or event.key == ord('w'):
|
|
moveUp = False
|
|
|
|
|
|
windowSurface.fill(White)
|
|
|
|
# Move the player around.
|
|
if moveLeft and Player.x > 0:
|
|
Player.x += -5
|
|
if moveRight and Player.x < 500:
|
|
Player.x += 5
|
|
if moveUp and Player.y > 0:
|
|
Player.y += -5
|
|
if moveDown and Player.y < windowHeight:
|
|
Player.y += 5
|
|
|
|
Player.update()
|
|
|
|
Clock.tick(60)
|
|
|
|
pygame.display.flip()
|