From df21a0d29e85b971c13de68c18ce1035faaa40b4 Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Sun, 6 Feb 2022 17:42:01 +0100 Subject: [PATCH] =?UTF-8?q?=C3=96ffnen=20der=20Truhe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ActionModul.py | 13 +++++++++---- ParsedCommand.py | 1 + World.py | 15 +++++++++++---- WorldParser.py | 8 ++++++-- data/Raum.py | 5 +++-- data/__pycache__/Raum.cpython-38.pyc | Bin 3713 -> 3745 bytes world.xml | 26 +++++++++++++------------- 7 files changed, 43 insertions(+), 25 deletions(-) diff --git a/ActionModul.py b/ActionModul.py index 88d9c3b..d0d01c4 100644 --- a/ActionModul.py +++ b/ActionModul.py @@ -28,10 +28,15 @@ class ActionModul: item = self.world.findItemImInventar(parsedCommand.gegenstand); if item != None: - if self.world.findItemImInventarById(13) != None: - item.zustand = item.GEOEFFNET - else: - self.setFehler('Die Tür ist verschlossen.') + if item.id == self.world.ITEM_TRUHE: + schluessel = self.world.findItemImInventarById(self.world.ITEM_KLEINER_SCHLUESSEL) + + if schluessel != None: + item.zustand = item.OFFEN + self.setFehler('Truhe ist jetzt offen') + else: + self.setFehler('Die Truhe ist verschlossen und du hast keinen Schlüssel.') + def verliere(self,parsedCommand): item = self.world.findItemImInventar(parsedCommand.gegenstand); diff --git a/ParsedCommand.py b/ParsedCommand.py index a933d7e..791dbfa 100644 --- a/ParsedCommand.py +++ b/ParsedCommand.py @@ -4,6 +4,7 @@ class ParsedCommand: self.verb = None self.gegenstand = None self.gegenstand2 = None + self.adjektiv = None self.objekt = None self.key = '-1' diff --git a/World.py b/World.py index e8b011c..96cd26c 100644 --- a/World.py +++ b/World.py @@ -133,9 +133,16 @@ class World: return id return None - def removeSortouts(self,words): + def findAdjektiv(self,adjektiv): + skip + def removeSortouts(self,words,parsedCommand): w = [] for word in words: + if word in self.adjektive: + if word == adj.name: + parsedCommand.adjektiv = adj + + if word not in self.sortouts: w.append(word) return w @@ -143,8 +150,8 @@ class World: def parseInput(self,input): words = input.split(' ') - words = self.removeSortouts(words) parsedCommand = ParsedCommand.ParsedCommand() + words = self.removeSortouts(words,parsedCommand) befehlid = self.ermittleBefehlId(words[0]) if befehlid != None: @@ -165,7 +172,7 @@ class World: self.personen = {} self.bewegungen = {} self.gegenstaende = {} - self.adjektive = [] + self.adjektive = {} self.befehle = {} self.inventar = {} self.objekte = {} @@ -185,7 +192,7 @@ class World: self.ITEM_LEITER = '2' self.ITEM_TRUHE = '3' self.ITEM_PFLANZE = '4' - self.ITEM_EINGANGSTUER = '5' + self.ITEM_HAUSTUER = '5' self.ITEM_GLAS = '6' self.ITEM_BETT = '7' self.ITEM_NACHTSCHRANK = '8' diff --git a/WorldParser.py b/WorldParser.py index db23e50..524a67a 100644 --- a/WorldParser.py +++ b/WorldParser.py @@ -1,5 +1,5 @@ import xml.etree.ElementTree as ET -from data.Raum import Raum, Befehl, Gegenstand,Person,TextNode +from data.Raum import Raum, Befehl, Adjektiv,Gegenstand,Person,TextNode import io import logging @@ -67,8 +67,10 @@ class WorldParser(): name = adj.attrib['name'] id = adj.attrib['id'] key = adj.attrib['key'] + adjektiv = Adjektiv(name,id,key) - self.world.adjektive.append(name) + self.world.adjektive[id] = adjektiv + # Sortouts for sortout in root.findall('sortouts/sortout'): name = sortout.attrib['name'] @@ -88,9 +90,11 @@ class WorldParser(): gegenstand = Gegenstand(name,id,raumid) imobil = item.attrib['imobil'] visible = item.attrib['visible'] + adjektiv = item.attrib['adjektiv'] raum = self.world.sucheRaum(raumid) if raum is not None: gegenstand.raum = raum.id + gegenstand.adjektiv = adjektiv gegenstand.imobil = imobil.lower() in ['true','True','1'] logging.debug('itemid= ' + id + ',visible= ' + visible) gegenstand.sichtbar = visible.lower() not in ['false','False','0'] diff --git a/data/Raum.py b/data/Raum.py index 5f82c80..a546996 100644 --- a/data/Raum.py +++ b/data/Raum.py @@ -67,13 +67,14 @@ class Gegenstand(SuperNode): self.zustand = 0 self.sichtbar = True self.imobil = False + self.adjektiv = None self.GESCHLOSSEN = 0 self.OFFEN = 1 self.zustand = self.GESCHLOSSEN class Adjektiv(SuperNode): - def __init__(self,name, id): - super.__init__(self, name, '') + def __init__(self,name, id,key): + super().__init__(name, id) self.key = key diff --git a/data/__pycache__/Raum.cpython-38.pyc b/data/__pycache__/Raum.cpython-38.pyc index a9a755a4ead551c4f449bb99ae2775ac3dd47464..adc3bb4feb22b742bc174467668c2169cd601d5a 100644 GIT binary patch delta 1369 zcmaJ=O-vI(6y9aGyVJ5u8Y76BB1#~(fF&vtgQ5w)QH0oPOlowqbXQo|mS%SA4h^2o)jp1pX&!^DH}V4`;qCK`QjY`ZiRo6MW-y!Yn&-uK=-PQ6T-H%&7k z!7uy$kNtDo%*tJ9g{y(<-=iuV(-@f764hBw-s+6wiQa4o`zrsChLKMjGwL zT$#r$tLWQ7U|Iii2}Z@)q_RAC1U}OW#XL@^S6m6J?Pv@%qWWX_bplNq3^!}F66TUDtz<;F8ND`G0YO-x3#Wu9^ zL?=dK0N0D_rIKBCxU%Lxs`DH|H+F#zqY?KCgqn;4`oKghq8W^idKK{*1jiXzK^qt% z)4>{(KK5Rp8x?FsAA9hE6d2Gr>Zv&0Lt>WnXHH>!E5Ix`&cmt$W*dMXNxwYBev!+X48;xCBt8wvdnAUl%dmn2U?jOi z*4VpvU(defjzH8U_LR)CYl#H=LJrH_P-6EK6ham7ft(HcqNlrf{IAoHI?vuFdiO^j zg^;W4cjCoV1Awcj4<}3R19utT)?TbJNNQDbo_%i5rNkseO~skxx@83+wX9og(MXN8 zn!RznbKe0x2i_ceWjr5g(5yXUG3Q(j-G^Z-O1IgndHrBB8;V$W*$4B)R^*6={UUe^ zumYT5A{z?D6PTbr*eJdLitm%+qo6pb6x&BpNs2s0_^zoI7(xYdp|tK)eRl#!GDu1i Mt8^GKBdI6JU#max-v9sr delta 1394 zcmZ`&&1(};5Z|xtz9hRbh*nEYt*x!5AGSqnk=82Ie$Yxv6BP`UCC#pFbd!{~8~mV9 zJb3XS;yZW{(H?vB;y>Wcn?gM-LT`c~c=GPd%f~h}dGO{vW`6T#<~Q?p6VDUIUBie7 zu-=J(atEJ`QL$rB_7&H59#93;Gz4N#poFExos)>9q*;X7FY%ukVLzp*VGT_UH`XuF2g4N{sO4%1rF)MU&@EnFycsSb2pDK8Ev0(WMo=r}l zLrZH>fKVNUfr3}xgSS2ugCKmPR$Jb7oO*qnpfd>JmB!$P7Z>$J(&I!SgvQu6J;A0U zeeAuuJkx<_eBamdlJ9orw!Bi~;q_!BD6Sf-%A&4>dJ>1v6 zym7$XKy;1I@mhH!n=-oB7T&Roc)B>sp70S$-WDx!R~7|Nf`TPpu#}?5zz(c8Dy_C& z1?`dkgKn7}M0&d0(mw%^C6?dBU>a*;nv3jC88;Y^k z*k7Y}Colv*;5u0E!*+2Fh^WgHHOVkN4+q6IQvA3Se+tFvrPyPNL{iL?!w-!*kHJ|W Y)5Wq?aqJnKRU9AoI;MxBaV<{%0|Bh<%>V!Z diff --git a/world.xml b/world.xml index 6d1de96..96fcbae 100644 --- a/world.xml +++ b/world.xml @@ -106,19 +106,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + +