Friday, February 28, 2014
Dodger (02.24.2014-02.28.2014)
Created sprites for dodger.
Finished dodger code.
Here thou art:
import pygame, random, sys
from pygame.locals import *
WINDOWWIDTH=600
WINDOWHEIGHT=600
TEXTCOLOR=(255, 255, 255)
BACKGROUNDCOLOR=(0, 0, 0)
FPS=40
BADDIEMINSIZE=10
BADDIEMAXSIZE=40
BADDIEMINSPEED=1
BADDIEMAXSPEED=6
ADDNEWBADDIERATE=7
PLAYERMOVERATE=6
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: #pressing escape quits
terminate()
return
def playerHasHitBaddie(playerRect, baddies):
for b in baddies:
if playerRect.colliderect(b['rect']):
return True
return False
def drawText(text, font, surface, x, y):
textobj=font.render(text, 1, TEXTCOLOR)
textrect=textobj.get_rect()
textrect.topleft=(x, y)
surface.blit(textobj, textrect)
#Set up pygame, the window, and the mouse cursor
pygame.init()
mainClock=pygame.time.Clock()
windowSurface=pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption('Dodger')
pygame.mouse.set_visible(False)
#Set up fonts
font=pygame.font.SysFont(None, 48)
#Set up sounds
gameOverSound=pygame.mixer.Sound('gameOver.mp3')
pygame.mixer.music.load('background.mp3')
#Set up images
playerImage=pygame.image.load('shrek.png')
playerRect=playerImage.get_rect()
baddieImage=pygame.image.load('shrekEnemy.png')
#Show the "Start" screen
drawText('Dodger', font, windowSurface, (WINDOWWIDTH/3), (WINDOWHEIGHT/3))
drawText('press a key to start.', font, windowSurface, (WINDOWWIDTH/3), (WINDOWHEIGHT/3)+50)
pygame.display.update()
waitForPlayerToPressKey() or pygame.mouse.get_pressed(True, False, False)
topScore=0
while True:
#Set up the start of the game
baddies=[]
score=0
playerRect.topleft=(WINDOWWIDTH/2, WINDOWHEIGHT-50)
moveLeft=moveRight=moveUp=moveDown=False
reverseCheat=slowCheat=False
baddieAddCounter=0
pygame.mixer.music.play(-1, 0.0)
while True: #The game loop runs while the game part is playing
score+=1
for event in pygame.event.get():
if event.type==QUIT:
terminate()
if event.type==KEYDOWN:
if event.key==ord('z'):
reverseCheat=True
if event.key==ord('x'):
slowCheat=True
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('s'):
moveDown=False
moveUp=True
if event.key==K_DOWN or event.key==ord('w'):
moveUp=False
moveDown=True
if event.type==KEYUP:
if event.key==ord('z'):
reverseCheat=False
if event.key==ord('x'):
slowCheat=False
score=0
if event.key==ord(','):
pygame.mixer.music.stop()
if event.key==ord('.'):
pygame.mixer.music.play(-1, 0.0)
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_UP or event.key==ord('w'):
moveUp=False
if event.key==K_DOWN or event.key==ord('s'):
moveDown=False
if event.type==MOUSEMOTION:
#If the mouse moves, move the player where the cursor is
playerRect.move_ip(event.pos[0]-playerRect.centerx, event.pos[1]-playerRect.centery)
#Add new enemies at the top of the screen, if needed
if not reverseCheat and not slowCheat:
baddieAddCounter+=1
if baddieAddCounter==ADDNEWBADDIERATE:
baddieAddCounter=0
baddieSize=random.randint(BADDIEMINSIZE, BADDIEMAXSIZE)
newBaddie={'rect':pygame.Rect(random.randint(0, WINDOWWIDTH-baddieSize), 0-baddieSize, baddieSize, baddieSize),
'speed':random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),
'surface':pygame.transform.scale(baddieImage, (baddieSize, baddieSize)),
}
baddies.append(newBaddie)
#Move the player around
if moveLeft and playerRect.left>0:
playerRect.move_ip(-1*PLAYERMOVERATE, 0)
if moveRight and playerRect.right<WINDOWWIDTH:
playerRect.move_ip(PLAYERMOVERATE, 0)
if moveUp and playerRect.top>0:
playerRect.move_ip(0, -1*PLAYERMOVERATE)
if moveDown and playerRect.bottom<WINDOWHEIGHT:
playerRect.move_ip(0, PLAYERMOVERATE)
#Move the mouse cursor to match the player
pygame.mouse.set_pos(playerRect.centerx, playerRect.centery)
#Move the baddies down
for b in baddies:
if not reverseCheat and not slowCheat:
b['rect'].move_ip(0, b['speed'])
elif reverseCheat:
b['rect'].move_ip(0, -5)
elif slowCheat:
b['rect'].move_ip(0, 1)
#Delete enemies that have fallen past the bottom
for b in baddies[:]:
if b['rect'].top>WINDOWHEIGHT:
baddies.remove(b)
#Draw the game world on the window
windowSurface.fill(BACKGROUNDCOLOR)
#Draw the scores and top score
drawText('Score: %s'%(score), font, windowSurface, 10, 0)
drawText('Top score: %s'%(topScore), font, windowSurface, 10, 40)
#Draw the players' rectangle
windowSurface.blit(playerImage, playerRect)
#Draw each baddie
for b in baddies:
windowSurface.blit(b['surface'], b['rect'])
pygame.display.update()
#Check if any of the baddies have hit the player
if playerHasHitBaddie(playerRect, baddies):
if score>topScore:
topScore=score
break
mainClock.tick(FPS)
#Stop the game and show the 'game over' screen
pygame.mixer.music.stop()
gameOverSound.play()
drawText('GAME OGRE', font, windowSurface, (WINDOWWIDTH/3), (WINDOWHEIGHT/3))
drawText('press a key to play again.', font, windowSurface, (WINDOWWIDTH/3)-80, (WINDOWHEIGHT/3)+50)
pygame.display.update()
waitForPlayerToPressKey()
gameOverSound.stop()
Subscribe to:
Post Comments (Atom)


No comments:
Post a Comment