# HG changeset patch # User Simon Cross # Date 1251637464 0 # Node ID 67b79658b04766a4407f2e10c4a54c9648b27c27 # Parent e8ddbc95cbf3a695aab73fab4bd13d30dd12c71c Refactor and simplify menu. diff -r e8ddbc95cbf3 -r 67b79658b047 gamelib/constants.py --- /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"), +] diff -r e8ddbc95cbf3 -r 67b79658b047 gamelib/main.py --- 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) diff -r e8ddbc95cbf3 -r 67b79658b047 gamelib/mainmenu.py --- 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)