魔塔你玩过吗?95后的应该玩过!找童真,自己用Python开发魔塔!

魔塔你玩过吗?95后的应该玩过!找童真,自己用Python开发魔塔!

魔塔你玩过吗?95后的应该玩过!找童真,自己用Python开发魔塔!

进群:548377875   可获取数十套PDF哦!

魔塔你玩过吗?95后的应该玩过!找童真,自己用Python开发魔塔!

main.py

# -*- coding:utf-8 -*-

import display,fight

import re

u"""

魔王抓走了公主,玩家要进入魔塔打败魔王,救出公主。

魔塔由很多房间组成,房间里有物品、怪物,还要公主和魔王。

玩家要打败怪物升级搜索房间获得物品,让自己属性变得更强,才能打败魔王。

要用一个引擎让这个充满房间的魔塔运行。

"""

#游戏引擎类

class Engine(object):

def __init__(self,tower):

self.tower = tower

def play(self):

#游戏介绍

print u"""

欧洲中世纪时期,一位叫玛丽的公主被恶魔掳走了。

国王悲痛欲绝,许下诺言说谁要是能救回公主,就把国家的国土分他一半。

可是并没有人敢答应,因为大家都知道恶魔十分恐怖,它所住的地方--魔塔,

更是一个阴森恐怖,极度危险的地方,到过那的人没有一个能活着回来。

这个时候,一个叫卡尔的年轻人主动上前,表示愿意试一试。

国王说,年轻人那就拜托你了,魔塔离这里路途遥远,不过我可以用时光之杖直接送你过去。

只见一道白光,你被传送到了魔塔。

"""

raw_input('>')

print u"""

你来到了魔塔,这里阴森恐怖,有很多怪物在这出没,也有一些地方藏着很厉害的武器,

你要试着去找到那些武器让自己变得更加强大,挑战不同的怪物让自己升级,才能让自己

有足够能力打败魔王!

在游戏中,Q键可以查看你和怪物的属性,战斗预测可以告诉你打败怪物会消耗的血量。

E键可以查看小地图,了解你在地图中的位置。

游戏开始了,加油!

"""

raw_input('>')

Now_room = None

next_room = self.tower.first_room

while True:

room = self.tower.enter_room(next_room,Now_room)

Now_room = next_room

next_room = room

#魔塔类

class Tower(object):

def __init__(self,first_room):

self.room = {"room1":Room1(),"room2":Room2(),"room3":Room3(),

"room4":Room4(),"room5":Room5(),"room6":Room6(),

"room7":Room7(),"room8":Room8(),"room9":Room9(),

"basement":basement(),"palace":palace()}

self.first_room = first_room

def enter_room(self,next_room,Now_room):

next_room = self.room.get(next_room)

return next_room.enter(Now_room)

#房间类

class Room(object):

room_dict = {'room1':1,'room2':2,'room3':3,'room4':4,

'room5':5,'room6':6,'room7':7,'room8':8,

'room9':9,'palace':-1,'basement':11}

toward_dict = {"w":"up","s":"down",

"a":"left","d":"right","f":"middle"}

open_flag = 0

def enter(self,last_room):

#显示房间剧情

print "--------------------------------------------- "

num = re.findall(r"d",self.room_name)

if num == []:

if self.room_name == "palace":

print u"宫殿"

else:

print u"地下室"

else:

print u"进入房间%s" % num[0]

print self.words

#获取玩家在房间的位置

self.player_pos = self.get_playerpos(last_room)

#显示房间样子

display.display_room(self.player_pos,self.monster,self.monster_pos,

self.door_pos,self.goods)

#如果去过地下室,则可以进入宫殿

if self.room_name == "basement":

Room.open_flag = 1

#进入玩家选择循环

while True:

print u"请选择:1、搜索物品 2、消灭怪物 3、离开房间"

print u"Q键查看玩家属性 E键显示小地图"

choose0 = raw_input('>')

if choose0 == "q":

display.display_property(self.monster)

elif choose0 == "e":

display.display_pos(self.room_name)

elif choose0 == "1":

fight.find_goods(self.goods)

self.goods = []

elif choose0 == "2":

print u"请选择你要挑战的怪物:W、上 S、下 A、左 D、右 F、中 R、返回"

choose1 = raw_input('>')

if choose1 == "r":

continue

monster_toward = Room.toward_dict.get(choose1)

if monster_toward not in self.monster_pos:

print u"那里没有怪物。"

continue

fight.fight(self.monster)

