File:  [Local Repository] / pyfrog / pyfrog.py
Revision 1.2: download - view: text, annotated - select for diffs
Thu Jun 16 23:29:25 2011 UTC (13 years, 6 months ago) by nick
Branches: MAIN
CVS tags: HEAD
Ongoing work...

#!/usr/bin/python

import os, sys
import pygame
from pygame.locals import *

##
## Define our game initial variables
##
DEBUG		= 1
DEBUG		= 1
VERSION		= "$Id: pyfrog.py,v 1.2 2011/06/16 23:29:25 nick Exp $"
TITLE 		= "PyFrog"
SCREEN_WIDTH 	= 640
SCREEN_HEIGHT 	= 480
COLORKEY	= ( 255, 0, 255 )

##
## Baddies
##
VEHICLE		= 0
LOG		= 1
TURTLE		= 2
GATOR		= 3
SNAKE		= 4
BEAVER		= 5

##
## Goal areas
##
MAX_GOALS	= 5

##
## Logs
##
SHORT_LOG	= 4
MEDIUM_LOG	= 6
LONG_LOG	= 9
MAX_WOOD	= 7

##
## Turtles
##
DIVE_START_TIME	= 50
DIVE_PHASE_TIME	= 20
MAX_TURTLES	= 9
TURTLE_ANIM_TIME= 5

##
## Vehicles
##
MAX_VEHICLES	= 40

##
## Our points table
##
SCORE_HOP	= 10
SCORE_GOAL	= 50
SCORE_LEVEL	= 1000
SCORE_FLY	= 150
SCORE_PINK	= 200
SCORE_SECONDS	= 10
HIGH_SCORE	= 4630
SCORE_FREE_FROG	= 2000

##
## Some general game state stats
##
level		= 0
playing		= 0
goDelay		= 0
score		= 0
lives		= 0
freefrog	= 0
drawBG		= 1
global screen

class gameStats( ):
	def __init__( self ):
		self.level = 0
		self.playing 	= 0
		self.goDelay	= 0
		self.score	= 0
		self.lives	= 0
		self.freefrog	= 0
		self.drawBG 	= 0
		

class Log( pygame.sprite.Sprite ):
	def __init__( self ):
		pygame.sprite.Sprite.__init__( self )
		self.size 	= 0
		self.placement 	= ( 0, 0 )
		self.oPlacement = ( 0, 0 )
		self.row	= 0
		self.speed	= 0
		self.pink	= 0
		self.gator	= 0
		
	def update( self ):
		self.placement += self.speed

class Vehicles( pygame.sprite.Sprite):
	def __init__( self ): 
		self.placement 	= ( 0, 0 )
		self.oPlacement = ( 0, 0 )
		self.direction	= 0
		self.row	= 0
		self.speed	= 0
		self.level	= 0
		self.image	= 0
	
	def update( self ):
		self.placement += self.speed

	def draw( self ):
		print "D: Display Vehicle"		

class Goals( pygame.sprite.Sprite ):
	def __init__( self ):
		pygame.sprite.Sprite.__init__( self )
		self.x, self.y, self.w, self.h = 0
		self.occupied 	= 0
		self.fly	= 0
		self.gator	= 0

def main( ):
	pygame.mixer.init( )
	pygame.mixer.pre_init( 44100, -16, 2, 2048 )

	pygame.init( )

	global screen
	screen = pygame.display.set_mode( ( SCREEN_WIDTH, SCREEN_HEIGHT ) )
	pygame.display.set_caption( TITLE )
	pygame.mouse.set_visible( 0 )
	
	beginGame( )


def beginGame( ):
	next_heartbeat = 0
	done = 0

	drawBackground( )

	if DEBUG: print "D: Starting main game loop"

	clock = pygame.time.Clock( )

	while 1:
		for event in pygame.event.get( ):
			if keyEvents( event ): return 
		
#		if pygame.GetTicks( ) >= next_heartbeat:
#			next_hearbeat = pygame.GetTicks( ) + heartbeat( )

		clock.tick( heartbeat( ) )

def keyEvents( event ):
	if event.type == QUIT: return 1
	elif event.type == KEYDOWN:
		if event.key == K_ESCAPE: return 1
		elif event.key == K_P: 
			if level:
				print "D: Pausing Game"
		elif event.key == K_1:
			if not level:
				print "D: Starting Game"

	return 0

def updateGameState( ):
	if lives <= 0:
		goDelay += 1
		drawGameOver( )
		if goDelay > 7:
			playing		= 0
			lives		= 0
			level		= 0
			score		= 0
			freefrog	= 0
			drawBG		= 0
#			for i = 0; i < MAX_GOALS; i++:
#				goals[i].occupied = 0
		return 500
	
	drawGameScreen( )

	return 30

def drawGameScreen( ):
	print "D: Drawing main game screen"

def heartbeat( ):
	ticks = 0;
	if level:
		if playing:
			ticks = updateGameState( )
			if ticks <= 0: ticks = 30
			return ticks
		else:
			drawPauseScreen( )
			return 500
	else:
		drawTitleScreen( )
		return 500

def drawGameOver( ):
	print "D: Game Over man!  Game Over!"

def drawPauseScreen( ):
	print "D: Game Paused"

def drawTitleScreen( ):
	drawBackground( )

def drawBackground( ):
	background_image, background_rect = loadImage( 'gameboard.png' )
	screen.blit( background_image, ( 0, 0 ) )
	pygame.display.flip( )

def loadImage( filename, colorKey = None ):
	fullname = os.path.join( 'images', filename )

	try:
		image = pygame.image.load( fullname )
	except pygame.error, message:
		print "ERROR: Failed to load image: " + fullname
		raise SystemExit, message
	
	image = image.convert( )

	if colorKey is not None:
		if colorKey is -1:
			colorKey = image.get_at( ( 0, 0 ) )
		image.set_colorkey( colorKey, RLEACCEL )

	return image, image.get_rect( )

def loadSound( name ):
	class noSound:
		def play( self ): pass

	if not pygame.mixer or not pygame.mixer.get_init( ):
		return noSound( )

	fullname = os.path.join( 'sounds', name )
	if os.path.exists( fullname ) == False:
		sound = pygame.mixer.Sound( fullname )
	else:
		print "ERROR: Audio file missing: " + fullname
		return noSound

	return sound

if __name__ == '__main__': main()
#init( )
#beginGame( )
#sys.quit( )

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>