Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2012 04:54:51

Vadimka1206
Зарегистрирован: 2012-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не строит дерево

Доброго времени суток, я написал текстовую игру, дерево игры строится ужасно криво, помогите, пожалуйста, мне нужно, чтобы все просто работало, не нужно, чтобы код был красивым


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]

Отредактировано Vadimka1206 (Окт. 27, 2012 05:14:31)

Офлайн

#2 Окт. 27, 2012 05:56:11

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Не строит дерево

"""line1
line2
line3"""

Офлайн

#3 Окт. 27, 2012 06:44:42

Vadimka1206
Зарегистрирован: 2012-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не строит дерево

Что это значит?

Офлайн

#4 Окт. 27, 2012 15:40:41

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Не строит дерево

Вместо

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) """



Офлайн

#5 Окт. 28, 2012 03:15:46

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Не строит дерево

Или так:

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) """
Но это оффтоп.

Офлайн

#6 Окт. 29, 2012 10:14:30

Vadimka1206
Зарегистрирован: 2012-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Не строит дерево

Проблема то не в строках

Офлайн

#7 Окт. 29, 2012 10:55:40

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Не строит дерево

Не в этом, но чтобы разбираться в коде, хорошо бы его причесать.

1. Переменные, созданные вне __init__, будут переменнами класса и будут общими для всех экземпляров.

    sons = [0,1]
    message = ""   
    game_is_won = 0 
Тебе это точно нужно?

2. Зачем @classmethod?

3. Куча копипаста. Хорошо бы заменить это структурой. У тебя, как я понял, двоичное дерево.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version