self.monster_pos.remove(monster_toward)

elif choose0 == "3":

print u"请选择你要进入的房间:W、上 S、下 A、左 D、右 R、返回"

choose2 = raw_input('>')

if choose2 == "r":

continue

door_toward = Room.toward_dict.get(choose2)

if door_toward not in self.door_pos:

print u"那是一堵墙。"

continue

if door_toward in self.monster_pos:

print u"你必须打败门前的怪物,才能进去。"

continue

#根据方向得到下个房间的名字

num_dict = {"up":-3,"down":3,

"left":-1,"right":1}

next_roomnum = Room.room_dict.get(self.room_name)

next_roomnum += num_dict.get(door_toward)

for key,value in Room.room_dict.items():

if value == next_roomnum:

next_room = key

break

if next_room == "palace" and Room.open_flag == 0:

print u"这个地方感觉很危险,我还是等会再进去吧~"

continue

return next_room

else:

print u"指令错误。"

def get_playerpos(self,last_room):

if last_room == None:

return "middle"

last_roomnum = Room.room_dict.get(last_room)

Now_roomnum = Room.room_dict.get(self.room_name)

num = Now_roomnum - last_roomnum

if num == 3:

return "up"

elif num == 1:

return "left"

elif num == -1:

return "right"

elif num == -3:

return "down"

else:

print u"无法确定玩家位置!"

#房间1

class Room1(Room):

def __init__(self):

self.room_name = "room1"

self.goods = [u"圣剑",u"中血瓶"]

self.monster = ""

self.monster_pos = []

self.door_pos = ["right"]

self.words = u"这是个存放物品的房间,说不定藏着什么好东西!"

#房间2

class Room2(Room):

def __init__(self):

self.room_name = "room2"

self.goods = []

self.monster = u"巫师"

self.monster_pos = ["left","middle","up","right"]

self.door_pos = ["left","down"]

self.words = u"房间里似乎有一些可怕的生物,你要打败门口的怪物,才能打开相应的门。"

#房间3

class Room3(Room):

def __init__(self):

self.room_name = "room3"

self.goods = [u"圣盾",u"超大血瓶"]

self.monster = ""

self.monster_pos = []

self.door_pos = ["down"]

self.words = u"这是个存放物品的房间,说不定藏着什么好东西!"

#房间4

class Room4(Room):

def __init__(self):

self.room_name = "room4"

self.goods = []

self.monster = u"史莱姆"

self.monster_pos = ["left","down"]

self.door_pos = ["right","down"]

self.words = u"房间里似乎有一些可怕的生物,你要打败门口的怪物,才能打开相应的门。"

#房间5

class Room5(Room):

def __init__(self):

self.room_name = "room5"

self.goods = []

self.monster = ""

self.monster_pos = []

self.door_pos = ["left","right","down"]

self.words = u"这是一个空荡荡的房间,可以通向四面八方。"

#房间6

class Room6(Room):

def __init__(self):

self.room_name = "room6"

self.goods = []

self.monster = u"小魔王"

self.monster_pos = ["up"]

self.door_pos = ["left","up"]

self.words = u"你走进了小恶魔的房间,这是魔塔里十分强大的怪物,最好不要惹他。"

#房间7

class Room7(Room):

def __init__(self):

self.room_name = "room7"

self.goods = [u"小血瓶"]

self.monster = ""

self.monster_pos = []

self.door_pos = ["up"]

self.words = u"这是个存放物品的房间,说不定藏着什么好东西!"

#房间8

class Room8(Room):

def __init__(self):

self.room_name = "room8"

self.goods = []

self.monster = u"骑士"

self.monster_pos = ["left","down","middle"]

self.door_pos = ["down","right"]

self.words = u"房间里似乎有一些可怕的生物,你要打败门口的怪物,才能打开相应的门。"

#房间9

class Room9(Room):

def __init__(self):

self.room_name = "room9"

self.goods = [u"大血瓶",u"圣水"]

self.monster = ""

self.monster_pos = []

self.door_pos = ["left"]

self.words = u"这是个存放物品的房间,说不定藏着什么好东西!"

#地下室

class basement(Room):

def __init__(self):

self.room_name = "basement"

self.goods = []

self.monster = u"公主"

self.monster_pos = ["middle"]

self.door_pos = ["up"]

