Mercurial > rinkhals
changeset 4:e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 30 Aug 2009 12:48:02 +0000 |
parents | 41761fcd7386 |
children | 67b79658b047 |
files | gamelib/main.py gamelib/mainmenu.py |
diffstat | 2 files changed, 179 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/main.py Sun Aug 30 12:17:15 2009 +0000 +++ b/gamelib/main.py Sun Aug 30 12:48:02 2009 +0000 @@ -6,8 +6,118 @@ package. ''' -import data +SCREEN = (800, 600) + +import time +import random + +import pygame +from pgu import gui +from pygame.locals import * + +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 + + 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() + clock = pygame.time.Clock() + done = False + while not done: + for e in pygame.event.get(): + if e.type is QUIT: + done = True + elif e.type is KEYDOWN and e.key == K_ESCAPE: + done = True + else: + app.event(e) + + # 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(): - print "Hello from your game's main()" - print data.load('sample.txt').read() + gameloop(screen)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gamelib/mainmenu.py Sun Aug 30 12:48:02 2009 +0000 @@ -0,0 +1,66 @@ +import pygame +from pgu import gui + +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)]) + + 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.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) + +# 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')) +