Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTyler 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)
commit46574fb25300a91fd8c70ac56037afc68df4cb1e (patch)
tree0bc5192a4c6cb3f3175a49fe9f64c66785056286
parentb3731d4828f6c435e4447d99c1110f3fef39b4ff (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.bmpbin2430054 -> 0 bytes
-rw-r--r--data/TowerWindow.bmpbin15254 -> 0 bytes
-rw-r--r--data/WallTile.bmpbin7654 -> 0 bytes
-rw-r--r--data/brick_wall_bg.bmpbin3240054 -> 0 bytes
-rw-r--r--data/bridge_bg_2.bmpbin3240054 -> 0 bytes
-rw-r--r--data/bridge_controls_3.bmpbin288054 -> 0 bytes
-rw-r--r--data/bridge_piece3 - Copy.bmpbin2934 -> 0 bytes
-rw-r--r--data/bridge_piece3.bmpbin2934 -> 0 bytes
-rw-r--r--data/fork.bmpbin3240054 -> 0 bytes
-rw-r--r--data/grass.bmpbin15054 -> 0 bytes
-rw-r--r--data/horrid_door.bmpbin615474 -> 0 bytes
-rw-r--r--data/house2_map.bmpbin4198 -> 0 bytes
-rw-r--r--data/house_map.bmpbin7950 -> 0 bytes
-rw-r--r--data/lake_bg.bmpbin3240054 -> 0 bytes
-rw-r--r--data/map.bmpbin3124054 -> 0 bytes
-rw-r--r--data/map_foreground2.bmpbin990134 -> 0 bytes
-rw-r--r--data/numberPlate.bmpbin10934 -> 0 bytes
-rw-r--r--data/parchment.bmpbin589654 -> 0 bytes
-rw-r--r--data/sky.jpgbin34853 -> 0 bytes
-rw-r--r--data/stonehedge_map.bmpbin15134 -> 0 bytes
-rw-r--r--data/tower_map.bmpbin35254 -> 0 bytes
-rw-r--r--data/tower_outside.bmpbin3240054 -> 0 bytes
-rw-r--r--data/tower_outside_controls.bmpbin1146374 -> 0 bytes
-rw-r--r--data/wall.bmpbin7654 -> 0 bytes
-rw-r--r--data/watch3.bmpbin981054 -> 0 bytes
-rw-r--r--data/watch_broken2.bmpbin1041654 -> 0 bytes
-rw-r--r--data/watch_drop_bg.bmpbin3240054 -> 0 bytes
-rw-r--r--data/wave.bmpbin1242 -> 0 bytes
-rw-r--r--data/wave2.bmpbin978 -> 0 bytes
-rw-r--r--levelfive.pycbin0 -> 4818 bytes
-rw-r--r--levelfour.pycbin0 -> 4522 bytes
-rw-r--r--levelone.pycbin0 -> 7813 bytes
-rw-r--r--levelthree.pycbin0 -> 7487 bytes
-rw-r--r--leveltwo.pycbin0 -> 5663 bytes
-rw-r--r--race.pycbin0 -> 8162 bytes
-rwxr-xr-xstart.py144
-rwxr-xr-xtower.py5
-rwxr-xr-xtower.pycbin16049 -> 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
deleted file mode 100644
index fdaf3e8..0000000
--- a/data/TowerBackground2.bmp
+++ /dev/null
Binary files differ
diff --git a/data/TowerWindow.bmp b/data/TowerWindow.bmp
deleted file mode 100644
index 8e015c5..0000000
--- a/data/TowerWindow.bmp
+++ /dev/null
Binary files differ
diff --git a/data/WallTile.bmp b/data/WallTile.bmp
deleted file mode 100644
index a93ba50..0000000
--- a/data/WallTile.bmp
+++ /dev/null
Binary files differ
diff --git a/data/brick_wall_bg.bmp b/data/brick_wall_bg.bmp
deleted file mode 100644
index 17c442a..0000000
--- a/data/brick_wall_bg.bmp
+++ /dev/null
Binary files differ
diff --git a/data/bridge_bg_2.bmp b/data/bridge_bg_2.bmp
deleted file mode 100644
index cbfd7bd..0000000
--- a/data/bridge_bg_2.bmp
+++ /dev/null
Binary files differ
diff --git a/data/bridge_controls_3.bmp b/data/bridge_controls_3.bmp
deleted file mode 100644
index 53ab1cc..0000000
--- a/data/bridge_controls_3.bmp
+++ /dev/null
Binary files differ
diff --git a/data/bridge_piece3 - Copy.bmp b/data/bridge_piece3 - Copy.bmp
deleted file mode 100644
index 68989fb..0000000
--- a/data/bridge_piece3 - Copy.bmp
+++ /dev/null
Binary files differ
diff --git a/data/bridge_piece3.bmp b/data/bridge_piece3.bmp
deleted file mode 100644
index 6ad7793..0000000
--- a/data/bridge_piece3.bmp
+++ /dev/null
Binary files differ
diff --git a/data/fork.bmp b/data/fork.bmp
deleted file mode 100644
index 91cc32a..0000000
--- a/data/fork.bmp
+++ /dev/null
Binary files differ
diff --git a/data/grass.bmp b/data/grass.bmp
deleted file mode 100644
index d07dff1..0000000
--- a/data/grass.bmp
+++ /dev/null
Binary files differ
diff --git a/data/horrid_door.bmp b/data/horrid_door.bmp
deleted file mode 100644
index 7b91b23..0000000
--- a/data/horrid_door.bmp
+++ /dev/null
Binary files differ
diff --git a/data/house2_map.bmp b/data/house2_map.bmp
deleted file mode 100644
index dca52b7..0000000
--- a/data/house2_map.bmp
+++ /dev/null
Binary files differ
diff --git a/data/house_map.bmp b/data/house_map.bmp
deleted file mode 100644
index 31797be..0000000
--- a/data/house_map.bmp
+++ /dev/null
Binary files differ
diff --git a/data/lake_bg.bmp b/data/lake_bg.bmp
deleted file mode 100644
index dfe037d..0000000
--- a/data/lake_bg.bmp
+++ /dev/null
Binary files differ
diff --git a/data/map.bmp b/data/map.bmp
deleted file mode 100644
index 1a65b39..0000000
--- a/data/map.bmp
+++ /dev/null
Binary files differ
diff --git a/data/map_foreground2.bmp b/data/map_foreground2.bmp
deleted file mode 100644
index 005adc5..0000000
--- a/data/map_foreground2.bmp
+++ /dev/null
Binary files differ
diff --git a/data/numberPlate.bmp b/data/numberPlate.bmp
deleted file mode 100644
index 7c91d4e..0000000
--- a/data/numberPlate.bmp
+++ /dev/null
Binary files differ
diff --git a/data/parchment.bmp b/data/parchment.bmp
deleted file mode 100644
index 2b72149..0000000
--- a/data/parchment.bmp
+++ /dev/null
Binary files differ
diff --git a/data/sky.jpg b/data/sky.jpg
deleted file mode 100644
index 37d7c6b..0000000
--- a/data/sky.jpg
+++ /dev/null
Binary files differ
diff --git a/data/stonehedge_map.bmp b/data/stonehedge_map.bmp
deleted file mode 100644
index 35d1dd5..0000000
--- a/data/stonehedge_map.bmp
+++ /dev/null
Binary files differ
diff --git a/data/tower_map.bmp b/data/tower_map.bmp
deleted file mode 100644
index 16da85e..0000000
--- a/data/tower_map.bmp
+++ /dev/null
Binary files differ
diff --git a/data/tower_outside.bmp b/data/tower_outside.bmp
deleted file mode 100644
index 2ab4b68..0000000
--- a/data/tower_outside.bmp
+++ /dev/null
Binary files differ
diff --git a/data/tower_outside_controls.bmp b/data/tower_outside_controls.bmp
deleted file mode 100644
index e743d14..0000000
--- a/data/tower_outside_controls.bmp
+++ /dev/null
Binary files differ
diff --git a/data/wall.bmp b/data/wall.bmp
deleted file mode 100644
index 8c46027..0000000
--- a/data/wall.bmp
+++ /dev/null
Binary files differ
diff --git a/data/watch3.bmp b/data/watch3.bmp
deleted file mode 100644
index e5cff2d..0000000
--- a/data/watch3.bmp
+++ /dev/null
Binary files differ
diff --git a/data/watch_broken2.bmp b/data/watch_broken2.bmp
deleted file mode 100644
index a1a038c..0000000
--- a/data/watch_broken2.bmp
+++ /dev/null
Binary files differ
diff --git a/data/watch_drop_bg.bmp b/data/watch_drop_bg.bmp
deleted file mode 100644
index 4d2e939..0000000
--- a/data/watch_drop_bg.bmp
+++ /dev/null
Binary files differ
diff --git a/data/wave.bmp b/data/wave.bmp
deleted file mode 100644
index 08f276d..0000000
--- a/data/wave.bmp
+++ /dev/null
Binary files differ
diff --git a/data/wave2.bmp b/data/wave2.bmp
deleted file mode 100644
index 320d67d..0000000
--- a/data/wave2.bmp
+++ /dev/null
Binary files differ
diff --git a/levelfive.pyc b/levelfive.pyc
new file mode 100644
index 0000000..0622746
--- /dev/null
+++ b/levelfive.pyc
Binary files differ
diff --git a/levelfour.pyc b/levelfour.pyc
new file mode 100644
index 0000000..2ec1fba
--- /dev/null
+++ b/levelfour.pyc
Binary files differ
diff --git a/levelone.pyc b/levelone.pyc
new file mode 100644
index 0000000..e1930d4
--- /dev/null
+++ b/levelone.pyc
Binary files differ
diff --git a/levelthree.pyc b/levelthree.pyc
new file mode 100644
index 0000000..7adaf27
--- /dev/null
+++ b/levelthree.pyc
Binary files differ
diff --git a/leveltwo.pyc b/leveltwo.pyc
new file mode 100644
index 0000000..90cb57b
--- /dev/null
+++ b/leveltwo.pyc
Binary files differ
diff --git a/race.pyc b/race.pyc
new file mode 100644
index 0000000..0db4203
--- /dev/null
+++ b/race.pyc
Binary files differ
diff --git a/start.py b/start.py
index 5a29645..674430f 100755
--- a/start.py
+++ b/start.py
@@ -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()
diff --git a/tower.py b/tower.py
index c209367..e4f06cd 100755
--- a/tower.py
+++ b/tower.py
@@ -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()
diff --git a/tower.pyc b/tower.pyc
index b6725de..0e0be67 100755
--- a/tower.pyc
+++ b/tower.pyc
Binary files differ
diff --git a/tower.py~ b/tower.py~
index 33bf43c..8186c20 100644
--- a/tower.py~
+++ b/tower.py~
@@ -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