self.words = u"""

这是一个的地下室,有个人被囚禁在其中。原来是公主!

你叫醒了公主,说到"公主,我是你父王派来救你的,快跟我走吧!"

公主揉了揉眼睛,说:"非常感谢你英雄,可是我被魔王用法术禁锢在这里了,

只有打败大魔王,才能离开。大魔王的位置在地图最上边的神秘房间里,

那个地方十分危险,在进去之前一定要做好充分的准备!"

"恩,等我的好消息吧!",你说到。

"""

""

#魔王宫殿

class palace(Room):

def __init__(self):

self.room_name = "palace"

self.goods = []

self.monster = u"大魔王"

self.monster_pos = ["middle"]

self.door_pos = []

self.words = u"""你走进了大魔王的宫殿。

"年轻人,你终于来了,我等你很久了。我要告诉你一个不幸的消息,这个房子不打败我

是无法离开的。哈哈哈,乖乖受死吧!"

"""

#角色类

class Role(object):

pass

tower = Tower("room5")

game = Engine(tower)

game.play()

figth.py

# -*- coding:utf-8 -*-

import copy

u"""

本模块用于配置玩家和怪物的属性,提供战斗函数。另外提供一个物品使用函数

"""

#配置玩家属性

player_property = {u"名字":u"卡尔",u"生命值":100,u"攻击力":10,u"护甲":10,u"经验":0,u"符号":"(^_^)"}

##配置怪物属性

Slime_property = {u"名字":u"史莱姆",u"生命值":25,u"攻击力":15,u"护甲":15,u"符号":"~0Y0~"}

wizard_property = {u"名字":u"巫师",u"生命值":50,u"攻击力":40,u"符号":">@Y@<"}

knight_property = {u"名字":u"骑士",u"生命值":350,u"攻击力":30,u"护甲":50,u"符号":"OYO/"}

s_devil_property = {u"名字":u"小魔王",u"生命值":400,u"攻击力":100,u"护甲":100,u"符号":"~/-Y-~"}

g_devil_property = {u"名字":u"大魔王",u"生命值":3000,u"攻击力":300,u"护甲":300,u"符号":"~~//-Y-\~~"}

princess_property = {u"名字":u"公主",u"符号":"^o^"}

def fight(monster):

u"""

函数功能:让玩家和怪物进行战斗,若玩家胜利,则设置玩家剩余生命值,若失败,则退出游戏。

输入参数:monster--怪物,有效的值:u"史莱姆",u"巫师",u"骑士",u"小魔王",u"大魔王"

"""

global player_property,Slime_property,wizard_property

global knight_property,s_devil_property,g_devil_property

#判断是什么怪物

if monster == Slime_property[u"名字"]:

monster_property = copy.deepcopy(Slime_property)

elif monster == wizard_property[u"名字"]:

monster_property = copy.deepcopy(wizard_property)

elif monster == knight_property[u"名字"]:

monster_property = copy.deepcopy(knight_property)

elif monster == s_devil_property[u"名字"]:

monster_property = copy.deepcopy(s_devil_property)

elif monster == g_devil_property[u"名字"]:

monster_property = copy.deepcopy(g_devil_property)

elif monster == princess_property[u"名字"]:

print u"是不是傻!公主你也杀。"

exit()

else:

print u"怪物名字输入错误!"

exit()

#开始战斗

who_round = "player"

while player_property[u"生命值"] > 0 and monster_property[u"生命值"] > 0:

if who_round == "player":

monster_property[u"生命值"] -= (player_property[u"护甲"] + player_property[u"攻击力"])

who_round = "monster"

else:

player_property[u"生命值"] -= (monster_property[u"护甲"] + monster_property[u"攻击力"])

who_round = "player"

#战斗结果处理

if player_property[u"生命值"] <= 0:

print u'"不自量力的家伙,哼!" 怪物将你大卸八块,吃掉了!'

print u"你被打败了,游戏结束!"

exit()

else:

print u"你打败了怪物,赢得了胜利,获得25点经验!"

player_property[u"经验"] += 25

#打败小魔王升3级

if monster == s_devil_property[u"名字"]:

print u"打败小魔王,连升3级!生命值+300,攻击力加30,护甲加30!"

player_property[u"生命值"] += 300

player_property[u"攻击力"] += 30

player_property[u"护甲"] += 30

#打败大魔王游戏结束

if monster == g_devil_property[u"名字"]:

print u"""

"啊~不,不可能!我竟然被打败了!",大魔王怒吼道,

"既然你打败了我,那么我就要你陪葬,你们谁都跑不了,哈哈哈哈哈~"

这时地动山摇,墙壁开裂,屋顶的石头不断落下,魔塔开始坍塌。

你趁机从墙壁的裂缝里溜了出去,救出了公主。

从此,英雄卡尔的名字成了一个传说~

恭喜你,通关!

"""

