changeset 5:67b79658b047

Refactor and simplify menu.
author Simon Cross <hodgestar@gmail.com>
date Sun, 30 Aug 2009 13:04:24 +0000
parents e8ddbc95cbf3
children c0abad23a055
files gamelib/constants.py gamelib/main.py gamelib/mainmenu.py
diffstat 3 files changed, 41 insertions(+), 138 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gamelib/constants.py	Sun Aug 30 13:04:24 2009 +0000
@@ -0,0 +1,12 @@
+"""Operation Fox Assault constants."""
+
+NAME = "Operation Fox Assault"
+
+SCREEN = (800, 600)
+
+AUTHORS = [
+    ("Adrianna Pinska", "adrianna.pinska@gmail.com"),
+    ("Jeremy Thurgood", ""),
+    ("Neil Muller", ""),
+    ("Simon Cross", "hodgestar+rinkhals@gmail.com"),
+]
--- a/gamelib/main.py	Sun Aug 30 12:48:02 2009 +0000
+++ b/gamelib/main.py	Sun Aug 30 13:04:24 2009 +0000
@@ -6,106 +6,22 @@
 package.
 '''
 
-SCREEN = (800, 600)
-
-import time
-import random
-
 import pygame
 from pgu import gui
-from pygame.locals import *
+from pygame.locals import SWSURFACE, QUIT, KEYDOWN, K_ESCAPE
 
 from mainmenu import MainMenu
-
-W,H = 640,480
-W2,H2 = 320,240
-
-##Using App instead of Desktop removes the GUI background.  Note the call to app.init()
-##::
-
-form = gui.Form()
-
-app = gui.App()
-main_menu = MainMenu()
-
-c = gui.Container(align=-1,valign=-1)
-c.add(main_menu,0,0)
-
-app.init(c)
-##
-
-dist = 8192
-span = 10
-stars = []
-def reset():
-    global stars
-    stars = []
-    for i in range(0,form['quantity'].value):
-        stars.append([random.randrange(-W*span,W*span),
-                      random.randrange(-H*span,H*span),
-                      random.randrange(1,dist)])
-        
-
-def render(dt):
-    speed = form['speed'].value*10
-    size = form['size'].value
-    color = form['color'].value
-    warp = form['warp'].value
+import constants
 
-    colors = []
-    for i in range(256,0,-1):
-        colors.append((color[0]*i/256,color[1]*i/256,color[2]*i/256))
-        
-    n = 0
-    for x,y,z in stars:
-        if warp:
-            z1 = max(1,z + speed*2)
-            x1 = x*256/z1
-            y1 = y*256/z1
-            xx1,yy1 = x1+W2,y1+H2
-    
-        x = x*256/z
-        y = y*256/z
-        xx,yy = x+W2,y+H2
-        c = min(255,z * 255 / dist)
-        col = colors[int(c)]
-
-        if warp:
-            pygame.draw.line(screen,col,
-                             (int(xx1),int(yy1)),
-                             (int(xx),int(yy)),size)
-        
-        pygame.draw.circle(screen,col,(int(xx),int(yy)),size)
-        
-        ch = 0
-        z -= speed*dt
-        if z <= 0: 
-            ch = 1
-            z += dist
-        if z > dist: 
-            ch = 1
-            z -= dist
-        if ch:
-            stars[n][0] = random.randrange(-W*span,W*span)
-            stars[n][1] = random.randrange(-H*span,H*span)
-        stars[n][2] = z
-        
-        n += 1
-        
-screen = pygame.display.set_mode(SCREEN,SWSURFACE)
-
-##You can include your own run loop.
-##::
-
-def gameloop(screen):
-    reset()
+def gameloop(screen, app):
+    """Main game loop."""
     clock = pygame.time.Clock()
     done = False
     while not done:
         for e in pygame.event.get():
-            if e.type is QUIT: 
+            if e.type is QUIT:
                 done = True
-            elif e.type is KEYDOWN and e.key == K_ESCAPE: 
+            elif e.type is KEYDOWN and e.key == K_ESCAPE:
                 done = True
             else:
                 app.event(e)
@@ -113,11 +29,22 @@
         # Clear the screen and render the stars
         dt = clock.tick()/1000.0
         screen.fill((0,0,0))
-        render(dt)
         app.paint(screen)
         pygame.display.flip()
         pygame.time.wait(10)
 
 
 def main():
-    gameloop(screen)
+    """Main script."""
+    screen = pygame.display.set_mode(constants.SCREEN, SWSURFACE)
+
+    form = gui.Form()
+    app = gui.App()
+    main_menu = MainMenu()
+
+    c = gui.Container(align=-1, valign=-1)
+    c.add(main_menu, 0, 0)
+
+    app.init(c)
+
+    gameloop(screen, app)
--- a/gamelib/mainmenu.py	Sun Aug 30 12:48:02 2009 +0000
+++ b/gamelib/mainmenu.py	Sun Aug 30 13:04:24 2009 +0000
@@ -1,66 +1,30 @@
+"""Main menu."""
+
+from pgu import gui
 import pygame
-from pgu import gui
+import constants
 
 class MainMenu(gui.Table):
     def __init__(self,**params):
         gui.Table.__init__(self,**params)
 
         def fullscreen_changed(btn):
-            #pygame.display.toggle_fullscreen()
-            print "TOGGLE FULLSCREEN"
-
-        def stars_changed(slider):
-            n = slider.value - len(stars)
-            if n < 0:
-                for i in range(n,0): 
-                    stars.pop()
-            else:
-                for i in range(0,n):
-                    stars.append([random.randrange(-W*span,W*span),
-                                  random.randrange(-H*span,H*span),
-                                  random.randrange(1,dist)])
+            pygame.display.toggle_fullscreen()
 
         fg = (255,255,255)
 
         self.tr()
-        self.td(gui.Label("Phil's Pygame GUI",color=fg),colspan=2)
-        
-        self.tr()
-        self.td(gui.Label("Speed: ",color=fg),align=1)
-        e = gui.HSlider(100,-500,500,size=20,width=100,height=16,name='speed')
-        self.td(e)
-        
-        self.tr()
-        self.td(gui.Label("Size: ",color=fg),align=1)
-        e = gui.HSlider(2,1,5,size=20,width=100,height=16,name='size')
-        self.td(e)
-        
+        self.td(gui.Label(constants.NAME, color=fg), colspan=2)
+
         self.tr()
-        self.td(gui.Label("Quantity: ",color=fg),align=1)
-        e = gui.HSlider(100,1,1000,size=20,width=100,height=16,name='quantity')
-        e.connect(gui.CHANGE, stars_changed, e)
-        self.td(e)
-        
-        self.tr()
-        self.td(gui.Label("Color: ",color=fg),align=1)
-        
-        
-        default = "#ffffff"
-        color = gui.Color(default,width=64,height=10,name='color')
-#         color_d = ColorDialog(default)
+        self.td(gui.Label("Start", color=fg), align=1)
 
-#         color.connect(gui.CLICK,color_d.open,None)
-#         color_d.connect(gui.CHANGE,gui.action_setvalue,(color_d,color))
-        self.td(color)
-        
         btn = gui.Switch(value=False,name='fullscreen')
         btn.connect(gui.CHANGE, fullscreen_changed, btn)
 
         self.tr()
         self.td(gui.Label("Full Screen: ",color=fg),align=1)
         self.td(btn)
-        
+
         self.tr()
-        self.td(gui.Label("Warp Speed: ",color=fg),align=1)
-        self.td(gui.Switch(value=False,name='warp'))
-        
+        self.td(gui.Label("Quit", color=fg), align=1)