简单Python游戏(卡在类上)

简单Python游戏(卡在类上),python,function,class,oop,methods,Python,Function,Class,Oop,Methods,我真的很喜欢我创建的这个简单的用户输入游戏。这是一个艰苦学习python的练习。我一个多星期以来一直试图自己解决这个问题,最后屈服于寻求帮助。我认为我的代码中的问题点是Engine()类。无论如何,代码如下: from sys import exit from random import randint class Island(object): def enter(self): pass class Engine(object): def __init__

我真的很喜欢我创建的这个简单的用户输入游戏。这是一个艰苦学习python的练习。我一个多星期以来一直试图自己解决这个问题,最后屈服于寻求帮助。我认为我的代码中的问题点是Engine()类。无论如何,代码如下:

from sys import exit
from random import randint

class Island(object):
    def enter(self):
        pass


class Engine(object):
    def __init__(self, island_map):
        self.island_map = island_map

    def play(self):
        current_island = island_map.opening_island()
        last_island = self.island_map.next_island('Tropical')

        while current_island != last_island:
            next_island_name = current_island.enter()
            current_island = self.island_map.next_island(next_island_name)

        current_island.enter()


class Loser(Island):
    snippets = ["Welcome to loser Island",
                "Can't win them all", 
                "There's always next time"]

    def enter(self): 
        print "Game over"
        print Loser.snippets[randint(0,len(self.snippets)-1)]
        exit(1)


class Jungle(Island):
    def enter(self):
        print "Welcome to the Jungle!"
        print "You must fight the monkey to pass!"
        print "Choose your weapon..."

        weapons = ['stick', 'fly swatter', 'banana']

        print weapons

        fighter_weapon = raw_input("Choose from a a weapon above...")

        if fighter_weapon == 'stick':
            print "Stick can't beat a monkey!"
            print "Monkey wins"
            return 'Loser'
        elif fighter_weapon == 'fly swatter':
            print "The monkey steals your fly swatter"
            print "Monkey wins"
            return 'Loser'
        elif fighter_weapon == 'banana':
            print "The monkey is hypnotized by the banana"
            print "You continue to the next island..."
            return 'Frozen'
        else:
            print "What? Doesn't make sense"
            return 'Jungle'


class Frozen(Island):
    #add green, blue circle, and black diamond
    def enter(self):
        print "This is snow land"
        print "Here's your snowboard, choose your path"
        print "([[[[[[[[[)"

        runs = ["green", "blue", "black"]

        print runs

        run_choice = raw_input(" >")

        if run_choice == 'green':
            print "Easy way out?"
            print "No good"
            print "Wrong"
            return 'Loser'

        elif run_choice == 'blue':
            print "okay, at least not the easiest way"
            print "You have some guts, I'll let you choose one more time"
            return 'Frozen'

        elif run_choice == 'black':
            print "I like your style"
            print "Going for the hard choice shows courage"
            print "Continue to the next island"
            return 'Tropical'

        else:
            print "Say whaaat?!"
            return 'Frozen'


class Tropical(Island):
    def enter(self):
        print "You made it to the final Island!"
        print "Look here's the treasure chest!"
        print " All that's left to do is guess the code on the chest"
        print "Be smart, you only get five guesses..."

        t_key = "1234"
        chest_guess = raw_input("What do you think it is?")
        guesses = 0

        while chest_guess != t_key and guesses < 4:
            print "Guess again"
            guesses += 1
            chest_guess = raw_input(" ?")

        if chest_guess == t_key:
            print "You guessed right!"
            print "You won"

        else:
            print "Sorry"
            return 'Loser'      


class Map(object):
    islands = {
            'Loser': Loser(),
            'Jungle': Jungle(),
            'Frozen': Frozen(),
            'Tropical': Tropical(),
            }

    def __init__(self, start_island):
        self.start_island = start_island

    def next_island(self, island):
        val = Map.islands.get(island)
        return val

    def opening_island(self):
        return self.next_island(self.start_island)


