Final Hope Specification ======================== Contact: Daniel Lindsley polarcowz@gmail.com http://www.snow-wolf.net Created: 2005/08/28 Version: 1.0 Information ----------- Final Hope is being created during the PyWeek Game Programming Competition. Created by solely by Cowz during the week of August 27 - Sept. 4, 2005. Schedule -------- Sat. 08/27: v0.01 * Comp. start at 7:00pm CST * Come up with idea that fits theme - Power * Draft background, visual style, gameplay mechanics * Begin artwork * Begin code base * Complete basic drawing code Sun. 08/28: v0.02 * Begin player code * Add basic movement v0.1: * Start theme music * Complete specification * Finish artwork v0.2: * Start basic collision detection * Finish basic collision detection Mon. 08/29: v0.3: * Start power collection * Start timer display * Finish power collection * Finish timer display Tue. 08/30: v0.37 * Worked on menus & high score Wed. 08/31: v0.5: * Start high score system * Finish high score system * Add menus v0.6: * Begin particle engine * Finish particle engine Thu. 09/01: v0.7: * Start Run mode (formerly known as jetpack) * Finish Run mode (formerly known as jetpack) v0.8: - Start powerups - Finish powerups Fri. 09/02: v0.9: - Create user documentation - Add story screen - Add simple tutorial - Start final debugging - Start final playtesting Sat. 09/03: v1.0: - Finish debugging - Finish playtesting - Add small bits of polish - Package it - Submit - Comp. ends at 6:59pm CST. Feature List ------------ * Simple controls - Only up/down/left/right arrow keys needed. * Exit game using escape key * Basic Collision Detection * Power Collection * Display Timer * Scoring system * High Score List * Particle Engine * Run (formerly known as Jetpack) - Powerups Objects Needed -------------- FinalHope.py - System object that handles initalization & main loop Resources.py - Slightly more advanced media handling routines Player.py - Handle all of the player's functionality PowerBar.py - Handle the power bar display and data Timer.py - Handle the timer display HighScoreList.py - Handle high score list data and display Particle.py - Particle engine for neat power effects FinalHope.py ------------ Import all needed modules Initalize all needed variables Load up all the sound effects Start a new player object Add player to the sprite list Main loop: Check for quit events Check for player movement Display everything Resources.py ------------ loadImage - A better image loader. Return image and rect. loadSound - A better sound loader. Return the sound object. loadMusic - A better music loader. Open music and begin playing. Player.py --------- Subclass of Sprite init - Define object and instance variables moveUp - Adjust player's rect up and change image moveDown - Adjust player's rect down and change image moveLeft - Adjust player's rect left and change image moveRight - Adjust player's rect right and change image update - Nothing getRect - Returns the rect checkCollide - Check the landscape mask for collisions Particle.py ----------- Subclass of Sprite init - Define emitter object and instance variables gravity - Adjust gravity's effect on the particle color - Adjust the particle's color fade - Adjust speed with which the particle decays spread - Adjust the deviation from the angle velocity - Adjust the speed the particle moves at angle - Adjust the angle the particle follows time - Adjust how long the particle lasts update - Perform all adjustments PowerBar.py ----------- Subclass of Sprite init - Define object and instance variables increasePower - Add power decreasePower - Remove power update - Update displayed meter to reflect current power level throb - "Throb" the power meter to indicate charging Timer.py -------- Subclass of Sprite init - Define object and instance variables setTimer - Set amount of time remaining checkTime - Verify the user can still move update - Update display timer to reflect current time remaining HighScoreList.py ---------------- init - Define object and instance variables calcScore - Accepts PowerBar & Timer object and calculates a score readList - Read in the high score list writeList - Write out new high score list userPrompt - Get user's initals