exit()

#经验达到100升级属性

if player_property[u"经验"] == 100:

print u"恭喜你,升了1级,生命值+100,攻击力加10,护甲加10!"

player_property[u"生命值"] += 100

player_property[u"攻击力"] += 10

player_property[u"护甲"] += 10

player_property[u"经验"] = 0

def forecast_fight(monster):

u"""

函数功能:预测玩家和怪物战斗需要的生命值

输入参数:monster--怪物名字,有效的值:u"史莱姆",u"巫师",u"骑士",u"小魔王",u"大魔王"

返回参数:health--消耗玩家的生命值

"""

global player_property,g_devil_property

#判断是什么怪物

if monster == Slime_property[u"名字"]:

monster_property = copy.deepcopy(Slime_property)

elif monster == wizard_property[u"名字"]:

monster_property = copy.deepcopy(wizard_property)

elif monster == knight_property[u"名字"]:

monster_property = copy.deepcopy(knight_property)

elif monster == s_devil_property[u"名字"]:

monster_property = copy.deepcopy(s_devil_property)

elif monster == g_devil_property[u"名字"]:

monster_property = copy.deepcopy(g_devil_property)

else:

print u"怪物名字输入错误!"

exit()

player_health = player_property[u"生命值"]

#模拟战斗

who_round = "player"

while monster_property[u"生命值"] > 0:

if who_round == "player":

monster_property[u"生命值"] -= (player_property[u"护甲"] + player_property[u"攻击力"])

who_round = "monster"

else:

player_health -= (monster_property[u"护甲"] + monster_property[u"攻击力"])

who_round = "player"

#计算消耗的血量

health = player_property[u"生命值"] - player_health

return health

def find_goods(goods):

u"""

函数功能搜索物品

输入参数:goods--物品,类型--列表

"""

if goods == []:

print u"什么都没找到!"

else:

for good in goods:

if good == u"小血瓶":

print u"你获得一个小血瓶,生命值增加100点!"

player_property[u"生命值"] += 100

elif good == u"中血瓶":

print u"你获得一个中血瓶,生命值增加200点!"

player_property[u"生命值"] += 200

elif good == u"大血瓶":

print u"你获得一个大血瓶,生命值增加400点!"

player_property[u"生命值"] += 400

elif good == u"超大血瓶":

print u"你获得一个超大血瓶,生命值增加600点!"

player_property[u"生命值"] += 600

elif good == u"圣水":

print u"你获得一瓶圣水,生命值增加一倍!攻击力增加一倍!护甲增加一倍!"

player_property[u"生命值"] *= 2

player_property[u"攻击力"] *= 2

player_property[u"护甲"] *= 2

elif good == u"圣剑":

print u"你获得一把圣剑,攻击力增加100!"

player_property[u"攻击力"] += 100

elif good == u"圣盾":

print u"你获得一个圣盾,护甲增加100!"

player_property[u"护甲"] += 100

elif good == u"钥匙":

print u"你获得一把钥匙!"

else:

print u"物品名称错误!"

display.py

# -*- coding:utf-8 -*-

import copy

import fight

u"""

这个模块提供一些实现显示功能函数

"""

def display_pos(room):

u"""

函数功能显示当前所在位置

输入参数:room--房间号 ,类型--字符串

"""

room_dict = {'room1':1,'room5':5,

'room6':6,'room9':9,

'palace':0,'basement':10}

pos = [' ',' ',' ']

pos[room_dict.get(room)] = 2

print u"""

================

| 神秘房间 |

| %c |

==========---===========

| 房间1 | 房间2 | 房间3 |

| %c | %c | %c |

| | | |

|=======|=======|=======|

| 房间4 | 房间5 | 房间6 |

| %c | %c | %c |

| | | |

|=======|=======|=======|

| 房间7 | 房间8 | 房间9 |

| %c | %c | %c |

| | | |

===========---===========

| 地下室 |

| %c |

================

""" % (pos[0],pos[1],pos[2],pos[3],pos[4],pos[5],pos[6],pos[7],pos[8],pos[9],pos[10])

def display_room(player_pos,monster,monster_pos,door_pos,goods):

