Changeset 5:67b79658b047


Ignore:
Timestamp:
Aug 30, 2009, 1:04:24 PM (11 years ago)
Author:
Simon Cross <hodgestar@…>
Branch:
default
Convert:
svn:b4e93282-eac8-4b8b-b765-0f5d36de2b68@6
Message:

Refactor and simplify menu.

Location:
gamelib
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • gamelib/main.py

    r4 r5  
    77'''
    88
    9 SCREEN = (800, 600)
    10 
    11 import time
    12 import random
    13 
    149import pygame
    1510from pgu import gui
    16 from pygame.locals import *
     11from pygame.locals import SWSURFACE, QUIT, KEYDOWN, K_ESCAPE
    1712
    1813from mainmenu import MainMenu
     14import constants
    1915
    20 W,H = 640,480
    21 W2,H2 = 320,240
    22 
    23 ##Using App instead of Desktop removes the GUI background.  Note the call to app.init()
    24 ##::
    25 
    26 form = gui.Form()
    27 
    28 app = gui.App()
    29 main_menu = MainMenu()
    30 
    31 c = gui.Container(align=-1,valign=-1)
    32 c.add(main_menu,0,0)
    33 
    34 app.init(c)
    35 ##
    36 
    37 dist = 8192
    38 span = 10
    39 stars = []
    40 def reset():
    41     global stars
    42     stars = []
    43     for i in range(0,form['quantity'].value):
    44         stars.append([random.randrange(-W*span,W*span),
    45                       random.randrange(-H*span,H*span),
    46                       random.randrange(1,dist)])
    47        
    48 
    49 def render(dt):
    50     speed = form['speed'].value*10
    51     size = form['size'].value
    52     color = form['color'].value
    53     warp = form['warp'].value
    54 
    55     colors = []
    56     for i in range(256,0,-1):
    57         colors.append((color[0]*i/256,color[1]*i/256,color[2]*i/256))
    58        
    59     n = 0
    60     for x,y,z in stars:
    61         if warp:
    62             z1 = max(1,z + speed*2)
    63             x1 = x*256/z1
    64             y1 = y*256/z1
    65             xx1,yy1 = x1+W2,y1+H2
    66    
    67         x = x*256/z
    68         y = y*256/z
    69         xx,yy = x+W2,y+H2
    70         c = min(255,z * 255 / dist)
    71         col = colors[int(c)]
    72 
    73         if warp:
    74             pygame.draw.line(screen,col,
    75                              (int(xx1),int(yy1)),
    76                              (int(xx),int(yy)),size)
    77        
    78         pygame.draw.circle(screen,col,(int(xx),int(yy)),size)
    79        
    80         ch = 0
    81         z -= speed*dt
    82         if z <= 0:
    83             ch = 1
    84             z += dist
    85         if z > dist:
    86             ch = 1
    87             z -= dist
    88         if ch:
    89             stars[n][0] = random.randrange(-W*span,W*span)
    90             stars[n][1] = random.randrange(-H*span,H*span)
    91         stars[n][2] = z
    92        
    93         n += 1
    94        
    95 screen = pygame.display.set_mode(SCREEN,SWSURFACE)
    96 
    97 ##You can include your own run loop.
    98 ##::
    99 
    100 def gameloop(screen):
    101     reset()
     16def gameloop(screen, app):
     17    """Main game loop."""
    10218    clock = pygame.time.Clock()
    10319    done = False
    10420    while not done:
    10521        for e in pygame.event.get():
    106             if e.type is QUIT: 
     22            if e.type is QUIT:
    10723                done = True
    108             elif e.type is KEYDOWN and e.key == K_ESCAPE: 
     24            elif e.type is KEYDOWN and e.key == K_ESCAPE:
    10925                done = True
    11026            else:
     
    11430        dt = clock.tick()/1000.0
    11531        screen.fill((0,0,0))
    116         render(dt)
    11732        app.paint(screen)
    11833        pygame.display.flip()
     
    12136
    12237def main():
    123     gameloop(screen)
     38    """Main script."""
     39    screen = pygame.display.set_mode(constants.SCREEN, SWSURFACE)
     40
     41    form = gui.Form()
     42    app = gui.App()
     43    main_menu = MainMenu()
     44
     45    c = gui.Container(align=-1, valign=-1)
     46    c.add(main_menu, 0, 0)
     47
     48    app.init(c)
     49
     50    gameloop(screen, app)
  • gamelib/mainmenu.py

    r4 r5  
     1"""Main menu."""
     2
     3from pgu import gui
    14import pygame
    2 from pgu import gui
     5import constants
    36
    47class MainMenu(gui.Table):
     
    710
    811        def fullscreen_changed(btn):
    9             #pygame.display.toggle_fullscreen()
    10             print "TOGGLE FULLSCREEN"
    11 
    12         def stars_changed(slider):
    13             n = slider.value - len(stars)
    14             if n < 0:
    15                 for i in range(n,0):
    16                     stars.pop()
    17             else:
    18                 for i in range(0,n):
    19                     stars.append([random.randrange(-W*span,W*span),
    20                                   random.randrange(-H*span,H*span),
    21                                   random.randrange(1,dist)])
     12            pygame.display.toggle_fullscreen()
    2213
    2314        fg = (255,255,255)
    2415
    2516        self.tr()
    26         self.td(gui.Label("Phil's Pygame GUI",color=fg),colspan=2)
    27        
     17        self.td(gui.Label(constants.NAME, color=fg), colspan=2)
     18
    2819        self.tr()
    29         self.td(gui.Label("Speed: ",color=fg),align=1)
    30         e = gui.HSlider(100,-500,500,size=20,width=100,height=16,name='speed')
    31         self.td(e)
    32        
    33         self.tr()
    34         self.td(gui.Label("Size: ",color=fg),align=1)
    35         e = gui.HSlider(2,1,5,size=20,width=100,height=16,name='size')
    36         self.td(e)
    37        
    38         self.tr()
    39         self.td(gui.Label("Quantity: ",color=fg),align=1)
    40         e = gui.HSlider(100,1,1000,size=20,width=100,height=16,name='quantity')
    41         e.connect(gui.CHANGE, stars_changed, e)
    42         self.td(e)
    43        
    44         self.tr()
    45         self.td(gui.Label("Color: ",color=fg),align=1)
    46        
    47        
    48         default = "#ffffff"
    49         color = gui.Color(default,width=64,height=10,name='color')
    50 #         color_d = ColorDialog(default)
     20        self.td(gui.Label("Start", color=fg), align=1)
    5121
    52 #         color.connect(gui.CLICK,color_d.open,None)
    53 #         color_d.connect(gui.CHANGE,gui.action_setvalue,(color_d,color))
    54         self.td(color)
    55        
    5622        btn = gui.Switch(value=False,name='fullscreen')
    5723        btn.connect(gui.CHANGE, fullscreen_changed, btn)
     
    6026        self.td(gui.Label("Full Screen: ",color=fg),align=1)
    6127        self.td(btn)
    62        
     28
    6329        self.tr()
    64         self.td(gui.Label("Warp Speed: ",color=fg),align=1)
    65         self.td(gui.Switch(value=False,name='warp'))
    66        
     30        self.td(gui.Label("Quit", color=fg), align=1)
Note: See TracChangeset for help on using the changeset viewer.