New to Python...feedback?

Andy Jewell andy at wild-flower.co.uk
Mon Jun 23 22:40:28 CEST 2003


danka,

Been busy, I see... you asked for comments, so here they are:

	1) You've put all your data right inside the program - this is a "BAD THING" 
(tm).  You ought to either a) put it into a list or similar structure at the 
beginning, or b) even better, into a file of some sort - even just a simple 
text file, then read it into your program.  What if, for example, you wanted 
to do a French or German version ?  Even M$ don't rewrite their apps for each 
different language.

	2) Your program is just one long list of ifs and elses.  Maybe you should 
think about putting more of the logic into your data-structure (after 
covering point 1).  Draw your little adventure out as a diagram, eg. a tree, 
or network, showing how each part inter-relates.

	3) Think about storing the player's 'state', such as current location, what 
they're carrying, how healthy or otherwise they are and using that to affect 
the outcome of the game.


example (not thouroughly thought through, just enough to give you a start).  
You will still need to think about your data structures tho', but later on...

regards, 
-andyj

def getchoice(prompt,choices):
	global quit # global so we can change it from here
	n=1
	valid_choices=[]
	for choice in choices:
		print n,choice
		valid_choices.append(n)
		n=n+1
	valid_choices.append("q")
	resp="*"
	while resp not in valid_choices:
		resp=raw_input(prompt)
	if resp == "q":
		quit=1
	return resp

def bedroom():
	print "you hear the alarm go off at roughly 6am..."
	sleep(4)

	print "you feel groggy and tired still. for some reason..."
	sleep(4)

	print "YOU CAN'T REMEMBER WHO YOU ARE, WHERE YOU",
	print "ARE OR WHAT YOU'RE DONIG THERE!!!"
	sleep(4)
	print "[que cheesy mystery music] Dun dun DUN!"
	sleep(3)

	choice=getchoice(
		"what shall it be, O ye of no name?",
		 ["get up, in spite of the fact that you feel dead",
		  "just hit the snooze alarm...c'mon, just five more minutes...",
		  """ ignore it. sleep through it. it's not so bad. it's quite soothing,
			really."""]

	if choice == "1": return fryingpan
	elif choice == "2": return snooze
	elif choice == "3": return sleepthru

def fryingpan():
	# add your stuff about frying pan here...

def snooze():
	# stuff about snooze
		

def sleepthru():
	# stuff about sleepthru...


currentroom=bedroom # note the lack of brackets
					 #this means copy bedroom into currentroom
quit=0
state=["groggy"]
def mainloop():
	while not quit: # the next indented bit will be done until quit == 1
		move=currentroom() # do the thing for this room.  the brackets mean "do it"
		currentroom=move
		if quit:
			really=raw_input("Are you really sure yu want to quit? [Y/n]")
			if really.upper() != "Y":
				quit=0
			else:
				print "Oh, well - if you must.  You'll pay.  You know you will..."

		





More information about the Python-list mailing list