u"""

函数功能显示房间内的景象。

输入参数:

玩家的位置--player_pos,类型--字符串,有效的值--"up","left",0(不存在)

怪物的种类--monster,类型--字符串

有效的值: "史莱姆" ~0Y0~

"巫师" >@Y@<

"骑士" OYO/

"小魔王" ~/-Y-~

"大魔王" ~~//-Y-\~~

"公主" ^o^

"" 不存在怪物

怪物的位置--monster_pos,类型--列表 空列表表示不存在怪物

列表中每个元素,代表一个怪物的位置,类型--字符串,"middle"

门的位置--door_pos,类型--列表 空列表表示不存在门

列表中每个元素--代表一个门的位置,类型--字符串,"down"

物品的种类--goods,类型--列表 空列表表示不存在物品

列表中每个元素--代表一种物品,类型--字符串

有效的值:"Excalibur" 圣剑 +---

"圣盾" [+]

"钥匙" C=--

"小血瓶" (o)

"中血瓶" (oo)

"大血瓶" (ooo)

"超大血瓶" (oooo)

"圣水" [o]

"地图" [|]

备注:玩家图形: (^_^)

"""

drawlist = []

good_pos = [6,7,9]

for i in range(14):

drawlist.append(' ')

if player_pos == "up": #根据输入参数,让玩家图形在对应的位置显示

drawlist[2] = convert_sign(fight.player_property[u"符号"])

elif player_pos == "down":

drawlist[12] = convert_sign(fight.player_property[u"符号"])

elif player_pos == "left":

drawlist[5] = convert_sign(fight.player_property[u"符号"])

elif player_pos == "right":

drawlist[10] = convert_sign(fight.player_property[u"符号"])

elif player_pos == "middle":

drawlist[7] = convert_sign(fight.player_property[u"符号"])

else:

print u"玩家位置错误!"

if monster == u"史莱姆": #根据输入参数,设置怪物图形

monster_sign = convert_sign(fight.Slime_property[u"符号"])

elif monster == u"巫师":

monster_sign = convert_sign(fight.wizard_property[u"符号"])

elif monster == u"骑士":

monster_sign = convert_sign(fight.knight_property[u"符号"])

elif monster == u"公主":

monster_sign = convert_sign(fight.princess_property[u"符号"])

elif monster == u"小魔王":

monster_sign = convert_sign(fight.s_devil_property[u"符号"])

elif monster == u"大魔王":

monster_sign = convert_sign(fight.g_devil_property[u"符号"])

elif monster == "":

pass

else:

print u"怪物名称错误!"

monster_sign = convert_sign(" ")

for mon in monster_pos: #根据输入参数,让怪物图形在对应的位置显示

if mon == "up":

drawlist[2] = monster_sign

elif mon == "down":

drawlist[12] = monster_sign

elif mon == "left":

drawlist[5] = monster_sign

elif mon == "right":

drawlist[10] = monster_sign

elif mon == "middle":

drawlist[7] = monster_sign

else:

print u"怪物位置错误!"

for door in door_pos: #根据输入参数,让门图形在对应的位置显示

if door == "up":

drawlist[0] = '_ '

drawlist[1] = '| |'

elif door == "down":

drawlist[13] = '|_|'

elif door == "left":

drawlist[3] = '|\'

drawlist[4] = ' \'

elif door == "right":

drawlist[8] = '/|'

drawlist[11] = '/ '

else:

print u"门位置错误!"

for good in goods: #根据输入参数判断是什么物品,并显示在指定的位置

if good == u"圣剑":

gooddraw = convert_sign("+---")

elif good == u"圣盾":

gooddraw = convert_sign("[+]")

elif good == u"钥匙":

gooddraw = convert_sign("C=--")

elif good == u"小血瓶":

gooddraw = convert_sign("(o)")

elif good == u"中血瓶":

gooddraw = convert_sign("(oo)")

elif good == u"大血瓶":

gooddraw = convert_sign("(ooo)")

elif good == u"超大血瓶":

gooddraw = convert_sign("(oooo)")

elif good == u"圣水":

gooddraw = convert_sign("[o]")

elif good == u"地图":

gooddraw = convert_sign("[|]")

else:

print u"物品名称错误!"

continue

drawlist[good_pos.pop(0)] = gooddraw

draw = (drawlist[0],drawlist[1],drawlist[2],drawlist[3],drawlist[4],

drawlist[5],drawlist[6],drawlist[7],drawlist[8],drawlist[9],drawlist[10],

drawlist[11],drawlist[12],drawlist[13])

