不能用Python 2.7.4中的类随机化列表

时间:2018-05-06 03:25:21

标签: python python-2.7 list

我是编码的新手,我需要一些帮助。我试图随机化这些房间或场景'在文本冒险中,但每当我尝试随机化它们时,它们甚至不会出现在我运行时!这是脚本:

from sys import exit
import time
import random
#import another file here to use in this

class Scene(object):
    def enter(self):
        print "Not yet configured."



class Start():

    def start(self):
        print "Hello. How are you? You are about to play a game that is set in a crazy world."
        print "We are creating your profile right now."
        epic = raw_input("Enter your name here: ")
        print "Hello, %s." % epic
        print "You are being transported to a randomly generated world. Try to survive as long as possible."
        print "Here's some advice, %s: Don't die. Make the right choice. Be careful." % epic
        print "The rules will be shown to you soon."
        print "LOADING..."
        time.sleep(1)
        return Rules().rules()

class Rules(Scene):

    def rules(self):
        print ""
        print "-------------"
        print ""
        print "These are the rules:"
        print "1: Be a good sport. This game takes skill and memory to be able to win, so try your best to succeed."
        print "2: Every time you die, you do not get to respawn, so you will be prompted to either just not play anymore"
        print "or play again. If you decide to play again, you will most likely be on a new world with a new puzzles."
        print "3: Finally, have fun. Hopefully this game brings you joy, so have a great time playing it."
        return random.choice(the_shuffler)

class BoilerRoom(Scene):

    def boiler_room(self):
        print "You are in the boiler room."

class Kitchen(Scene):

    def kitchen(self):
        print "You are in the kitchen."

class Pool(Scene):

    def pool(self):
        print "You are in the pool."

class TennisCourts():

    def tennis_courts(self):
        print "You are in the tennis courts."

class SoccerField():

    def soccer_field(self):
        print "You are on the soccer field."

class Map(object):

    scenes = {
        Rules(): 'rules',
        BoilerRoom(): 'boiler_room',
        Kitchen(): 'kitchen',
        Pool(): 'pool',
        TennisCourts(): 'tennis_courts',
        SoccerField(): 'soccer_field'
    }

the_shuffler = (BoilerRoom, Kitchen, Pool, TennisCourts, SoccerField)

Start().start()

2 个答案:

答案 0 :(得分:0)

您需要在random.choice(the_shuffler)返回的类上调用该方法。

如果每个类都具有相同的描述打印方法,那将会有所帮助。

答案 1 :(得分:0)

不知何故,你的语法错误。您创建了一个包含class的字典 - 实例为strings

如果要随机调用函数/类,则必须为每个函数分配一个变量名,随机化这些名称的顺序,并通过apply()调用返回的函数。

如果你想使用类或函数作为你的dict的值,并不重要 - 对于类,你也必须以某种方式存储调用哪个方法(或者只是打印类和编码一个有效的 str < / strong>()为它)。

我的示例直接使用函数:

def a():
    print "a"

def b():
    print "b" 

def c():
    print "c"

def d():
    print "d"

def e():
    print "e"



import random


# you would have to incoporate this somewhere into your program logic.
# probably calling it from Rules() - somehow. 

def menu():
    # map functions to keys
    #     "a"   is a string, the name for a function
    #     a     is the function
    #     a()   calls the function, as does options["a"]() 
    options = { "a" : a,  "b" : b,  "c" : c,  "d" : d,  "e" : e}

    # get all possible names
    listOfKeys = list(options.keys())

    # shuffle in place into random order
    random.shuffle(listOfKeys)

    # visit them in this order
    for r in listOfKeys:  
        options[r]() # get function-value from the dict and () it 


print "First try:" 
menu()

print "\n\nSecond try:"
menu()

输出:

First try:
e
c
d
a
b


Second try:
b
c
a
e
d

链接到random.shuffle()

的文档

为什么在这里使用类会对你的代码有益,我不清楚......