- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
看看这个问题底部的代码
来自一本关于学习Python的书,我的问题特别是play方法如何使游戏切换到下一个阶段(类)。它与每个类底部的 return 语句有关吗?我期待更多像“Death.enter()”或“Map.scenes.get['death'].enter()”作为结束语句。当它简单地调用 map 类“central_corridor”中的 opening_scene 方法时,current_scene 如何更改为下一个场景。我认为它几乎会一直留在“central_corridor”上。另外,拥有一个场景类是个好主意吗?其中会包含什么样的代码?
编辑:现在添加了 while 循环缺少的代码行
from sys import exit
from random import randint
class Scene(object): #It's python3 but I'm used to this
def enter(self):
print("This scene is not yet configured." +
"Subclass it and implement enter()")
exit(1)
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
while True:
print('\n', '-' * 20)
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
class Death(Scene):
quips = [
"You died. You kinda suck at this.",
"Your mom would be so proud...if she were smarter",
"Such a loser.",
"I have a small puppy that's better at this"
]
def enter(self):
print(Death.quips[randint(0, len(self.quips)-1)])
exit(1)
class CentralCorridor(Scene):
def enter(self):
print("""
The Gothons of Planet Percal #25 have invaded your ship and destroyed
your entire crew. You are the last surviving member and the last
mission is to get the neutron destruct bomb from the Weapon Armory
put it in the bridge, and blow the ship up after getting into
an escape pod.
\n
You're running down the central corridor to the Weapons Armory when
a Gothon jumps out, red scaly skin, dark grimy teeth, and evil clown
costume flowing around his hate filled body. He's blocking the door to
the armory and about to pull out a weapon to blast you
""")
action = input(">> ")
if action == "shoot!":
print("""
Quick on the draw you yank out your blast and fire it at the Gothon.
His clown costume is flowing and moving around his body, which throws
off your aim. Your laser hits his costume but misses him entirely.
This completely ruins his brand new costume his mother bought for him,
which makes him fly into rage and blast you repeatedly in the face
until you are dead, then he eats you
""")
return('death')
elif action == "dodge!":
print("""
Like a world clas boxer, you dodge, weave, slip and slide to the right
as the Gothon's blaster cranks a laser past your head.
In the middle of your artful dodge yor foot slips and you bang your
head on the metal wall and pass out. You wake up shortly after only
to die as the Gothon stomps on your head and eats you.
""")
return('death')
elif action == 'tell a joke':
print("""
Luck for you, they made you learn Gothn insults in the academy.
You tell one Gothon joke you know:
Lbhe zbgure vf fb sng, jura fur fvgf nebhaq gur ubhfr, fur fvgf nebhaq
the Gothon stops, tries not to laugh, then bursts out laughing and can't move
while he's laughing you run up and shoot him square in the head
putting him down, then jump through the Weapon Armory door
""")
return('laser_weapon_armory')
else:
print("DOES NOT COMPUTE")
return('central_corridor')
class LaserWeaponArmory(Scene):
def enter(self):
print("""
You do a dive roll into the Weapon Armory, crouch and scan the room
for more Gothons that might be hiding. It's dead quiet, too quiet.
You stand up and run to the far side of the room and find the neutron
bomb in its container. There's a keypad lock on the box and you need to
get the bomb out. If you get the code wrong 10 times then the lock closes
forever and you can't get the bomb. The code is 3 digits.
""")
code = "%d%d%d"%(randint(1,9), randint(1,9), randint(1,9))
int(code)
guess = int(input("[keypad]>> "))
guesses = 0
while guess != code and guesses < 10:
print("BZZZEDDD!!")
guess += 1
guess = int(input("[keypad]>> "))
if guess == code:
print("""
The container clicks open and the seal breaks, letting gas out
You grab the neutron bomb and run as fast as you can to the bridge
where you must place it in the right spot
""")
return('the_bridge')
else:
print("""
The lock buzzes one last time and then you hear a sickening melting
sound as the mechanism is fused together. You decide to sit there,
and finally the Gothons blow up the ship from their ship and you died
""")
return('death')
class TheBridge(Scene):
def enter(self):
print("""
You burst onto the bridge with the neutron destruct bomb under your arm
and surprise 5 Gothons who are trying to take control of the ship. Each
of them has an even uglier clown costume than the last. They haven't pulled
out their weapons yet, as they see the active bomb under your hand and don't
want to set it off.
""")
action = input(">> ")
if action == "throw the bomb":
print("""
In a panic you throw the bomb at a group of Gothons and make a leap
for the door. Right as you drop it a Gothon shoots you right in the
back killing you. As you die you see another Gothon frantically try
to disarm the bomb. You die knowing that they will probably blow up
when the bomb goes off
""")
return('death')
elif action == "slowly place the bomb":
print("""
You point your blaster at the bomb under your arm and the Gothons put
their hands up and start to sweat. You inch backwards to the door,
open it, and then carefully place the bomb on the floor, pointing your
blaster at it. You then jump back through the door, punch the close
button and blast the lock so the Gothons can't get out. Now that the
bomb is placed you run to the escape pod to get off this tin can
""")
return('escape_pod')
else:
print('DOES NOT COMPUTE')
return('the_bridge')
class EscapePod(Scene):
def enter(self):
print("""
You rush through the shop desperately trying to make it to the escape pod
before the whole ship explodes. It seems like harldy any Gothons are on the
ship, so your run is clear of interference You get to the chamber with the
escape pods, and now need to pick one to take. There's 5 pods which one do
you take?
""")
good_pod = randint(1,5)
guess = int(input("Pod Number>> "))
if guess == good_pod:
print("""
You jump into pod %d and hit the eject button.
The pod escapes out into the void of space, then
implodes as the hull ruptures, crushing your body
into jam jelly
"""%guess)
return('death')
else:
print("""
You jump into pod %d and hit the ejet button and the pod
easily slides out into space heading to the planet below.
As it flies to the planet, you look back and see your ship
implode and then explode like a bright star, taking out the
Gothon ship at the same time.
YOOUU WON!!
"""%guess)
return('finished')
class Map(object):
scenes = {
'central_corridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod(),
'death': Death()
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
return(Map.scenes.get(scene_name))
def opening_scene(self):
return(self.next_scene(self.start_scene))
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()
最佳答案
enter()
方法在Scene
的大部分中实现子类——例如CentralCorridor
, LaserWeaponArmory
等 - 根据提示时用户输入的操作返回以下场景的名称。
这用于 Engine.play()
方法,确定下一个场景为enter()
在 while
的每次迭代期间循环:
while True:
print('\n', '-' * 20)
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
这种情况一直持续到 Death
场景的enter()
被称为 and,因为它调用 exit()
它不会像其他场景那样返回下一个场景值,而是会导致脚本终止。
关于python - 如何从一门类(class)切换到另一门类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41213434/
我正在尝试创建一个简单的小部件,它只有一个切换按钮,但我的 AVD 模拟器上不断出现错误,提示“加载小部件有问题”。 似乎是因为我在小部件布局中添加了开关或切换按钮。 为了测试它,我创建了一个新的空
我正在使用 GLFW 进行键盘输入,但处理速度太快,因此我的 bool 开关在一次按下时被更改了 10 次,因为输入是每一帧处理的。我只需要按一次空格键即可切换状态。我当前的代码如下: if (glf
我希望完成一个相当简单的任务(我希望!) 我有两个 div 标签和一个 anchor 标签,像这样: forgot password? 我希望使用 anchor 标记在两个 div 标记之间切换,
我已经尝试了几种不同的方法,但似乎无法弄清楚如何将 span 的类从“die2”切换到“die3”以及将 div 的显示样式从“block”切换到“none”。有人有任何解决方案吗? (基本上当页面加
我正在尝试制作一个交换小部件,该小部件显示两个不同的文本。激活时,它下面显示一个TextField,顶部是不可见的,而禁用时它上面显示一个Text,而底部是不可见。但是它没有在屏幕上显示任何内容,只是
我有一个简单的 Angular 应用程序,它使用两个模板和 Controller 。放置两个按钮来切换 View 。它们调用在控件内定义的函数,该函数使用 window.location='' 来切换
我想要一个 div 切换它的类(切换)onclick,然后再次恢复到原来的类 onclick 我的代码是: function myfunc() { //the code over here
我确信这是一个常见问题,我已经尝试了该网站上的许多线程来尝试解决我的问题,但我似乎无法使其正常工作。基本上我有一个子菜单,当父菜单悬停在其上时需要显示该子菜单,但是如果您在加载完成之前将鼠标从菜单项上
我制作了一个 JavaScript 函数来隐藏单击按钮时的链接及其在该函数中的工作 function toggle() { var ele = document.getElement
我正在使用我在 JS fiddle 上找到的这个脚本:http://jsfiddle.net/Q4PUw/2/ 当我点击切换链接时,它会切换框并显示它,但是,它会跳回页面顶部,然后我必须再次向下滚动才
我正在 GoDaddy 上的共享服务器 IP 上构建 Web 应用程序。该应用程序与验证请求服务器 IP 的房地产 API 进行对话。问题是在 GoDaddy 上,我们的 IP 被列为 X,但它实际上
我在 jquery 中有一个简单的脚本,可以在 时切换 div(显示和隐藏)。被点击(我正在使用 Bootstrap )。 HTML: Advanced search This is t
我有两个 NSWindows,其中都有一个 NSPanel。我想在按下按钮时切换窗口。如何才能做到这一点?我不再需要旧窗口,所以我只想显示新窗口。 最佳答案 要聚焦第二个窗口,只需调用: [windo
我尝试在单击切换时将选项添加到选择菜单,但如果再次单击(取消选择),则可以将其删除。到目前为止,我可以在单击时向选择菜单添加单个值,但无法将其删除(切换添加切换删除) 这是我的代码: HTML
我正在尝试隐藏所属行。例如,如果您单击“子标题 1”,则将仅隐藏项目 1、项目 2 和项目 3 行。 示例: title Sub Title 1
似乎无法让它为我工作,任何人都可以为我提供帮助吗? http://codepen.io/anon/pen/kABjC 这应该根据点击打开和关闭文本部分,它采用 ID #,它只是一个数字(1,2,3,4
我正在从一个文件复制到另一个文件,并且我可以看到 Excel 在源文件和目标文件之间切换(如闪烁)。我希望宏从源复制并粘贴到目标,而不在文件之间切换(我不想闪烁)。 这里我得到了我的 Excel VB
我正在尝试制作一个带切换功能的 Accordion ,现在看起来效果很好。作为 javascript 的新手,我希望得到一些帮助,那就是它的组合方式。 http://jsfiddle.net/z3wW
我正在尝试制作一个小脚本,其中屏幕将每 100 毫秒随机更改一次背景颜色,您可以通过按一个按钮来打开和关闭它。我可以让它开始,但我不能让它停止。 这是切换的主要代码: var on = -1; fun
我确信这里应该已经涵盖了这一点,但我一直无法找到专门涉及此问题的问题。 我在一个页面中有 2 个 div,就像这样...... ...content... ...content...
我是一名优秀的程序员,十分优秀!