Python小程序——Hunt the Wumpus

一、感悟

今天静心学习了一天的pythson,比起之前没日没夜地看海贼王更充足啊!!!而且一个人待在宿舍有点方,不过真心项以后有一间自己的小房子,没有其他人,做自己要做的事,可以持续到三更半夜,然后睡到日照三竿。

关于编写程序的:

先编写一个简单的程序,再不断添加功能。改进游戏的话,就把反复使用的部分放进函数中,并尝试在程序的不同部分提供接口。接口的任务是隐藏琐碎的细节,让程序的各部分使用起来更加简单。

二、代码

#caves's naem

cave_names=[

"Arched cavern",

"Twisty passages",

"Dripping passage",

"dusty crawlsapce",

"Undergroud lake",

"Black pit",

"Fallen cavern",

"Shallow pool",

"Icy underground river",

"Sandy hollow",

"Old Block",

"Tree root cave",

"Narrow ledge",

"Winding steps",

"Echoing chamber",

"Musty cave",

"Cloomy cave",

"Low ceiling cave",

"Happy cave",

"Shallow cave",

]

#create functions to offer convenience

def create_tunnel(cave_from,cave_to):

"""Create a tunnel between cave_from and cave_to"""

caves[cave_from].append(cave_to)

caves[cave_to].append(cave_from)

def visit_cave(cave_number):

"""mark a cave as visited"""

visited_caves.append(cave_number)

unvisited_caves.remove(cave_number)

def choosecave(cave_list):

"""Pick a cave from list,provided that cave has less than 3 tunnel."""

cave_number=choice(cave_list)

while len(caves[cave_number])>=3:

cave_number=choice(cave_list)

return cave_number

def print_caves():

"""Print out all the current cave structure"""

for number in cave_numbers:

print number,":",caves[number]

print '-----------------------------------------------------'

#functions are to create cave-net

def setup_caves(cave_numbers):

"""create the starting list of caves"""

caves=[];

for cave in cave_numbers:

caves.append([])

return caves

def link_caves():

"""Make sure all of the caves are connected with two tunnel """

while unvisited_caves!=[]:

this_cave=choosecave(visited_caves)

next_cave=choosecave(unvisited_caves)

create_tunnel(this_cave,next_cave)

visit_cave(next_cave)

def finish_caves():

"""Link the rest of the caves with one-way tunnel"""

for cave in cave_numbers:

while len(caves[cave])<3:

passage_to=choosecave(cave_numbers)

caves[cave].append(passage_to)

#functions are to  communcation with player

def  print_location(player_location):

"""Tell the palyer about where they are"""

print

print cave_names[player_location]

print "from here ,you can see:"

neighbors=caves[player_location]

for tunnel in range(0,3):

next_cave=neighbors[tunnel]

print" ",tunnel+1,"-",cave_names[next_cave]

if wumpus_location in neighbors:

print "I smell a wumpus !"

def  ask_for_cave():

"""Ask the player to choose a cave from their current_direction """

print "which cave ?"

player_input=raw_input(">")

if player_input in ['1','2','3']:

index=int(player_input)-1

neighbors=caves[player_location]

cave_number=neighbors[index]

return cave_number

else:

print player_input+"?"

print "That's not a direction that you can choose !"

return False

def get_action():

"""Find out what player want to do next"""

print "what do you want to do next?"

print "a)fire an arrow"

print "m)moving"

action=raw_input(">")

if action=="m" or action=="a":

return action

else:

print  action+"?"

print "that's not an action that you can do !"

return None

def do_movement():

print "Moving ..."

new_location=ask_for_cave()

if new_location is None:

return player_location

else:

return new_location

def do_shooting():

print"Firing...."

shoot_at=ask_for_cave()

if shoot_at==None:

return False

if shoot_at==wumpus_location:

print "You shot the wumpus !Contriuation !"

else:

print"You wasted your arrow !"

return True

#main function

from random import choice

cave_numbers=range(0,20)

unvisited_caves=range(0,20)

visited_caves=[]

caves=setup_caves(cave_numbers)

visit_cave(0)

print_caves()

link_caves()

print_caves()

finish_caves()

wumpus_location=choice(cave_numbers)

player_location=choice(cave_numbers)

while wumpus_location==player_location:

player_location=choice(cave_numbers)

while True:

print_location(player_location)

action=get_action()

if action==None:

continue

if action=="m":

player_location=do_movement()

if player_location==wumpus_location:

print "Aargh ! You are eaten by a wumpus !"

break

if action=="a":

game_over=do_shooting()

if game_over:

break

你可能感兴趣的:(Python小程序——Hunt the Wumpus)