print """

==================================

|- -|

| - %s - |

| - %s - |

| -------------------------- |

| - %s - |

|%s - - |

|%s - %s %s - |

| - %s - %s|

| - %s %s - %s|

| - %s - |

| -------------------------- |

| - %s - |

==================================

""" % draw

##输入图形格式转换函数,保证%s所在位置就是字符串的最右端,用于对齐格式

def convert_sign(sign):

return ''*(len(sign)-2) + sign

def display_property(monster):

u"""

函数功能显示玩家和怪物属性

输入参数:monster--怪物名字,类型:字符串

有效的值: u"史莱姆",u"巫师",u"骑士",u"小魔王",u"大魔王",""(不存在怪物)

"""

monster_exist = True

#判断是什么怪物

if monster == fight.Slime_property[u"名字"]:

monster_property = copy.deepcopy(fight.Slime_property)

elif monster == fight.wizard_property[u"名字"]:

monster_property = copy.deepcopy(fight.wizard_property)

elif monster == fight.knight_property[u"名字"]:

monster_property = copy.deepcopy(fight.knight_property)

elif monster == fight.s_devil_property[u"名字"]:

monster_property = copy.deepcopy(fight.s_devil_property)

elif monster == fight.g_devil_property[u"名字"]:

monster_property = copy.deepcopy(fight.g_devil_property)

elif monster == "":

monster_exist = False

else:

print u"怪物名字输入错误!"

exit()

if monster_exist == True:

draw = (convert_sign(fight.player_property[u"符号"]),convert_sign(fight.player_property[u"名字"]),

fight.player_property[u"生命值"],fight.player_property[u"攻击力"],fight.player_property[u"护甲"],

convert_sign(monster_property[u"符号"]),convert_sign(monster_property[u"名字"]),

monster_property[u"生命值"],monster_property[u"攻击力"],monster_property[u"护甲"],

fight.forecast_fight(monster_property[u"名字"]))

else:

draw = (convert_sign(fight.player_property[u"符号"]),

fight.player_property[u"护甲"],"","")

print u"""

_________________________________________________

生命值 攻击力 护甲 战斗预测

%s

%s %s %s %s

%s

%s %s %s %s %s

_________________________________________________

""" % draw

# #测试

# display_property(0)

# display_property(u"史莱姆")

# display_property(u"骑士")

# display_property(u"大魔王")

# # #房间1

# # print u"房间1"

# display_room("right",[],["right"],[u"圣剑",u"钥匙",u"中血瓶"])

# # #房间2

# # print u"房间2"

# display_room("down",u"巫师",["left","middle"],"down"],[])

# # #房间3

# print u"房间3"

# display_room("down",["down"],[u"大血瓶",u"圣盾"])

# # #房间4

# print u"房间4"

# display_room("right",u"史莱姆",["right",[])

# # #房间5

# print u"房间5"

# display_room("middle",["up",[])

# # #房间4

# print u"房间6"

# display_room("left",u"小魔王",["middle"],"up"],[])

# # #房间1

# print u"房间7"

# display_room("up",["up"],[u"地图",u"小血瓶"])

# # #房间8

# print u"房间8"

# display_room("up",u"骑士",[])

# print u"房间9"

# display_room("left",["left"],[u"圣水",u"大血瓶"])

# # #恐怖之地

# print u"恐怖之地"

# display_room("down",u"大魔王",[])

# # #地下室

# print u"地下室"

# display_room("up",u"公主",[])

game.py

# -*- coding:utf-8 -*-

import display

import fight

class Room(object):

def choose_do(self,lastroom):

#根据上个房间的号码和当前房间号码的差得到当前玩家在房间里的位置

compare = lastroom - self.roomnum

if compare == -3:

self.player_pos = "up"

elif compare == -1:

self.player_pos = "left"

elif compare == 1:

self.player_pos = "right"

elif compare == 3:

self.player_pos = "down"

else:

pass

#显示房间场景

display.display_room(self.player_pos,

self.monster_pos,self.door_pos,self.goods)

while True:

print u"你可以选择:1、搜索房间 2、离开房间 3、查看小地图 4、查看自己的属性 5、消灭怪物"

choice = raw_input(">")

if choice == '1':

if self.goods != []:

print self.word

fight.use_goods(self.goods)

self.goods = []

else:

print u" 什么也没有! "

elif choice == '2':

while True:

print u"请选择你要进入的房间:W:上 A:左 S:下 D:右 Q:返回"

choose_room = raw_input('>')

if choose_room == "w":

choose_room = "up"

elif choose_room == "a":

choose_room = "left"

