#!/usr/bin/python ## ## Simple web game by William D. Colburn ## http://infohost.nmt.edu/~schlake/ ## 505 480 9406 ## schlake@nmt.edu ## import cgi import cgitb import os import sys import random def strfry( l ): c = [ x for x in l ] r = [] while c: x = random.choice( c ) c.remove( x ) r.append( x ) return r names = ['Eric', 'Sonia', 'Phillip', 'Mary', 'Jonathon', 'Lisa' ] letters = 'abcdef' n = {'a':names[0], 'b':names[1], 'c':names[2], 'd':names[3], 'e':names[4], 'f':names[5] } l = {names[0]:'a', names[1]:'b', names[2]:'c', names[3]:'d', names[4]:'e', names[5]:'f' } def emitDead( data ): for i in range( 1, 6 + 1): # Python is Stupid if data[i].isupper(): print n[data[i].lower()], 'is laying on the floor.' print '

' def emitStepForm( data ): print '

' print '' % data print '' def newData(): s = strfry( letters ) return '%d%s%s%s%s%s%s%d' % (random.randrange( 6 ), s[0], s[1], s[2], s[3], s[4], s[5], random.randrange( 6 + 1 )) def emitError( msg ): print 'ERROR %s' % msg print '

ERROR %s

' % msg print 'Error %s' %msg sys.exit(0) def out( msg ): print msg, '

' def getField( field ): if form.has_key( field ): try: return int(form[field].value) except: return form[field].value return None def emitNew( ): data = newData() if 0 == int( data[7] ): print 'You convene the candidates for an election.

' else: print '%s convenes the candidates for an election.

' % n[data[int( data[7] )]] emitStepForm( data ) sys.exit( 0 ) def emitTargets( data ): print '' print '' % data c = 0 for i in range(1,6+1): # Python is Stupid if data[i].islower(): c = c + 1 print '
' % (n[data[i]], i) if c: print '
' else: print 'You are now the President For Life.' sys.exit( 0 ) def emitStep( data ): if 0 == int( data[7] ): print 'You have the gun.

' emitTargets( data ) sys.exit( 0 ) else: target = random.randrange( 1, 6 + 1 ) # Python is Stupid while data[target].isupper(): target = random.randrange( 1, 6 + 1 ) # Python is Stupid if target == int( data[7] ): print '%s puts the gun to your head.

' % n[data[int( data[7] )]] x = int( data[0] ) if x: print 'Click.

' x = x - 1 print '%s hands you the gun.' % n[data[int( data[7] )]] data = '%s%s0' % (x,data[1:-1]) else: print 'Pop.' sys.exit( 0 ) emitStepForm( data ) sys.exit( 0 ) else: print '%s puts the gun to %s\'s head.

' % (n[data[int( data[7] )]], n[data[target]]) x = int( data[0] ) if x: print 'Click.

' x = x - 1 print '%s hands the gun to %s.' % (n[data[int( data[7] )]], n[data[target]]) data = '%d%s%s' % (x, data[1:-1], target) else: print 'Pop.

' print '%s puts another bullet into the gun.' % n[data[int( data[7] )]] d = [ x for x in data ] d[target] = d[target].upper() d[0] = str( random.randrange( 6 ) ) data = ''.join( d ) emitStepForm( data ) sys.exit( 0 ) def emitShoot( data, target ): if 0 == target: print 'You put the gun to your own head.

' x = int( data[0] ) if x: print 'Click.' x = x - 1 data = '%d%s' % (x,data[1:]) emitStepForm( data ) sys.exit( 0 ) else: print 'Pop.

' ## ## Maybe I should put a restart button here? ## sys.exit( 0 ) else: x = int( data[0] ) if x: print 'Click.

' x = x - 1 print 'You hand the gun to %s.' % n[data[target]] data = '%d%s%d' %(x,data[1:6 + 1],target) emitStepForm( data ) sys.exit( 0 ) else: print 'Pop.

' d = [ x for x in data ] d[target] = d[target].upper() d[0] = str( random.randrange( 6 ) ) data = ''.join( d ) emitStepForm( data ) sys.exit( 0 ) ######################################################################## cgitb.enable() print 'Content-Type: text/html\n' # not an out() form = cgi.FieldStorage() print 'President For Life' print '

President For Life

' data = getField( 'data' ) if not data: ## ## New game, start it up ## emitNew( ) else: emitDead( data ) if getField( 'step' ): emitStep( data ) elif getField( 'shoot0' ): emitShoot( data, 0 ) elif getField( 'shoot1' ): emitShoot( data, 1 ) elif getField( 'shoot2' ): emitShoot( data, 2 ) elif getField( 'shoot3' ): emitShoot( data, 3 ) elif getField( 'shoot4' ): emitShoot( data, 4 ) elif getField( 'shoot5' ): emitShoot( data, 5 ) elif getField( 'shoot6' ): emitShoot( data, 6 )