wx小程序 最多放多少个caves_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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值