Найти - Пользователи
Полная версия: Не строит дерево
Начало » Python для новичков » Не строит дерево
1
Vadimka1206
Доброго времени суток, я написал текстовую игру, дерево игры строится ужасно криво, помогите, пожалуйста, мне нужно, чтобы все просто работало, не нужно, чтобы код был красивым


class Game_Tree(object):
    
    sons = [0,1]
    message = ""   
    game_is_won = 0 
    def __init__(self, mess, finished):
        self.message = mess
        self.game_is_won = finished
        
    @classmethod    
    def add(cls, son, number_of_son):
        if(number_of_son == 0):
            cls.sons[0] = son
        if(number_of_son == 1):
            cls.sons[1] = son
        
        
        
def make_tree():
    message = "Duhota. Solnce neshadno slepit iz-za tulya i zastavlyaet \
prosnutsa. No razbudilo Vas ne tol'ko solnce. Trel telefonnogo zvonka \n\
zastavlyaet golovu raskalyvatsa na dve chasty. Nepryatnoe chuvstvo kogda ty ne \n\
ponimaesh gde ty, kak tebya zovut i kak zdyes okazalsa. No seichas glavnoe zastavit \n\
molchat nenavistnyi telefonnyi apparat. \n\
Vy mojete \n\
Otvetit` (0) \n\
Sbrosit`(1)"
    
    root = Game_Tree(message, 0)
    message ="Na telephone opredelilos` imya zvonyashego: Piton, no ty \n\
ne pomnish kto eto. No na svoy strah i risk ty reshil otvetit`. Iz trubky donositsya \n\
razdrajennyi mujskoy golos: Ty kuda poteryalsa? Ty doljen byl byt` na ploshadi Lenina \n\
eshe 5 minut nazad! Marta eshe jdet, davay, podrivaysia. \n\
Vy mojete \n\
Poity. (0) \n\
Dalshe spat`. (1) "
    
    son = Game_Tree(message, 0)
    root.add(son, 0)
    root.sons[0].add(root,1)
    message = "Zvonit kakoy-to Piton. Ty ne pomnish kto eto. \n\
Sbrasyvaesh vyzov i kladesh telephon obratno v karman pidjaka. \n\
Obyskat pidjak? \n\
Da (0) \n\
Lech spat` dalshe (1)"
        
    son = Game_Tree(message, 0)
    root.add(son, 1)
    root.sons[1].add(root,1)
    
    
    message = "Marta? Kto eto? I kto takoy etot Piton? \n\
Ladno, raz bol`she nichego ne izvestno, mojet hot` Marta otvetit hotya by na chast` \n\
voprosov, roem zudashih v tvoey golove. Ty prihodish na ploshad` Lenina, prohodish \n\
mimo pamyatnika i vidish krasivuyu devushku. Ona zametila tebya i nachala smotret` \n\
ne otryvaia glaz, litco ee bylo pechalno. \n\
Devushka pokazalas` tebe znakomoy? \n\
Da. (0) \n\
Net (1) "
    
    son = Game_Tree(message, 0)
    root.sons[0].add(son, 0) 
    message = "Interesno. Pomimo pachki sigaret i zazhigalki Zippo v pidzhake\n\
    naiden ispol'zovanniy vcherashniy bilet v operniy teatr i garderobniy nomerok.\n\
    Shodit' v teatr i proverit'?\n\
    Da (1)\n\
    Net (2)\n"
    
    son = Game_Tree(message, 0)
    root.sons[1].add(son, 0)
    root.sons[1].sons[0].add(root,1)
    message = "Podoity poznakomytsa? \n\
Da (0) \n\
Net (1)"
    
    son = Game_Tree(message, 0)
    root.sons[0].sons[0].add(son, 1)
    message = "Ty prishel v teatr i podoshel k garderobu. \n\
Poprivetstvoval garderobshika i obyasniv emu, chto sluchaino ostavil zdes` svoi \n\
veshi, protianul emu nomerok. Vzamen garderogshik otdal tebe korichnevyi kojanyi \n\
portfel` v kotorom obnarujils`a pasport i medkarta, v kotoroy bylo skazano \n\
o nalichii u tebya redkoy phormy amnezii i receptom na preparat, \n\
kotoryi nujno prinimat` kajdyi raz pered snom, chtoby utrom pomnit` o proishodyashem \n\
nakanune. \n\
Vi Viygrali"
    
    son = Game_Tree(message, 1)
    root.sons[1].sons[0].add(son, 0)
    message = "Ty reshil poznakomitsa, no ne nashel nujnyh slov, hotel poshutit, \n\
no poluchilos hamstvo. I otvetom tebe stanovitsya zvonkaya poshechina... V \n\
golove plyvut kakie-to obrazy, he stihaet gul i vertyatsa voprosy o tom, kto je ty. \n\
Potom nastupaet tishina i polnyi pokoy. \n\
Ty otkryvaesh glaza...(0)\n"
    
    son = Game_Tree(message, 0)
    root.sons[0].sons[0].sons[1].add(son, 0)
    root.sons[0].sons[0].sons[1].sons[0].add(root, 0)10
    root.sons[0].sons[0].sons[1].sons[0].add(root, 1)
    message = "Ty prysel na stoyash`uu poblizosti skameiku i mashinalno dostal iz \n\
karmana pachku sigaret i zajigalku. Odnako pomimo etogo v paltcah okazals`a eshe i \n\
ispolzovannyi vcherashnyi bilet v Teatr Opery i Baleta, a tak je nomerok ot garderoba. \n\
Zaity v teatr (0) \n\
Poyti domoy (1) "
    son = Game_Tree(message, 0)
    root.sons[0].sons[0].sons[1].add(son, 1)
    root.sons[0].sons[0].sons[1].sons[1].add(root.sons[1].sons[0].sons[0],0)
    root.sons[0].sons[0].sons[1].sons[1].add(root,1)
    
    
    message = "Ty podhodish k devushke s misl'y o tom, chto ona i est' ta samaya Marta\n\
    Natyagivaesh na lico belozubuyu ulibku, govorish \"Privet\", no otvetom stanovitsya\n\
    zvonkaya posh'echina. V glazah plivut kakie-to obrazi, v golove ne stihaet zudeniya roya\n\
    voprosov o tom, kto zhe ty. Potom nastupaet tishina i polniy pokoy. Ty otkrivaesh glasa (0) "
    
    son = Game_Tree(message, 0)
    root.sons[0].sons[0].add(son, 0)
    root.sons[0].sons[0].sons[0].add(root,0)
    root.sons[0].sons[0].sons[0].add(root, 1) 
         
    return root