elif choose_room == "s":

choose_room = "down"

elif choose_room == "d":

choose_room = "right"

elif choose_room == 'q':

break

else:

pass

if choose_room not in self.door_pos:

print u"选择错误!"

else:

if choose_room in self.monster_pos:

print u"你必须打败门口的守卫,才能进入这个房间!"

else:

if choose_room == "up":

return self.roomnum - 3

elif choose_room == "left":

return self.roomnum - 1

elif choose_room == "down":

return self.roomnum + 3

elif choose_room == "right":

return self.roomnum + 1

else:

pass

elif choice == '3':

display.display_pos(self.roomnum)

elif choice == '4':

display.display_property(self.monster)

elif choice == '5':

if self.monster_pos == []:

print u"没有怪物!"

else:

print u"请选择你要攻击的怪物:W:上 A:左 S:下 D:右 E:中 Q:返回"

choose_monster = raw_input('>')

if choose_monster == "w":

choose_monster = "up"

elif choose_monster == "a":

choose_monster = "left"

elif choose_monster == "s":

choose_monster = "down"

elif choose_monster == "d":

choose_monster = "right"

elif choose_monster == "e":

choose_monster = "middle"

elif choose_monster == 'q':

continue

else:

pass

if choose_monster not in self.monster_pos:

print u"这个地方没有怪物!"

continue

fight.fight(self.monster)

self.monster_pos.remove(choose_monster)

else:

print u"输入错误!"

class Room1(Room):

def __init__(self):

self.roomnum = 1

self.player_pos = "right"

self.goods = [u"圣剑",u"中血瓶"]

self.monster = 0

self.monster_pos = []

self.door_pos = ["right"]

self.word = u"""

得到一把圣剑 +---,攻击力上升100!

得到一个中血瓶 (oo),生命值上升200!

得到一把钥匙 C=--!

"""

def story_room(self,lastroom):

u"""

函数功能:交代room1剧情,显示房间场景,获取用户选择,做相应处理。

输入参数:无

返回参数:self.nextroom--下个房间的号码,类型--数字类型

0--神秘房间 10--地下室

"""

print u"房间1"

if self.goods != []:

print u"你进入了一个昏暗的房间,房间里似乎有一些东西在发光!"

else:

print u"你进入了一个昏暗的房间,房间里空无一物。"

#进入游戏循环

return Room.choose_do(self,lastroom)

class Room2(Room):

def __init__(self):

self.roomnum = 2

self.player_pos = " "

self.goods = []

self.monster = u"巫师"

self.monster_pos = ["up","down"]

self.word = u"""

"""

def story_room(self,lastroom):

u"""

函数功能:交代room2剧情,显示房间场景,获取用户选择,做相应处理。

输入参数:无

返回参数:self.nextroom--下个房间的号码,类型--数字类型

-1--神秘房间 11--地下室

"""

#剧情交代

print u"房间2"

if self.monster_pos != []:

print u"你进入了一个昏暗的房间,房间里似乎有一些可怕的生物!"

else:

print u"你进入了一个昏暗的房间,房间里空无一物。"

#进入游戏循环

return Room.choose_do(self,lastroom)

# room1 = Room1(1)

# room1.story_room1()

#启动游戏的类

class Game(object):

def start(self):

last_room = 1

room1 = Room1()

room2 = Room2()

nextroom = room1.story_room(last_room)

while True:

if nextroom == 1:

nextroom = room1.story_room(last_room)

last_room = 1

elif nextroom == 2:

nextroom = room2.story_room(last_room)

last_room = 2

else:

pass

playgame = Game()

playgame.start()

魔塔你玩过吗?95后的应该玩过!找童真,自己用Python开发魔塔!

