diff options
author | Tyler B <eldrac@eldrac-laptop.(none)> | 2009-08-05 18:24:51 (GMT) |
---|---|---|
committer | Tyler B <eldrac@eldrac-laptop.(none)> | 2009-08-05 18:24:51 (GMT) |
commit | 46574fb25300a91fd8c70ac56037afc68df4cb1e (patch) | |
tree | 0bc5192a4c6cb3f3175a49fe9f64c66785056286 | |
parent | b3731d4828f6c435e4447d99c1110f3fef39b4ff (diff) |
Updated Tower to run more efficiently, also added statistics to see how well a player did. Initial development of starting screen (no graphics yet).
-rw-r--r-- | data/TowerBackground2.bmp | bin | 2430054 -> 0 bytes | |||
-rw-r--r-- | data/TowerWindow.bmp | bin | 15254 -> 0 bytes | |||
-rw-r--r-- | data/WallTile.bmp | bin | 7654 -> 0 bytes | |||
-rw-r--r-- | data/brick_wall_bg.bmp | bin | 3240054 -> 0 bytes | |||
-rw-r--r-- | data/bridge_bg_2.bmp | bin | 3240054 -> 0 bytes | |||
-rw-r--r-- | data/bridge_controls_3.bmp | bin | 288054 -> 0 bytes | |||
-rw-r--r-- | data/bridge_piece3 - Copy.bmp | bin | 2934 -> 0 bytes | |||
-rw-r--r-- | data/bridge_piece3.bmp | bin | 2934 -> 0 bytes | |||
-rw-r--r-- | data/fork.bmp | bin | 3240054 -> 0 bytes | |||
-rw-r--r-- | data/grass.bmp | bin | 15054 -> 0 bytes | |||
-rw-r--r-- | data/horrid_door.bmp | bin | 615474 -> 0 bytes | |||
-rw-r--r-- | data/house2_map.bmp | bin | 4198 -> 0 bytes | |||
-rw-r--r-- | data/house_map.bmp | bin | 7950 -> 0 bytes | |||
-rw-r--r-- | data/lake_bg.bmp | bin | 3240054 -> 0 bytes | |||
-rw-r--r-- | data/map.bmp | bin | 3124054 -> 0 bytes | |||
-rw-r--r-- | data/map_foreground2.bmp | bin | 990134 -> 0 bytes | |||
-rw-r--r-- | data/numberPlate.bmp | bin | 10934 -> 0 bytes | |||
-rw-r--r-- | data/parchment.bmp | bin | 589654 -> 0 bytes | |||
-rw-r--r-- | data/sky.jpg | bin | 34853 -> 0 bytes | |||
-rw-r--r-- | data/stonehedge_map.bmp | bin | 15134 -> 0 bytes | |||
-rw-r--r-- | data/tower_map.bmp | bin | 35254 -> 0 bytes | |||
-rw-r--r-- | data/tower_outside.bmp | bin | 3240054 -> 0 bytes | |||
-rw-r--r-- | data/tower_outside_controls.bmp | bin | 1146374 -> 0 bytes | |||
-rw-r--r-- | data/wall.bmp | bin | 7654 -> 0 bytes | |||
-rw-r--r-- | data/watch3.bmp | bin | 981054 -> 0 bytes | |||
-rw-r--r-- | data/watch_broken2.bmp | bin | 1041654 -> 0 bytes | |||
-rw-r--r-- | data/watch_drop_bg.bmp | bin | 3240054 -> 0 bytes | |||
-rw-r--r-- | data/wave.bmp | bin | 1242 -> 0 bytes | |||
-rw-r--r-- | data/wave2.bmp | bin | 978 -> 0 bytes | |||
-rw-r--r-- | levelfive.pyc | bin | 0 -> 4818 bytes | |||
-rw-r--r-- | levelfour.pyc | bin | 0 -> 4522 bytes | |||
-rw-r--r-- | levelone.pyc | bin | 0 -> 7813 bytes | |||
-rw-r--r-- | levelthree.pyc | bin | 0 -> 7487 bytes | |||
-rw-r--r-- | leveltwo.pyc | bin | 0 -> 5663 bytes | |||
-rw-r--r-- | race.pyc | bin | 0 -> 8162 bytes | |||
-rwxr-xr-x | start.py | 144 | ||||
-rwxr-xr-x | tower.py | 5 | ||||
-rwxr-xr-x | tower.pyc | bin | 16049 -> 16344 bytes | |||
-rw-r--r-- | tower.py~ | 44 |
39 files changed, 179 insertions, 14 deletions
diff --git a/data/TowerBackground2.bmp b/data/TowerBackground2.bmp Binary files differdeleted file mode 100644 index fdaf3e8..0000000 --- a/data/TowerBackground2.bmp +++ /dev/null diff --git a/data/TowerWindow.bmp b/data/TowerWindow.bmp Binary files differdeleted file mode 100644 index 8e015c5..0000000 --- a/data/TowerWindow.bmp +++ /dev/null diff --git a/data/WallTile.bmp b/data/WallTile.bmp Binary files differdeleted file mode 100644 index a93ba50..0000000 --- a/data/WallTile.bmp +++ /dev/null diff --git a/data/brick_wall_bg.bmp b/data/brick_wall_bg.bmp Binary files differdeleted file mode 100644 index 17c442a..0000000 --- a/data/brick_wall_bg.bmp +++ /dev/null diff --git a/data/bridge_bg_2.bmp b/data/bridge_bg_2.bmp Binary files differdeleted file mode 100644 index cbfd7bd..0000000 --- a/data/bridge_bg_2.bmp +++ /dev/null diff --git a/data/bridge_controls_3.bmp b/data/bridge_controls_3.bmp Binary files differdeleted file mode 100644 index 53ab1cc..0000000 --- a/data/bridge_controls_3.bmp +++ /dev/null diff --git a/data/bridge_piece3 - Copy.bmp b/data/bridge_piece3 - Copy.bmp Binary files differdeleted file mode 100644 index 68989fb..0000000 --- a/data/bridge_piece3 - Copy.bmp +++ /dev/null diff --git a/data/bridge_piece3.bmp b/data/bridge_piece3.bmp Binary files differdeleted file mode 100644 index 6ad7793..0000000 --- a/data/bridge_piece3.bmp +++ /dev/null diff --git a/data/fork.bmp b/data/fork.bmp Binary files differdeleted file mode 100644 index 91cc32a..0000000 --- a/data/fork.bmp +++ /dev/null diff --git a/data/grass.bmp b/data/grass.bmp Binary files differdeleted file mode 100644 index d07dff1..0000000 --- a/data/grass.bmp +++ /dev/null diff --git a/data/horrid_door.bmp b/data/horrid_door.bmp Binary files differdeleted file mode 100644 index 7b91b23..0000000 --- a/data/horrid_door.bmp +++ /dev/null diff --git a/data/house2_map.bmp b/data/house2_map.bmp Binary files differdeleted file mode 100644 index dca52b7..0000000 --- a/data/house2_map.bmp +++ /dev/null diff --git a/data/house_map.bmp b/data/house_map.bmp Binary files differdeleted file mode 100644 index 31797be..0000000 --- a/data/house_map.bmp +++ /dev/null diff --git a/data/lake_bg.bmp b/data/lake_bg.bmp Binary files differdeleted file mode 100644 index dfe037d..0000000 --- a/data/lake_bg.bmp +++ /dev/null diff --git a/data/map.bmp b/data/map.bmp Binary files differdeleted file mode 100644 index 1a65b39..0000000 --- a/data/map.bmp +++ /dev/null diff --git a/data/map_foreground2.bmp b/data/map_foreground2.bmp Binary files differdeleted file mode 100644 index 005adc5..0000000 --- a/data/map_foreground2.bmp +++ /dev/null diff --git a/data/numberPlate.bmp b/data/numberPlate.bmp Binary files differdeleted file mode 100644 index 7c91d4e..0000000 --- a/data/numberPlate.bmp +++ /dev/null diff --git a/data/parchment.bmp b/data/parchment.bmp Binary files differdeleted file mode 100644 index 2b72149..0000000 --- a/data/parchment.bmp +++ /dev/null diff --git a/data/sky.jpg b/data/sky.jpg Binary files differdeleted file mode 100644 index 37d7c6b..0000000 --- a/data/sky.jpg +++ /dev/null diff --git a/data/stonehedge_map.bmp b/data/stonehedge_map.bmp Binary files differdeleted file mode 100644 index 35d1dd5..0000000 --- a/data/stonehedge_map.bmp +++ /dev/null diff --git a/data/tower_map.bmp b/data/tower_map.bmp Binary files differdeleted file mode 100644 index 16da85e..0000000 --- a/data/tower_map.bmp +++ /dev/null diff --git a/data/tower_outside.bmp b/data/tower_outside.bmp Binary files differdeleted file mode 100644 index 2ab4b68..0000000 --- a/data/tower_outside.bmp +++ /dev/null diff --git a/data/tower_outside_controls.bmp b/data/tower_outside_controls.bmp Binary files differdeleted file mode 100644 index e743d14..0000000 --- a/data/tower_outside_controls.bmp +++ /dev/null diff --git a/data/wall.bmp b/data/wall.bmp Binary files differdeleted file mode 100644 index 8c46027..0000000 --- a/data/wall.bmp +++ /dev/null diff --git a/data/watch3.bmp b/data/watch3.bmp Binary files differdeleted file mode 100644 index e5cff2d..0000000 --- a/data/watch3.bmp +++ /dev/null diff --git a/data/watch_broken2.bmp b/data/watch_broken2.bmp Binary files differdeleted file mode 100644 index a1a038c..0000000 --- a/data/watch_broken2.bmp +++ /dev/null diff --git a/data/watch_drop_bg.bmp b/data/watch_drop_bg.bmp Binary files differdeleted file mode 100644 index 4d2e939..0000000 --- a/data/watch_drop_bg.bmp +++ /dev/null diff --git a/data/wave.bmp b/data/wave.bmp Binary files differdeleted file mode 100644 index 08f276d..0000000 --- a/data/wave.bmp +++ /dev/null diff --git a/data/wave2.bmp b/data/wave2.bmp Binary files differdeleted file mode 100644 index 320d67d..0000000 --- a/data/wave2.bmp +++ /dev/null diff --git a/levelfive.pyc b/levelfive.pyc Binary files differnew file mode 100644 index 0000000..0622746 --- /dev/null +++ b/levelfive.pyc diff --git a/levelfour.pyc b/levelfour.pyc Binary files differnew file mode 100644 index 0000000..2ec1fba --- /dev/null +++ b/levelfour.pyc diff --git a/levelone.pyc b/levelone.pyc Binary files differnew file mode 100644 index 0000000..e1930d4 --- /dev/null +++ b/levelone.pyc diff --git a/levelthree.pyc b/levelthree.pyc Binary files differnew file mode 100644 index 0000000..7adaf27 --- /dev/null +++ b/levelthree.pyc diff --git a/leveltwo.pyc b/leveltwo.pyc Binary files differnew file mode 100644 index 0000000..90cb57b --- /dev/null +++ b/leveltwo.pyc diff --git a/race.pyc b/race.pyc Binary files differnew file mode 100644 index 0000000..0db4203 --- /dev/null +++ b/race.pyc @@ -1,6 +1,144 @@ -import tower
+import tower, levelone, leveltwo, levelthree, levelfour, levelfive, race, util
+import random, os.path
+import util
+
+import pygame
+import pygame.font
+
+from pygame.locals import *
+
+def run():
+ #Must initialize pygame before doing anything else
+ pygame.init()
+ random.seed()
+
+ display_flags = DOUBLEBUF
+
+ #XO laptop is 1200x900 resolution
+ width, height = 1200, 900
+
+ if pygame.display.mode_ok((width, height), display_flags ):
+ screen = pygame.display.set_mode((width, height), display_flags)
+
+ clock = pygame.time.Clock()
+ run = 1
+ pygame.display.set_caption('Math Quest')
+
+ clicked = 0
+ menuLocation = 0 #The variable representing which screen of the main menu the player is on - 0 is the main menu
+
+ mouseRect = pygame.Rect(pygame.mouse.get_pos(),(5,5))
+
+ #Code to set up the initial screen (Stores as surface)
+ mainButtons = [pygame.Rect(400,300,400,100),pygame.Rect(400,450,400,100),pygame.Rect(400,600,400,100)]
+ mainButtonText = ["Start Game","Level Select","Exit"]
+
+ mainScreen = pygame.Surface((width,height))
+
+ for i in range(len(mainButtons)):
+ titleFont = pygame.font.Font(None, 150)
+
+ mainScreen.blit(titleFont.render("Math Quest",1,(250,250,250)),(300,100))
+
+ pygame.draw.rect(mainScreen,[175,0,0],mainButtons[i])
+
+ font = pygame.font.Font(None, 80)
+
+ displayBox = font.render(mainButtonText[i], 1, (255,255,255))
+ textSize = font.size(mainButtonText[i])
+
+ mainScreen.blit(displayBox,(mainButtons[i].topleft[0]+(400-textSize[0])/2,mainButtons[i].topleft[1]+(100-textSize[1])/2))
+
+ #Set up the level select screen (Also stores as surface)
+ levelSelectButtons = [pygame.Rect(175,150,400,100),pygame.Rect(625,150,400,100),pygame.Rect(175,300,400,100),pygame.Rect(625,300,400,100),pygame.Rect(175,450,400,100),pygame.Rect(625,450,400,100),pygame.Rect(175,600,400,100),pygame.Rect(625,600,400,100),pygame.Rect(175,750,850,100)]
+ levelSelectButtonText = ["Bridge Builder","Map","Dungeon","Watch","Race","Tower Gates","Tower Climber","Boss","Back"]
+
+ levelSelectScreen = pygame.Surface((width,height))
+
+ for i in range(len(levelSelectButtons)):
+ titleFont = pygame.font.Font(None, 120)
+
+ levelSelectScreen.blit(titleFont.render("Level Select",1,(250,250,250)),(325,35))
+
+ pygame.draw.rect(levelSelectScreen,[175,0,0],levelSelectButtons[i])
+
+ font = pygame.font.Font(None, 80)
+
+ displayBox = font.render(levelSelectButtonText[i], 1, (255,255,255))
+ textSize = font.size(levelSelectButtonText[i])
+
+ levelSelectScreen.blit(displayBox,(levelSelectButtons[i].topleft[0]+(levelSelectButtons[i].width-textSize[0])/2,levelSelectButtons[i].topleft[1]+(100-textSize[1])/2))
+
+ screen.blit(mainScreen,(0,0))
+ pygame.display.flip()
+
+ while run:
+
+ mouseRect = pygame.Rect(pygame.mouse.get_pos(),(5,5))
+
+ events = pygame.event.get()
+ for event in events:
+ #User decides to exit program
+ if event.type == QUIT:
+ run = 0 #stop running
+
+ if event.type == pygame.MOUSEBUTTONDOWN:
+ clicked = 1
+
+ if clicked == 1:
+ clicked = 0
+ print "Mouse clicked"
+ if menuLocation == 0: #On the main screen
+ clickedButton = mouseRect.collidelist(mainButtons)
+ if clickedButton != -1:
+ print "Button %d clicked"%(clickedButton)
+ if clickedButton == 0:
+ levelone.run()
+ levelfour.run()
+ leveltwo.run()
+ levelthree.run()
+ tower.run()
+ elif clickedButton == 1:
+ menuLocation = 1
+ screen.blit(levelSelectScreen,(0,0))
+ elif clickedButton == 2:
+ run = 0
+ elif menuLocation == 1: #On the level select screen
+ clickedButton = mouseRect.collidelist(levelSelectButtons)
+ if clickedButton != -1:
+ print "Button %d clicked"%(clickedButton)
+ if clickedButton == 0:
+ levelone.run()
+ if clickedButton == 1:
+ leveltwo.run()
+ if clickedButton == 2:
+ levelfive.run()
+ if clickedButton == 3:
+ levelfour.run()
+ if clickedButton == 4:
+ race.run()
+ if clickedButton == 5:
+ levelthree.run()
+ if clickedButton == 6:
+ tower.run()
+ if clickedButton == 7:
+ pass
+ if clickedButton == 8:
+ menuLocation = 0
+ screen.blit(mainScreen,(0,0))
+ pygame.display.flip()
+
+ clock.tick(40) #limits to 40 FPS
+
+ pygame.quit()
+
def main():
- tower.run()
+ run()
+ # levelone.run()
+ # levelfour.run()
+ # leveltwo.run()
+ # levelthree.run()
+ # tower.run()
-if __name__ == '__main__': main()
\ No newline at end of file +if __name__ == '__main__': main()
@@ -594,7 +594,8 @@ def run(): #print clock
clock.tick(35) #limits to 40 FPS
-
+
+ pygame.quit()
def main():
print "Running Tower"
@@ -676,4 +677,4 @@ def generateDropNumber(heroNumber,level,currentValues): return (type,number,returnString)
#runs main if called via other naming convention
-if __name__ == '__main__': main()
\ No newline at end of file +if __name__ == '__main__': main() Binary files differ@@ -1,4 +1,4 @@ -import random, os.path
+import random, os.path, time
import util
import pygame
@@ -358,9 +358,13 @@ def run(): shownGap1, shownGap2 = None, None #Variables will represent gaps that will be displayed (if they get hit or stepped on)
fallWait, topHoleWait = 0, 0 #Variables representing timers for if the hero is falling or a gap is being displayed because it was stepped on
+ gapFails = 0
+
run = 1 #Variable representing if the game is running
runCounter = 0 #The number of run loops the game has gone through
+ startTime = time.clock()
+
#The main game loop of the program
while run:
runCounter = runCounter+1
@@ -444,6 +448,8 @@ def run(): if hero.collidelist(impassableGaps) != -1:
fallWait = 60 #Sets the variable representing the fact that the hero is falling, because they went the wrong way
shownGap1 = impassableGaps[hero.collidelist(impassableGaps)]
+ gapFails = gapFails + 1
+ print "Falling! (#%d)"%(gapFails)
#checks if the hero is standing on top of a gap they cannot pass through
tempHero = hero.inflate(-70,0)
@@ -476,8 +482,8 @@ def run(): updateRects.append(shownGap2)
#Code which spawns a drop which contains a number, only called every 100 loops
- if runCounter%75 == 0:
- newDrop = generateDropNumber(heroNumber,levelNum)
+ if runCounter%100 == 0:
+ newDrop = generateDropNumber(heroNumber,levelNum,dropValues)
dropRects.append(pygame.Rect(random.randint(150,850),0,50,50))
dropValues.append(newDrop[0:2])
dropStrings.append(newDrop[2])
@@ -547,7 +553,12 @@ def run(): if hero.topleft[1] <= -80:
levelNum = levelNum+1
if levelNum == 8: #Made it to the top of the tower!
- victoryCinematic(screen)
+ #victoryCinematic(screen)
+ timeTaken = int(time.clock() - startTime)
+ minutesTaken = timeTaken/60
+ secondsTaken = timeTaken%60
+ topString = "You have reached the top!\nTime Taken: %dm %ds\nFails: %d"%(minutesTaken,secondsTaken,gapFails)
+ util.ok_box(topString, (450,400), 300, 50, screen)
break
#Copy copies the second floor displayed on the screen so it can be shown as the very bottom on the next level
@@ -581,9 +592,10 @@ def run(): background.blit(copy, (100,850))
print "Now on level %d."%(levelNum)
- print clock
- clock.tick(40) #limits to 40 FPS
-
+ #print clock
+ clock.tick(35) #limits to 40 FPS
+
+ pygame.quit()
def main():
print "Running Tower"
@@ -626,9 +638,23 @@ def victoryCinematic(screen): util.ok_box("You have reached the top of the tower!", (450,400), 300, 50, screen)
-def generateDropNumber(heroNumber,level):
+def generateDropNumber(heroNumber,level,currentValues):
#Randomly selects if the drop will have addition, subtraction, multiplication, or division, addition and subtraction being more likely
- type = random.sample([0,0,0,0,0,0,1,1,1,1,1,1],1)[0]
+
+ #Only need to check the last 2 that dropped
+ currentValues = currentValues[len(currentValues)-2:]
+
+ type = random.sample([0,1],1)[0]
+
+ #Checks the previous entries to make sure we don't have the same type of operation more then twice
+ #As it is randomly generated, having +, +, +, +... etc over and over would not work well
+ if len(currentValues) == 2:
+ if currentValues[0][0] == currentValues[1][0]:
+ if currentValues[0][0] == 1:
+ type = 0
+ else:
+ type = 1
+
levelAverage = (levelRanges[level][0]+levelRanges[level][1])/2
returnString = ""
if type == 0: #Addition drop
|