root = make_tree()
t = root
while t.game_is_won != 1:
    print t.message
    print t.sons[0].message
    print t.sons[1].message
    action = int(input())
    t = t.sons[action]
odnochlen
"""line1
line2
line3"""
Vadimka1206
Что это значит?
GaiveR
Вместо
message = "Ty podhodish k devushke s misl'y o tom, chto ona i est' ta samaya Marta\n\
Natyagivaesh na lico belozubuyu ulibku, govorish \"Privet\", no otvetom stanovitsya\n\
zvonkaya posh'echina. V glazah plivut kakie-to obrazi, v golove ne stihaet zudeniya roya\n\
voprosov o tom, kto zhe ty. Potom nastupaet tishina i polniy pokoy. Ty otkrivaesh glasa (0) "

можно написать:
message = """Ty podhodish k devushke s misl'y o tom, chto ona i est' ta samaya Marta
Natyagivaesh na lico belozubuyu ulibku, govorish \"Privet\", no otvetom stanovitsya
zvonkaya posh'echina. V glazah plivut kakie-to obrazi, v golove ne stihaet zudeniya roya
voprosov o tom, kto zhe ty. Potom nastupaet tishina i polniy pokoy. Ty otkrivaesh glasa (0) """
odnochlen
Или так:
message = r"""Ty podhodish k devushke s misl'y o tom, chto ona i est' ta samaya Marta
Natyagivaesh na lico belozubuyu ulibku, govorish "Privet", no otvetom stanovitsya
zvonkaya posh'echina. V glazah plivut kakie-to obrazi, v golove ne stihaet zudeniya roya
voprosov o tom, kto zhe ty. Potom nastupaet tishina i polniy pokoy. Ty otkrivaesh glasa (0) """
Но это оффтоп.
Vadimka1206
Проблема то не в строках
odnochlen
Не в этом, но чтобы разбираться в коде, хорошо бы его причесать.

1. Переменные, созданные вне __init__, будут переменнами класса и будут общими для всех экземпляров.
    sons = [0,1]
    message = ""   
    game_is_won = 0 
Тебе это точно нужно?

2. Зачем @classmethod?

3. Куча копипаста. Хорошо бы заменить это структурой. У тебя, как я понял, двоичное дерево.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB