通过一些教育材料,我的任务是使用下面的结构(课程)进行文本冒险游戏,并被要求为英雄和敌人之间的战斗添加一个简单的战斗系统。
目前,我可以在每个房间创建一个敌人,并在起始房间(走廊)到浴室和后面之间移动,但在这一点上,我被卡住了。我无法确定我应该在哪里创建我的“英雄”,或者如何传达我需要对健康属性进行的更改等。
如果我能以另一种方式构造代码,我就能够完成游戏,但就目前而言,我对如何使代码的各个部分能够相互通信的理解存在差距。
谢谢,
戴夫
# text based adventure game
import random
import time
from sys import exit
class Game(object):
def __init__(self, room_map):
self.room_map = room_map
def play(self):
current_room = self.room_map.opening_room()
while True:
next_room_name = current_room.enter()
current_room = self.room_map.next_room(next_room_name)
class Character(object):
def __init__(self, name, health, attack):
self.name = name
self.health = health
self.attack = attack
class Hero(Character):
def __init__(self, name):
super(Hero, self).__init__(name, 10, 2)
def __str__(self):
rep = "You, " + self.name + ", have " + str(self.health) + " health and " + \
str(self.attack) + " attack."
return rep
class Enemy(Character):
ENEMIES = ["Troll", "Witch", "Ogre", "Jeremy Corbyn"]
def __init__(self):
super(Enemy, self).__init__(random.choice(self.ENEMIES),
random.randint(4, 6), random.randint(2, 4))
def __str__(self):
rep = "The " + self.name + " has " + str(self.health) + \
" health, and " + str(self.attack) + " attack."
return rep
class Room(object):
def __init__(self):
self.commands = ["yes", "no"]
self.rooms = ["\'corridor\'", "\'bathroom\'", "\'bedroom\'"]
self.enemy = Enemy()
def command_list(self):
print("Commands: ", ", ".join(self.commands))
def enter_room_question(self):
print("Which room would you like to enter?")
print("Rooms:", ", ".join(self.rooms))
def leave_room_question(self):
print("Do you want to leave this room?")
print("Commands:", ", ".join(self.commands))
class Bathroom(Room):
def enter(self):
print("You enter the bathroom. But, wait! There is an", \
self.enemy.name, "!")
print(self.enemy)
print("You are in the bathroom. Need to take a dump? ")
self.command_list()
response = input("> ")
while response not in self.commands:
print("Sorry I didn't recognise that answer")
print("You are in the bathroom. Need to take a dump?")
self.command_list()
response = input("> ")
if response == "yes":
print("Not while I'm here!")
return "death"
elif response == "no":
print("Good.")
self.leave_room_question()
response = input("> ")
if response == "yes":
return "corridor"
else:
return "death"
class Bedroom(Room):
def enter(self):
pass
class Landing(Room):
def enter(self):
pass
class Corridor(Room):
def enter(self):
print("You are standing in the corridor. There are two rooms available to enter.")
self.enter_room_question()
response = input("> ")
if response == "corridor":
print("You're already here silly.")
else:
return response
class Death(Room):
QUIPS = ["Off to the man in sky. You are dead",
"You died, no-one cried.",
"Lolz. You're dead!"]
def enter(self):
time.sleep(1)
print(random.choice(Death.QUIPS))
exit()
class Map(object):
ROOMS = {"corridor": Corridor(),
"bathroom": Bathroom(),
"death": Death(),
"landing": Landing(),
"bedroom": Bedroom()}
def __init__(self, start_room):
self.start_room = start_room
self.hero = hero
def next_room(self, room_name):
return Map.ROOMS.get(room_name)
def opening_room(self):
return self.next_room(self.start_room)
a_hero = Hero("Dave")
a_map = Map("corridor")
a_game = Game(a_map, a_hero)
a_game.play()
如果我是你,我会制定一个游戏html" target="_blank">模式。你可以问自己这样的问题:
真正重要的实体是什么?
在你的情况下,正如你所做的,我会考虑角色、敌人、房间和地图,当它是合适的时候继承,比如角色。
如果我是你,考虑使用数据结构来表示地图。例如,如果你正在考虑做一个文字游戏冒险,你可以在不同的房间里思考游戏中的不同状态。如果你在浴室,你可能会被敌人攻击,如果你在卧室,你可以找回你的生命值(生命),因此这些地方可以被认为是不同的状态。
例如,您可以为所有不同的房间(州)创建一个数组
rooms = ["bedroom", "bathroom", "corridor", "kitchen", "living_room"]
和其他你可以考虑的房间。
(可能有一个更好的例子,更有效等等,所以这个例子是为了帮助你在遇到问题时不要放弃。
根据本例,如果使用阵列,可以为每个房间指定一个值(等于阵列中的每个位置)
此外,您需要知道英雄的位置,以便可以使用rand()为其指定一个随机值。有关详细信息,请阅读以下链接:
python随机文档
堆栈溢出应答
最后,你也会发现比较英雄的位置是有用的,这将有一个随机的分配值,以前与你的阵列或房间的每个位置
在这种情况下,您可以使用if。。。埃利夫。。埃利夫。。。比较这些价值观,并根据英雄所在的房间做些事情。
我希望这个答案对你有用。如果你对我的答案有任何疑问,请告诉我。干杯
我正在尝试学习如何使用他们网站上的“入门”教程使用丢弃向导构建REST API: https://www.dropwizard.io/en/stable/getting-started.html 我对为了使程序正常工作而必须创建的所有类的目的感到非常困惑。本教程在某种程度上解释了这些类,但我发现解释非常模糊和神秘。有人可以用通俗的话向我解释每个课程的目的是什么吗? 配置类 应用程序类 表示类 资源
我正在Java制作一个基于文本的冒险游戏。我需要让用户能够拿起物品并将其放入库存中,但我不确定如何做到! 这是我的项目当前的设置方式: 我需要能够在某些房间里有特定的物品。有人有什么建议吗?
在我的游戏中有几个类我写过,包括房间,灯,胸,爪哇,玩家,钥匙和地图。这些都经过了测试,并且是正确的,所以现在我正在编写我的adventure类,它是程序的驱动程序。我需要设置球员的房间位置[0][0],但我不知道怎么做。这是我到目前为止在我的房间和冒险课。
问题内容: 我对Java中的一些中间概念还很陌生。最近,我制作了一款名为DazzleQuest的文字冒险游戏,该游戏完全在开发者控制台/终端中运行。它以我的朋友为角色,因此我想向他们展示它,并通过将命令行和控制台的输出功能转移到一个简单的Swing界面(包括一个用于显示游戏输出的a和一个带有,处理来自用户的命令。 我的主类包含名为和的方法,我认为我需要将其与我的类及其子类[扩展] 集成在一起。 总
我目前正在创建一个冒险游戏,你通过输入命令(北,南)通过一个地牢的房间移动。所以我试图用字典把每个房间连接在一起,这样我就可以用“北”、“南”等键来移动这些房间。但我似乎不明白。有什么想法吗?
我正在为一个C项目做一个冒险游戏。目标基本上是拥有一组由类定义的房间。然后使用地图将它们链接在一起。除了检查是否没有房间和确保没有为空房间接受输入之外,我的一切都正常工作。例如,它会说“那里什么都没有”,然后重新提示用户移动的方向。当前,如果某个方向上没有空间,并且选择了该方向,我的程序就会崩溃。我现在已经设置好了它,至少确保输入了一个有效的方向(北、南、东或西),但它没有检查这个方向是否可用。有