# -*- coding:utf-8 -*-
from hometown import *
from koipondroom import *
from end import *
from suburb import *
from kunlun import *
# 记录所有房间
class Map(object):
# 存储所有房间
rooms = {
'home_town': HomeTown(),
'koipond_room': KoipondRoom(),
'ending': End(),
'suburb': Suburb(),
'kunlun': KunLun()
}
# 加载初始房间名
def __init__(self, start_room_name):
self.start_room_name= start_room_name
# 跟据函数的返回值进入下个房间
def next_room(self, next_room_name):
return self.rooms.get(next_room_name)
# 打开指定房间
def opening_room(self):
return self.next_room(self.start_room_name)
# -*- coding:utf-8 -*-
from sys import exit
# 所有房间的基类
class Room(object):
def enter(self):
print "room class."
exit(1)
# -*- coding:utf-8 -*-
# 用来存获得的道具
class Player(object):
items = []
def get(self, item):
self.items.append(item)
print "获得%s" % item
def get_player(self):
player = Player()
return player
# -*- coding:utf-8 -*-
# 写完之后觉得这样挺奇怪的
class Sgame(object):
def start(self):
print "small game."
exit(1)
# -*- coding:utf-8 -*-
from sys import exit
class Room(object):
def enter(self):
print "room class."
exit(1)
# -*- coding:utf-8 -*-
from sys import exit
from room import *
# 家乡地图
class HomeTown(Room):
def enter(self):
print "云儿悠闲的飘荡着,天空是那样的蓝。"
print "一阵微风拂过,带着树叶沙沙作响。"
print "感受着这四周熟悉的气息,你深深的吸了一口"
print "'男儿志在四方,今天便要去外面闯荡闯荡'"
print "说罢,便头也不回的向村外走去。"
print "不一会便到了村口,村口有一座神庙"
action = raw_input("进去上香吗?(上香/不上) <> ")
if action == '上香':
return 'koipond_room'
elif action == '不上':
return 'suburb'
exit(1)
else:
print "选一下"
return 'home_town'
# -*- coding:utf-8 -*-
from gameone import *
from player import *
from room import *
from sys import exit
# 神庙地图
class KoipondRoom(Room):
def enter(self):
print "神庙不大,现在里面空无一人."
print "正中的神像法相庄严,你走至"
print "供台旁,焚香祭拜。礼毕,青烟"
print "袅袅。正打算离开时,只听到"
print "'牛娃子,你这一身打扮,是打算做什么去?'"
print "回头望去,说话的是一位皓首白发的老者。"
action = raw_input("说谎/如实相告 <> ")
if action == '说谎':
print "-"*20
print "'伯伯,村口的王大娘让我帮她带点东西'"
print "你作势便要向外走去."
print "'你想出村?'"
print "'无需骗我这个老头子了,老夫我刚从王大娘"
print "那里过来。我跟你们这群毛头小子说了,咳咳,"
print "说了多少遍了,村外凶险,与其让你在外面送掉性命,"
print "不如现在就让老夫打断你的双腿'"
print "'村长,就算丢掉性命,也总比在村子里整日虚度来得强'。"
print "你就这样紧紧盯着村长伯伯."
print "半晌,'哎,也罢,如果你等会能胜过老夫,"
print "我便不再阻拦你,否则,你便乖乖回家呆着,"
print "不能再起这样的心思。'"
# 开始一个小游戏
s_game = GameOne()
result = s_game.start()
if result:
return 'suburb'
else:
return 'ending'
elif action =='如实相告':
print "-"*20
print "'伯伯,我想出村。我知道您时常告诫我们,"
print "但我还是想出去看看',你顿了顿又接着说道:"
print "'村外虽然有危险,但我也不是什么待宰的羔羊'"
print "老人叹了口气,随后向你招了招手,'哎,"
print "知道拦不住你,我这有把剑送给你,给你防身用吧'"
# 获得道具剑
Player().get_player().get('sword')
print "获得村子里最好的一把剑!"
print "'谢谢伯伯',你躬身向老者一拜便往村外走去"
return 'suburb'
else:
print "没有其他滴选择"
return 'koipond_room'
# -*- coding:utf-8 -*-
from player import *
from room import *
# 郊外地图
class Suburb(Room):
def enter(self):
print "不知不觉在郊外走了几个时辰了。"
print "你听到不远处有些动静"
print "小心贴近之后发现有五人正围住一人"
print "被围那人全身浴血看不清相貌,"
print "在他们周围还躺着不少尸体"
print "被围那人渐渐不撑"
print "你决定:"
print "1.路见不平拔刀相助。"
print "2.闲事莫理,绕道而行。"
action = raw_input("<出手/离开>")
if action == '出手':
# 判断是否获得了剑
if 'sword' in Player().get_player().items:
print "拔剑冲将上去,剑吐白光,你一人力拼五人竟不落下风"
print "你与那人里应外合打跑了那几个人,救下的那人给了你一个信物"
print "拜托你去'昆仑山'帮他送信,然后便气绝。"
return 'kunlun'
else:
print "手无寸铁的你很快就被杀掉了"
return 'ending'
elif action == '离开':
print "你本想偷偷离开,其实早已被人发觉"
print "被围攻的人倒下后,你也步了后尘。"
return 'ending'
else:
print "情势危急,速做决定"
return 'suburb'
# -*- coding:utf-8 -*-
from room import *
from game_two import *
# 昆仑山地图
class KunLun(Room):
def enter(self):
print "几经辛苦终于来到昆仑山下"
print "先前打跑的那几人回去通风报信"
print "以至于你一路被人追杀至此"
print "'进山或许能得到庇护吧'你心中这么想着"
print "山下景色虽美,此时却也没有心思驻足,上山!"
print "行至半山腰,被一耄耋老人拦住了去路"
print "'年轻人,这里不是你该来的地方,下山去吧'"
print "老者坐在一个石凳上,旁边的石桌还放着几摞铜钱"
print "'前辈,请恕晚辈叨扰,晚辈也是受人所托前来送信'"
print "说罢,递出信物,老者仔细检查一番说道,"
print "'信物倒是不假,但你并非我昆仑弟子,虽有信物,却也不能上山。'"
print "'况且,吾也不能擅离此地帮你送信,你需得通过一个考验方能上山'"
print "老者抬手示意你坐下"
print "*"*30
print "这里有21枚铜币"
print "你我二人分先后次序依次拿取钱币"
print "每人每次可拿1或2或者3枚钱币"
print "若你能先拿到第21枚钱币就算你通过考验"
print "*"*30
print "来者是客,先手还是后手拿铜钱,你自己选吧"
choose = raw_input('先手/后手 <>')
if choose != '先手' and choose != '后手':
print "没看懂就再来一次"
return 'kunlun'
else:
game = GameTwo(choose)
return game.start()
# -*- coding:utf-8 -*-
from sys import exit
from random import randint
from room import *
# 游戏结局
class End(Room):
endings = ["壮志凌云几分愁,大侠请重新来过",
"生当作人杰,死亦为鬼雄,不要灰心,重新再来吧",
"不论结果如何,我已经尝试过了,山高路远,不枉此生"]
def enter(self):
print self.endings[randint(0, 2)]
exit(1)
# -*- coding:utf-8 -*-
from random import randint
from sgame import *
# 其实就是石头剪刀布的游戏
class GameOne(Sgame):
three = ['天', '地', '人']
# 村长随机出牌
def cun_zhang(self):
return self.three[randint(0,2)]
def start(self):
print "*"*10
print "天胜地,地胜人,人胜天。"
print "*"*10
print "村长:等会我会出"+self.cun_zhang()
c_z = self.cun_zhang()
guess = raw_input('天/地/人 <>')
while guess not in self.three or guess == c_z: # 如果是乱输或者平就重新猜拳
print "-"*20
print "你的是%s,村长的是%s." % (guess, c_z)
print "重来"
print "村长:等会我会出"+self.cun_zhang()
c_z = self. cun_zhang()
guess = raw_input('天/地/人 <>')
print "你的是%s,村长的是%s." % (guess, c_z)
if (guess =='天' and c_z == '地') or(guess =='地' and c_z == '人') or(guess =='人' and c_z =='天'): # 剩下这三种情况会赢
print "你赢了"
print "向村长告别只后便走出了村子"
return True
else: # 其他情况都是输的
print "回家去吧"
return False
# -*- coding:utf-8 -*-
from sgame import *
from sys import exit
# 共有21枚钱币,谁先拿到最后一枚就胜出
# 玩家老者按顺序依次拿取1至3枚钱币,玩家可选定先后手
class GameTwo(Sgame):
def __init__(self, choose):
self.choose = choose # 获得选择,先手还是后手
def start(self):
count = 21 # 设定钱币的个数
# 先手有最优解法,用之后手必输
if self.choose == '后手':
while count > 4:
a = count % 4
print "老者拿走%d枚" % a
b = int(raw_input('你准备拿1? 2? 3? >'))
# 每次只能拿1至3枚
while (b != 1) and (b != 2) and (b != 3):
b = int(raw_input('只能选择拿1, 2, 3 >'))
print "你拿走%d枚" % b
count = count - (a + b)
print "还剩%d枚钱币" % count
print "-"*10
print "你输了"
return 'ending'
else:
while count > 0:
c = int(raw_input('你准备拿1? 2? 3? >'))
# 每次只能拿1至3枚,拿走的硬币总数不能超过21
while (c != 1 and c != 2 and c != 3) or count - c < 0:
c = int(raw_input('请正确选择拿1, 2, 3 >'))
count = count - c
print "你拿走了%d枚" % c
# 拿走第21枚,你赢
if count == 0:
print "你赢了,小友,上山去吧。"
print "开启新篇章:拜师昆仑"
exit(1)
# 虽然可能会输,尝试使用最优解法
elif count % 4 != 0:
d = count % 4
# 最优失败,凑3的倍数
elif c == 3:
d = c
else:
d = 3 - c
count = count - d
print "老者拿走%d枚" % d
print "还剩%d枚钱币" % count
print "-"*10
# 拿走第21枚,老者赢
if count == 0:
print "终究棋差一招,你输了"
print "离开昆仑山地界没多远,就被人袭击,虽面;力突围,但奈何人多势众。"
return 'ending'
# -*- coding:utf-8 -*-
from map import *
from hometown import *
class Engine(object):
# 加载地图
def __init__(self, room_map):
self.room_map = room_map
# 开始游戏
def play(self):
current_room = self.room_map.opening_room()
while True:
print "-"*20
next_room_name = current_room.enter()
current_room = self.room_map.next_room(next_room_name)
a_map = Map('home_town')
a_engine = Engine(a_map)
a_game = a_engine.play()
小结:一款文字冒险类的小游戏,能完整的运行起来还是挺高兴的
亮点可能就是自己写的两款小游戏吧,第二个游戏可能好玩点