mj_map = Map('Jungle')
mj_game = Engine(mj_map)
mj_game.play()
从系统导入退出
从随机导入randint
类岛(对象):
def输入(自我):
通过
类引擎(对象):
定义初始(自我,岛屿地图):
self.island\u map=island\u map
def播放(自我):
当前岛=岛地图。打开岛()
last_island=self.island_map.next_island('热带')
而当前的_岛!=最后一站:
下一个岛屿名称=当前岛屿。输入()
当前岛=自。岛地图。下一个岛(下一个岛名称)
当前_岛。输入()
班级(港岛):
snippets=[“欢迎来到失败者岛”,
“不可能全部赢”,
“总有下一次”]
def输入(自我):
打印“游戏结束”
打印.snippets[randint(0,len(self.snippets)-1]
出口(1)
丛林类(岛屿):
def输入(自我):
打印“欢迎来到丛林!”
打印“你必须与猴子搏斗才能通过!”
打印“选择你的武器…”
武器=[“棍子”、“苍蝇拍”、“香蕉”]
印刷武器
战斗机武器=原始输入(“从上面的武器中选择…”)
如果战斗机的武器==‘棍子’:
打印“棍子打不过猴子!”
打印“猴子赢了”
返回“失败者”
elif fighter_武器==“苍蝇拍”:
打印“猴子偷了你的苍蝇拍”
打印“猴子赢了”
返回“失败者”
elif fighter_武器==“香蕉”:
打印“猴子被香蕉催眠”
打印“您继续前往下一个岛屿…”
返回“冻结”
其他:
打印“什么?没有意义”
返回“丛林”
冰冻等级(岛屿):
#添加绿色、蓝色圆圈和黑色菱形
def输入(自我):
打印“这是雪地”
打印“这是你的滑雪板,选择你的路径”
打印“([
运行次数=[“绿色”、“蓝色”、“黑色”]
打印运行
运行选项=原始输入(“>”)
如果run_choice==“绿色”:
打印“简易解决方案?”
打印“不好”
打印“错误”
返回“失败者”
elif run_choice==“蓝色”:
打印“好吧,至少不是最简单的方式”
打印“你有胆量,我再让你选择一次”
返回“冻结”
elif run_choice==“黑色”:
打印“我喜欢你的风格”
打印“做出艰难选择显示勇气”
打印“继续到下一个岛”
返回“热带”
其他:
打印“说什么?!”
返回“冻结”
热带(岛屿)级:
def输入(自我):
打印“你到达了最后一个岛!”
打印“看,这是宝箱!”
打印“剩下要做的就是猜胸前的密码”
打印“聪明点,你只能猜五次…”
t_key=“1234”
胸部猜=原始输入(“你认为它是什么?”)
猜测=0
而胸部猜数!=t键和猜数<4:
打印“再次猜测”
猜测+=1
胸部猜测=原始输入(“?”)
如果cost_guess==t_key:
打印“你猜对了!”
打印“你赢了”
其他:
打印“对不起”
返回“失败者”
类映射(对象):
岛屿={
“失败者”:失败者(),
“丛林”:丛林(),
“冻结”:冻结(),
“热带”:热带(),
}
def _u初始(自我,启动岛):
self.start\u岛=start\u岛
def下一个_岛(自身,岛):
val=Map.islands.get(岛)
返回值
def打开_岛(自):
返回self.next_岛(self.start_岛)
mj_地图=地图(“丛林”)
mj_游戏=引擎(mj_地图)
mj_游戏
现在我遇到了一个错误,说“island_map”没有在我的引擎类中定义。我不明白,因为对我来说它看起来像是定义的。任何输入都将不胜感激

def play(self):

    current_island = island_map.opening_island()
需要改成

def play(self):

    current_island = self.island_map.opening_island()
因为它是那个例子的一部分

需要改成

def play(self):

    current_island = self.island_map.opening_island()
因为它是那个例子的一部分

需要改成

def play(self):

    current_island = self.island_map.opening_island()
因为它是那个例子的一部分

需要改成

def play(self):

    current_island = self.island_map.opening_island()

由于它是该实例的一部分

请提出您的问题,并发布您收到的错误的全文。您忘记在Engine.play()方法的这一行中添加
self
:当前岛=岛地图。打开岛()应该是self.current_island请回答您的问题,并发布您收到的错误的全文。您忘记在引擎的这一行中添加
self
。play()方法:
current_island=island_地图。打开_island()
应该是self.current_island请回答您的问题,并发布您收到的错误的全文。您忘记在引擎的这一行中添加
self
。play()方法:
current_island=island_地图。打开_island()
应该是self.current_island请回答您的问题,并发布您收到的错误的全文。您忘记在引擎的这一行中添加
self
。play()方法:
current_island=island_地图。打开_island()
应该是
self。current_island
谢谢各位!我现在可以用了。太令人沮丧了,这是我鼻子底下的一个简单修复!谢谢各位!我现在可以用了。太令人沮丧了,这是我鼻子底下的一个简单修复!谢谢各位!我现在可以用了。太令人沮丧了,这是我鼻子底下的一个简单修复谢谢大家!我现在要开始工作了。所以