怎么样 开发成功吧~!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我最近重新拾起了计算机视觉,借助Python的opencv还有face_recognition库写了个简单的图像识别demo,额外定制了一些内容,原本想打包成exe然后发给朋友,不过在这当中遇到了许多小问题,都解决了,记录一下踩过的坑。 1、Pyinstaller打包过程当中出现warning,跟d
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Pooling在中文当中的意思是“池化”,在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体操作如下图: 结合图像理解,相信你也会大概明白其中的本意。不过Pooling并不是只可以选取2x2的窗口大小,即便是3x3,
记得大一学Python的时候,有一个题目是判断一个数是否是复数。当时觉得比较复杂不好写,就琢磨了一个偷懒的好办法,用异常处理的手段便可以大大程度帮助你简短代码(偷懒)。以下是判断整数和复数的两段小代码: 相信看到这里,你也有所顿悟,能拓展出更多有意思的方法~
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic histogram2. 数据分布与密度信息显示 Control rug and density on seaborn histogram3. 带箱形图的直方图 Histogram with a boxplot on t
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic violinplot2. 小提琴图样式自定义 Custom seaborn violinplot3. 小提琴图颜色自定义 Control color of seaborn violinplot4. 分组小提琴图 Group
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic density plot2. 核密度图的区间控制 Control bandwidth of density plot3. 多个变量的核密度图绘制 Density plot of several variables4. 边
首先 import tensorflow as tf tf.argmax(tenso,n)函数会返回tensor中参数指定的维度中的最大值的索引或者向量。当tensor为矩阵返回向量,tensor为向量返回索引号。其中n表示具体参数的维度。 以实际例子为说明: import tensorflow a
seaborn学习笔记章节 seaborn是一个基于matplotlib的Python数据可视化库。seaborn是matplotlib的高级封装,可以绘制有吸引力且信息丰富的统计图形。相对于matplotlib,seaborn语法更简洁,两者关系类似于numpy和pandas之间的关系,seabo
Python ConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件。 文章目录 1 介绍1.1 Python ConfigParser读取文件1.2 Python ConfigParser中的节1.3 Python ConfigParser从字符串中读取数据
1. 处理Excel 电子表格笔记(第12章)(代码下载) 本文主要介绍openpyxl 的2.5.12版处理excel电子表格,原书是2.1.4 版,OpenPyXL 团队会经常发布新版本。不过不用担心,新版本应该在相当长的时间内向后兼容。如果你有新版本,想看看它提供了什么新功能,可以查看Open
1. 发送电子邮件和短信笔记(第16章)(代码下载) 1.1 发送电子邮件 简单邮件传输协议(SMTP)是用于发送电子邮件的协议。SMTP 规定电子邮件应该如何格式化、加密、在邮件服务器之间传递,以及在你点击发送后,计算机要处理的所有其他细节。。但是,你并不需要知道这些技术细节,因为Python 的
文章目录 12 绘图实例(4) Drawing example(4)1. Scatterplot with varying point sizes and hues(relplot)2. Scatterplot with categorical variables(swarmplot)3. Scat
文章目录 10 绘图实例(2) Drawing example(2)1. Grouped violinplots with split violins(violinplot)2. Annotated heatmaps(heatmap)3. Hexbin plot with marginal dist
文章目录 9 绘图实例(1) Drawing example(1)1. Anscombe’s quartet(lmplot)2. Color palette choices(barplot)3. Different cubehelix palettes(kdeplot)4. Distribution
Python装饰器教程展示了如何在Python中使用装饰器基本功能。 文章目录 1 使用教程1.1 Python装饰器简单示例1.2 带@符号的Python装饰器1.3 用参数修饰函数1.4 Python装饰器修改数据1.5 Python多层装饰器1.6 Python装饰器计时示例 2 参考 1 使
1. 用GUI 自动化控制键盘和鼠标第18章 (代码下载) pyautogui模块可以向Windows、OS X 和Linux 发送虚拟按键和鼠标点击。根据使用的操作系统,在安装pyautogui之前,可能需要安装一些其他模块。 Windows: 不需要安装其他模块。OS X: sudo pip3
文章目录 生成文件目录结构多图合并找出文件夹中相似图像 生成文件目录结构 生成文件夹或文件的目录结构,并保存结果。可选是否滤除目录,特定文件以及可以设定最大查找文件结构深度。效果如下: root:[z:/] |--a.py |--image | |--cat1.jpg | |--cat2.jpg |
文章目录 VENN DIAGRAM(维恩图)1. 具有2个分组的基本的维恩图 Venn diagram with 2 groups2. 具有3个组的基本维恩图 Venn diagram with 3 groups3. 自定义维恩图 Custom Venn diagram4. 精致的维恩图 Elabo
mxnet60分钟入门Gluon教程代码下载,适合做过深度学习的人使用。入门教程地址: https://beta.mxnet.io/guide/getting-started/crash-course/index.html mxnet安装方法:pip install mxnet 1 在mxnet中使
文章目录 1 安装2 快速入门2.1 基本用法2.2 输出图像格式2.3 图像style设置2.4 属性2.5 子图和聚类 3 实例4 如何进一步使用python graphviz Graphviz是一款能够自动排版的流程图绘图软件。python graphviz则是graphviz的python实