Example #1
0
 def addBaum(self, inpDat, iTp, cP, yrG=0):
     angP = Fkt.drawDst(inpDat.dI[iTp]['dAngKPlr_E'][1]['k'], self.cM,
                        self.dIA['dMinMax']['AngPol'])
     angA = Fkt.drawDst(inpDat.dI[iTp]['dAngKAzm_E'][1]['k'], self.cM,
                        self.dIA['dMinMax']['AngAzm'])
     Fkt.adjustAngles(angP, angA)
     self.lB.append(
         Baum(inpDat, self.cMk, iTp, np.array(cP), yrG, angP[0], angA[0]))
Example #2
0
 def addInitialBaeume(self, inpDat):
     self.lB, self.dBGNotGerm = [], {}
     for iTpB, lSPosSYB in self.dBG.items():
         for k in range(len(lSPosSYB)):
             cPos, yrGerm = lSPosSYB[k]
             if yrGerm == 0:
                 self.addBaum(inpDat, iTpB, cPos, yrGerm)
             else:
                 Fkt.addToDictL(self.dBGNotGerm, iTpB, lSPosSYB[k])
Example #3
0
 def getCoordKt(self):
     lVDKt, lCKt = [V0_3D] * len(self.vDsK), [V0_3D] * len(self.vDsK)
     lPSKt = ['End'] * len(self.vDsK)
     lInpV = [np.array([cK for cK in self.pS]), 0, 0., 0., True]
     # lInpV: [pSC, iSegS, cTDsK, cTLen, incTLen]
     for k in range(len(self.vDsK)):
         lPSKt[k] = Fkt.getRPsSK(self.lFDsK[k])
         lInpV = Fkt.getInfoKt(lVDKt, lCKt, k, self.vDsK, lInpV,
                               self.lDirSeg, self.lLenSeg)
     self.lKVD, self.lKC, self.lKPS = lVDKt, lCKt, lPSKt
Example #4
0
    def bewegen(self):
        richtung = fk.zufaellige_richtung()
        bewegunsrichtung = Karte.richtungen[richtung]
        neuerStandort = (
            self.standort[0] + bewegunsrichtung[0],
            self.standort[1] + bewegunsrichtung[1])

        if fk.ob_in_karte(neuerStandort, Karte.KoordinatenGrenze) is True:
            neuerStandort = self.standort

        return neuerStandort
Example #5
0
 def removeZwPinchKt(self, lZwRm, lIDZPinch):
     Fkt.addLElToList(lIDZPinch, [Z.IDZ for Z in lZwRm])
     for cZw in lZwRm:
         for cKt in cZw.lKZw:
             cKt.pinchIt = True
     lZwKeep = []
     for cZw in self.lZw:
         if cZw not in lZwRm:
             lZwKeep.append(cZw)
     self.lZw = [cZw for cZw in lZwKeep]
     if len(self.lZw) == 0:
         self.pinchIt = True  # remove this one
Example #6
0
 def __init__(self,
              dInA,
              dInTp,
              cMk,
              dFAdj,
              dFPE,
              dAnEP,
              dAnEA,
              IDZw,
              lPathID,
              yrGrm=0,
              ageBm=0,
              vS=P0,
              sD='s',
              vDPrv=vUz,
              vDCur=vUz,
              cAnV=0.,
              cAnR=0.,
              lenZw=1.,
              lFDstK=[1],
              ageZw=1):
     self.dIA = dInA
     self.dITp = dInTp
     self.cMk = cMk
     self.cM = self.dIA['Mode']
     self.IDZ = IDZw
     self.pathID = lPathID
     self.yrG = yrGrm
     self.ageB = ageBm
     self.pS = vS
     self.sDir = sD
     self.vDirP = vDPrv
     self.vDirC = vDCur
     self.lFDsE = Fkt.drawDst(dFPE[self.sDir], self.cM,
                              self.dIA['dMinMax']['FctPEZw'])
     self.lAnEP = Fkt.drawDst(dAnEP[self.sDir], self.cM,
                              self.dIA['dMinMax']['AngPol'])
     self.lAnEA = Fkt.drawDst(dAnEA[self.sDir], self.cM,
                              self.dIA['dMinMax']['AngAzm'])
     #         Fkt.adjustAngles(self.lAnEP, self.lAnEA)
     self.cAnVZ = cAnV
     self.cAnRZ = cAnR
     self.getSegments(lenZw)
     self.lFDsK = lFDstK
     self.vDsK = np.array([cFctK * self.lenZ for cFctK in self.lFDsK],
                          float)
     self.getCoordKt()
     self.arrX = np.array([self.pS[0]] + [cP[0] for cP in self.lPSegE])
     self.arrY = np.array([self.pS[1]] + [cP[1] for cP in self.lPSegE])
     self.arrZ = np.array([self.pS[2]] + [cP[2] for cP in self.lPSegE])
     self.dFAd = dFAdj
     self.ageZ = ageZw
Example #7
0
 def getFAdj(self):
     lSRV_C, lSEV = self.dIA['dVDep']['lSRV_C'], self.dIA['dVDep']['lSEV']
     dFAdj = {}
     for cVar in lSRV_C:
         # list of adjustment factors (lFA) for cur. response v.
         # contains elements for all explanatory v.
         lFA = Fkt.getLFAdj(lSEV, cVar, self.dTpAdj, self.dMMAdj, self.vDir,
                            vUz, self.cAnRZ, self.pKR, self.lenZ, self.ageZ,
                            self.ageB, self.sDirN, self.cM)
         # list of according weights, as defined in dITp
         lWts = [self.dITp['dCtWt'][cVar][cSEV] for cSEV in lSEV]
         dFAdj[cVar] = Fkt.weightedGeoMean(lFA, lWts)
     return dFAdj
Example #8
0
 def __init__(self, inpDat):
     descrBG, ageBG = 'BaumGruppe', 0
     self.dIA = inpDat.dI
     self.cMk = Mosaik(self.dIA)
     self.cM = self.dIA['Mode']
     self.dBG = self.dIA['dBaumGruppe']
     self.addInitialBaeume(inpDat)
     self.nYrs = self.dIA['nYears']
     self.lViewPlt = self.dIA['lViewPlt']
     self.lYPltBG = self.dIA['lYPltBaumGruppe']
     self.descBG = descrBG
     self.ageBG = ageBG
     self.cSonne = Sonne(self.dIA)
     Fkt.seedRNG(self.cM)
Example #9
0
 def growBlaetter(self):
     self.lBt = []
     tOffsAngAzm = self.dITp['dOffsAngAzm'][self.nKKt][self.sDir]
     self.offsAngAzm = Fkt.drawDst(tOffsAngAzm, self.cM,
                                   self.dIA['dMinMax']['AngAzm'])
     if self.dIA['modelBlatt']:
         vN = Fkt.findRotAxis(self.vDirC, self.sZwTp, self.dIA['tolAngV'])
         for iKKt in range(self.nKKt):
             cAnBtPlr = self.lAnKPlr[iKKt] * self.dITp['fAngBlattPlr']
             cAnKsAzm = self.lAnKAzm[iKKt] + self.offsAngAzm * self.iKtZw
             cAnBtPlr, cAnKsAzm = Fkt.adjustAngPA(cAnBtPlr, cAnKsAzm)
             vR = Fkt.rotatePt3D(self.vDirC, vN, cAnBtPlr)
             vDB = Fkt.rotatePt3D(vR, self.vDirC, cAnKsAzm)
             self.lBt.append(self.growBlatt(vDB, iKKt))
Example #10
0
 def __init__(self,
              dInA,
              dInTp,
              cMk,
              nKntnZw,
              IDKnosp,
              lPathID,
              iKnosp,
              yrGrm=0,
              ageBm=0,
              ageZw=-1,
              lenZw=0.,
              pCA=P0,
              pR=0.,
              sDPrv='s',
              sDNxt='v',
              vDZw=vUz,
              vDK=vUz,
              isGerm=True):
     self.dIA = dInA
     self.dITp = dInTp
     self.cMk = cMk
     self.cM = self.dIA['Mode']
     self.dLenZw = self.dITp['dLengthZw']
     self.dNNKZw = self.dITp['dNumNKZw']
     self.dFPKZw = self.dITp['dFctPKZw']
     self.dFPEZw = self.dITp['dFctPEZw']
     self.dAnEPlr = self.dITp['dAngEPlr']
     self.dAnEAzm = self.dITp['dAngEAzm']
     self.dTpAdj = self.dITp['dTypeAdj']
     self.dMMAdj = self.dITp['dMMFAdj']
     self.nKZw = nKntnZw
     self.IDKs = IDKnosp
     self.pathID = lPathID
     self.iKKt = iKnosp
     self.yrG = yrGrm
     self.ageB = ageBm
     self.ageZ = ageZw
     self.lenZ = lenZw
     self.pKC = pCA
     self.pKR = pR
     self.sDirP = sDPrv
     self.sDirN = sDNxt
     self.vDirZw = vDZw
     self.vDir = vDK
     self.cAnVZ = Fkt.calcAngle2Vect3D(self.vDir, vUz)
     self.cAnRZ = Fkt.calcAngle2Plains3D([self.vDirZw, vUz],
                                         [self.vDir, self.vDirZw])
     self.dFAd = self.getFAdj()
     self.fGerm = isGerm
Example #11
0
 def __init__(self,
              dInA,
              dInTp,
              cMk,
              IDBlt,
              vS=P0,
              vDB=vUz,
              vDZ=vUz,
              lenBl=1.,
              widBl=1.,
              shpBl='circle',
              ageBl=1):
     self.dIA = dInA
     self.dITp = dInTp
     self.cMk = cMk
     self.cM = self.dIA['Mode']
     self.IDBt = IDBlt
     self.pS = vS
     self.vDirBt = vDB
     self.vDirZw = vDZ
     self.shpBt = shpBl
     self.lenBt = lenBl
     self.widBt = widBl
     self.getArea()
     self.pMid = self.pS + (self.lenBt / 2.) * self.vDirBt
     self.pRBt = Fkt.getLenNewCS(self.pMid, self.vDirBt)
     self.ageBt = ageBl
     self.addToBlock()
Example #12
0
 def getDBlocks(self):
     self.dBk, self.lBkID, lTT, tD = {}, [], [], self.dIA['tDimBkG']
     nX, nY, aDRI = self.nX, self.nY, self.cSonne.aDRInv
     #         aPD = np.array(self.dIA['basisR3'] + [-v for v in self.dIA['basisR3']])
     #         aArea = np.array([self.aDim[1]*self.aDim[2], self.aDim[0]*self.aDim[2],
     #                           self.aDim[0]*self.aDim[1]]*2)
     #         aLtCol = [np.dot(cPD, aDRI)*aArea[k] for k, cPD in enumerate(aPD)]
     #         aLtCol = np.array([max(aLtCol[k], aLtCol[k + 3]) for k in range(3)])
     #         aLtCol /= sum(aLtCol)
     for i in reversed(range(self.nZ)):
         tLZ = (i, self.nZ - i - 1)
         for j in range(self.nY):
             tLY = (j, self.nY - j - 1)
             for k in range(self.nX):
                 tLX = (k, self.nX - k - 1)
                 tPMid = (-(nX // 2) * tD[0] + ((nX + 1) % 2) * tD[0] / 2. +
                          k * tD[0], -(nY // 2) * tD[1] +
                          ((nY + 1) % 2) * tD[1] / 2. + j * tD[1],
                          tD[2] / 2. + i * tD[2])
                 pRSunl = Fkt.getLenNewCS(tPMid, aDRI)
                 lTT.append((pRSunl, tPMid, self.getTLayer(tLX, tLY, tLZ)))
     self.getLAEdgeXtr([lTT[0][1], lTT[-1][1]])
     lTT.sort(reverse=True)
     for (i, (pRSunl, tPMid, tLC)) in enumerate(lTT):
         self.lBkID.append((pRSunl, tLC))
         self.dBk[tLC] = Block(self.dIA, self.aDim, self.tSigRays,
                               self.lAEdgeXtr, pRSunl, tPMid, tLC, i)
     for keyBk in self.dBk:
         self.updateBlock(keyBk)
Example #13
0
 def formPinchKnospen(self, dPrPKKt, tMnMx):
     if self.fAct:  # form Knospen
         vN = Fkt.findRotAxis(self.vDirC, self.sZwTp, self.dIA['tolAngV'])
         for iKKt in range(self.nKKt):
             cAnKsAzm = self.lAnKAzm[iKKt] + self.offsAngAzm * self.iKtZw
             tAn = Fkt.adjustAngPA(self.lAnKPlr[iKKt], cAnKsAzm)
             self.lAnKPlr[iKKt], cAnKsAzm = tAn
             vR = Fkt.rotatePt3D(self.vDirC, vN, self.lAnKPlr[iKKt])
             vDKKt = Fkt.rotatePt3D(vR, self.vDirC, cAnKsAzm)
             sDirN = Fkt.getSDir(self.sDir, vDKKt, vUz, self.dIA['tolAngV'])
             self.lKKt.append(
                 Knospe(self.dIA, self.dITp, self.cMk, self.nKZw,
                        (self.IDKt, iKKt), self.pathID, iKKt, self.yrG,
                        self.ageB, self.ageZ, self.lenZ, self.pKC, self.pKR,
                        self.sDir, sDirN, self.vDirC, vDKKt))
             self.lNumKs[1] += 1
     self.pinchKnospen(dPrPKKt, tMnMx)
Example #14
0
 def pinchKnospen(self, dPrPKKt, tMnMx):
     if self.ageZ <= 1:  # pinch out Knospen
         for cKKt in self.lKKt:
             prPinch = Fkt.drawDst(dPrPKKt[self.sDir], self.cM, tMnMx)
             if np.random.uniform() < prPinch:
                 cKKt.becomeInact()
                 self.lNumKs[0] += 1
                 self.lNumKs[1] -= 1
Example #15
0
 def decoratePlot(self, nF='Plot', pTitle=''):
     plt.title(pTitle)
     #         plt.legend(loc = 'best')
     plt.xlabel('x')
     plt.ylabel('y')
     #         plt.zlabel('z')
     plt.savefig(
         Fkt.joinToPath(nF + self.dIA['nFEndPDF'], [self.dIA['nDPlots']]))
     plt.close()
Example #16
0
 def growZweig(self, cLtPBk):
     assert cLtPBk <= 1
     if self.fGerm:
         self.becomeInact()
         dMnMx = self.dIA['dMinMax']
         # draw a value for the length of this "Zweig"
         lenZw = Fkt.drawVRel(self.dLenZw, self.nKZw, self.sDirN, self.cM,
                              dMnMx['LenZw'], dMnMx['NKZw'],
                              self.dFAd['LenZw'],
                              self.dITp['dDist']['NKZw'])
         # adjust the "Zweig" length according to the available light
         if self.dIA['lvlDbg'] > 0 and cLtPBk < 1:
             print('lenZw (before):', lenZw,
                   '- current light propagated in block:', cLtPBk)
         lenZw *= cLtPBk
         if self.dIA['lvlDbg'] > 0:
             print('lenZw (after):', lenZw)
         # TODO - change
         if lenZw < 10:
             return 0
         dInfo = {
             'VertZ': self.cAnVZ,
             'RelPZw': self.cAnRZ,
             'RelPKt': self.pKR,
             'LenZw': self.lenZ,
             'AgeZw': 1,
             'AgeBm': self.ageB
         }
         # draw a value for the number of "Knoten" on this "Zweig"
         nKZw = Fkt.drawDict(self.dITp, dInfo, dMnMx, 'dDist', 'NKZw',
                             'dNumNKZw', 'dBndAr', 'dCtWt', self.sDirN,
                             self.cM)
         #             # adjust the number of "Knoten" according to the available light
         #             nKZw = max(1, round(nKZw*cLtPBk))
         lFDstK = Fkt.drawLVRel(self.dFPKZw, nKZw, self.sDirN, self.cM,
                                dMnMx['FctPKZw'],
                                self.dITp['dDist']['NKZw'])
         return Zweig(self.dIA, self.dITp, self.cMk, self.dFAd, self.dFPEZw,
                      self.dAnEPlr, self.dAnEAzm, self.IDKs, self.pathID,
                      self.yrG, self.ageB, self.pKC, self.sDirN,
                      self.vDirZw, self.vDir, self.cAnVZ, self.cAnRZ, lenZw,
                      lFDstK)
Example #17
0
 def verhalten(self, spieler):
     durchqueren = fk.ja_nein_frage("Moechtest du das Moor auf die Gefahr zu versinken durchqueren?")
     if durchqueren is True:
         erfolg = spieler.fortschreiten(50, 1/2)
         if erfolg is True:
             spieler.geschicklichkeit +=2
             print ("Du bist erfolgreich duch dieses Moor geschritten(+2 geschicklichkeit)")
         elif erfolg is False:
             spieler.sterben(3)
     if durchqueren is False:
         print ("Du kehrst um, weil du nicht riskieren moechtest vom Moor verschluckt zu werden")
         return True
Example #18
0
 def verhalten(self, spieler):
     durchqueren = fk.ja_nein_frage("Moechtest du durch den reißenden Fluss schwimmen?")
     if durchqueren is True:
         erfolg = spieler.fortschreiten(50, 1/2)
         if erfolg is True:
             spieler.geschicklichkeit +=2
             print ("")
         elif erfolg is False:
             spieler.sterben(3)
     if durchqueren is False:
         print ("Du kehrst um, weil du nicht riskieren moechtest vom Moor verschluckt zu werden")
         return True
Example #19
0
 def plotBlaetter(self, cAx):
     lClrB, sPlWhich = self.dIA['lClrBltS1'], self.dIA['dPlot']['Blatt'][1]
     mEW = self.dITp['wdEdgeBl']
     if self.dIA['colSetBl'] == 'Autumn':
         lClrB = self.dIA['lClrBltS2']
     for cK in self.lK:
         for cBt in cK.lBt:
             if ((sPlWhich in ['All', 'Current'] and cBt.ageBt == 1) or
                 (sPlWhich in ['All', 'Previous'] and cBt.ageBt > 1)):
                 cCol = Fkt.getCol(lClrB, self.dIA['colModeBl'], cBt.ageBt)
                 mSz = np.average([cBt.lenBt, cBt.widBt])
                 mSz *= self.dITp['fMarkSzBl']
                 lX, lY, lZ = Fkt.getCCMidP(cBt.pS, cBt.vDirBt, cBt.lenBt)
                 cAx.plot(lX,
                          lY,
                          lZ,
                          linestyle='None',
                          marker='H',
                          ms=mSz,
                          markeredgewidth=mEW,
                          color=cCol)
Example #20
0
 def plotZweige(self, cAx):
     fWdthZw, offsZWd = self.dIA['fWdthZw'], self.dIA['offsWdthZw']
     lClrZw = self.dIA['lClrZweig']
     for cK in self.lK:
         for cZw in cK.lZw:
             cLwd = cZw.ageZ * fWdthZw + offsZWd
             cCol = Fkt.getCol(lClrZw, self.dIA['colModeZw'], cZw.ageZ)
             cAx.plot(cZw.arrX,
                      cZw.arrY,
                      cZw.arrZ,
                      linestyle='solid',
                      linewidth=cLwd,
                      color=cCol)
Example #21
0
 def verhalten(self, spieler):
     besteigen = fk.ja_nein_frage("Moechtest du die Berge ueberqueren?")
     if besteigen is True:
         erfolg = spieler.fortschreiten(15, 3/4)
         if erfolg is True:
             spieler.staerke += 0.5
             print("Von der Spitze des Berges hast du eine wunderbare Aussicht.(+0,5 staerke)")
         elif erfolg is False:
             spieler.staerke -= 1.25
             print ("Du bist abgestuerzt und verlierst, waehrend deiner Genesung staerke.(-1,25 staerke)")
     elif besteigen is False:
         print ("Da du die Berge nicht ueberqueren willst kehrst du um.")
         return True
Example #22
0
 def getSegments(self, lenZw):
     assert len(self.pS) == 3 and len(self.vDirC) == 3
     if self.dIA['lvlDbg'] > 0 and (self.pS[2] < 0 or lenZw <= 0):
         print('self.pS[2] =', self.pS[2], '/', 'lenZw =', lenZw)
     assert self.pS[2] >= 0 and lenZw > 0
     assert (len(self.lFDsE) == len(self.lAnEP)
             and len(self.lAnEP) == len(self.lAnEA))
     nE = len(self.lFDsE)
     lDirSg, lPSgE = [V0_3D] * (nE + 1), [V0_3D] * (nE + 1)
     lLenSg = [0.] * (nE + 1)
     cAngChDr = Fkt.drawDst(self.dITp['dAngChDr'][self.sDir], self.cM,
                            self.dIA['dMinMax']['AngPol'])
     lInpV = [
         0,
         np.array([cKS for cKS in self.pS]), self.vDirC, lenZw,
         self.dITp['dPosZweig'][self.sDir], cAngChDr, self.dIA['tolAngV']
     ]
     # lInpV: [pRC, pSC, vDC, lenC, cSPosZweig, cAngChDr, angTol]
     Fkt.constructSeg(lDirSg, lPSgE, lLenSg, nE, lInpV, self.lFDsE,
                      self.lAnEP, self.lAnEA)
     assert len(lDirSg) == len(lPSgE) and len(lDirSg) == len(lLenSg)
     self.lDirSeg, self.lPSegE, self.lLenSeg = lDirSg, lPSgE, lLenSg
     self.pE, self.lenZ = self.lPSegE[-1], sum(self.lLenSeg)
Example #23
0
 def __init__(self,
              inpDat,
              cMk,
              iTp=1,
              vS=P0,
              yrGerm=0,
              angPKm=0,
              angAKm=0,
              ageB=0,
              lenKm=0):
     descrB, cSPKtS, cSDrKtS = 'Keim', 'End', 'k'
     IDK, iKZw, cPRKtS, lPathID = 0, 0, 0., []
     self.dIA = inpDat.dI
     self.dITp = inpDat.dI[iTp]
     self.cMk = cMk
     self.cM = self.dIA['Mode']
     self.iT = iTp
     self.tpB = self.dITp['strType']
     self.specB = self.dITp['strNSpec']
     self.descB = descrB
     self.ageB = ageB
     self.lenK = lenKm
     self.pS = vS
     self.yGerm = yrGerm
     self.dPosZw = self.dITp['dPosZweig']
     self.dPosBl = self.dITp['dPosBlatt']
     self.lNumK = [0, 1, 1,
                   IDK]  # num. inact., num. act., num. all, max. ID
     self.dFAd = {cVar: 1. for cVar in self.dIA['dVDep']['lSRV_C']}
     angPKm, angAKm = Fkt.adjustAngPA(angPKm, angAKm)
     vDirP, vDirSl, ageZw = vUz, Fkt.convPolarToCart(1., angPKm, angAKm), -1
     self.lK = [
         Knoten(self.dIA, self.dITp, self.cMk, self.dFAd, IDK, lPathID,
                iKZw, self.yGerm, self.ageB, ageZw, self.lenK, self.pS,
                cPRKtS, cSPKtS, cSDrKtS, vDirP, vDirSl)
     ]
     self.lIDZwPinch = []
Example #24
0
    def verhalten(self, spieler):
        ueberquerung = fk.ja_nein_frage("Moechtest du die Schlucht durchklettern(ja/nein)")

        if ueberquerung is True:
            erfolg = spieler.fortschreiten(50, 3/4)
            if erfolg is False:
                spieler.sterben(2)

            else:
                print("Du hast die Schlucht erfolgreich durchklettert.(+2 geschicklichkeit)")
                spieler.geschicklichkeit += 2

        elif ueberquerung is False:
            print("Du kehrst lieber um.")
            return True
Example #25
0
def spieler_erstellen():
    name = input("Wie meochtest du heißen?")

    geschlecht = ""
    moegl_geschlechter = ("maennlich","weiblich","leo","zwitter")
    while geschlecht not in moegl_geschlechter:
        geschlecht = input("Welches Geschlecht bist du?(maennlich/weiblich)")
        geschlecht = fk.text_anpassen(geschlecht)

    geschicklichkeit = rd.randint(2,7)
    staerke = rd.randint(2,7)
    alter = rd.randint(17,42)
    spieler = Klassen.Spieler(name,geschlecht,alter,geschicklichkeit,staerke)
    print ("Hallo,",spieler.name," du bist",spieler.alter,"Jahre alt und",spieler.geschlecht)
    return spieler
Example #26
0
 def verhalten(self, spieler):
     durchqueren = fk.ja_nein_frage(
         "Moechtest du durch den reißenden Fluss schwimmen?")
     if durchqueren is True:
         erfolg = spieler.fortschreiten(50, 1 / 2)
         if erfolg is True:
             spieler.geschicklichkeit += 2
             print("")
         elif erfolg is False:
             spieler.sterben(3)
     if durchqueren is False:
         print(
             "Du kehrst um, weil du nicht riskieren moechtest vom Moor verschluckt zu werden"
         )
         return True
Example #27
0
 def getIDSunNeighbours(self):
     #         print('self.lAEXtM =', self.lAEXtM, '- self.tSgR =', self.tSgR)
     assert len(self.tSgR) == len(self.aDim)
     self.lIDSunN, rgIDim = [], range(len(self.pM))
     #         self.lIDSunN = [() for _ in rgIDim]
     lIDSunN = [[self.tLyr[k] for k in rgIDim]
                for _ in range(len(self.tSgR))]
     lPMidN = [
         np.array([self.pM[k] for k in rgIDim])
         for _ in range(len(self.tSgR))
     ]
     for k in range(len(self.tSgR)):
         lPMidN[k][k] -= self.tSgR[k] * self.aDim[k]
         lIDSunN[k][k] -= 1
         #             print('lPMidN[', k, '] =', lPMidN[k], '- lIDSunN[', k, '] =', lIDSunN[k])
         if Fkt.isInRange(self.lAEXtM, self.tSgR, lPMidN[k]):
             self.lIDSunN.append((tuple(lIDSunN[k]), k))
Example #28
0
 def verhalten(self, spieler):
     durchqueren = fk.ja_nein_frage(
         "Moechtest du das Moor auf die Gefahr zu versinken durchqueren?")
     if durchqueren is True:
         erfolg = spieler.fortschreiten(50, 1 / 2)
         if erfolg is True:
             spieler.geschicklichkeit += 2
             print(
                 "Du bist erfolgreich duch dieses Moor geschritten(+2 geschicklichkeit)"
             )
         elif erfolg is False:
             spieler.sterben(3)
     if durchqueren is False:
         print(
             "Du kehrst um, weil du nicht riskieren moechtest vom Moor verschluckt zu werden"
         )
         return True
Example #29
0
 def verhalten(self, spieler):
     besteigen = fk.ja_nein_frage("Moechtest du die Berge ueberqueren?")
     if besteigen is True:
         erfolg = spieler.fortschreiten(15, 3 / 4)
         if erfolg is True:
             spieler.staerke += 0.5
             print(
                 "Von der Spitze des Berges hast du eine wunderbare Aussicht.(+0,5 staerke)"
             )
         elif erfolg is False:
             spieler.staerke -= 1.25
             print(
                 "Du bist abgestuerzt und verlierst, waehrend deiner Genesung staerke.(-1,25 staerke)"
             )
     elif besteigen is False:
         print("Da du die Berge nicht ueberqueren willst kehrst du um.")
         return True
Example #30
0
 def getDZwCat(self, sCat='ageZ'):
     dZwCat = {}
     for cK in self.lK:
         if len(cK.lZw) > 0:
             for cZw in cK.lZw:
                 if sCat == 'ageZ':
                     Fkt.adToDictCount(dZwCat, cZw.ageZ)
                 elif sCat == 'ageB':
                     Fkt.adToDictCount(dZwCat, cZw.ageB)
                 elif sCat == 'yrG':
                     Fkt.adToDictCount(dZwCat, cZw.yrG)
     return dZwCat
Example #31
0
    def verhalten(self, spieler):
        ueberquerung = fk.ja_nein_frage(
            "Moechtest du die Schlucht durchklettern(ja/nein)")

        if ueberquerung is True:
            erfolg = spieler.fortschreiten(50, 3 / 4)
            if erfolg is False:
                spieler.sterben(2)

            else:
                print(
                    "Du hast die Schlucht erfolgreich durchklettert.(+2 geschicklichkeit)"
                )
                spieler.geschicklichkeit += 2

        elif ueberquerung is False:
            print("Du kehrst lieber um.")
            return True
Example #32
0
    def bewegen(self, richtung):

        if richtung in Karte.richtungen:
            bewegunsrichtung = Karte.richtungen[richtung]
            neuerStandort = (
                self.standort[0] + bewegunsrichtung[0],
                self.standort[1] + bewegunsrichtung[1])

            if fk.ob_in_karte(neuerStandort, Karte.KoordinatenGrenze) is True:
                neuerStandort = self.standort
                print("du Hast den Rand der Karte erreichst und kannst nicht mehr weitergehen")

            return neuerStandort

        else:
            print("Es faellt mir schwer nach", richtung, " zu laufen. Moegliche Richtungen: nord, ost, sued, west")
            return self.standort

        self.erschoepfung += 1
Example #33
0
 def eqDstScaling(self, cAx):
     dD = {'x': [0, None, None], 'y': [1, None, None], 'z': [2, None, None]}
     for cB in self.lB:
         for cKt in cB.lK:
             Fkt.fillDictMinMax(dD, cKt.pKC)
             for cZw in cKt.lZw:
                 Fkt.fillDictMinMax(dD, cZw.pS)
                 Fkt.fillDictMinMax(dD, cZw.pE)
     cRg_2 = math.ceil(max([dD[cC][2] - dD[cC][1] for cC in dD]) / 2.)
     dMid = {cC: (dD[cC][2] + dD[cC][1]) / 2. for cC in dD}
     if cRg_2 > 0:
         cAx.set_xlim3d(dMid['x'] - cRg_2, dMid['x'] + cRg_2)
         cAx.set_ylim3d(dMid['y'] - cRg_2, dMid['y'] + cRg_2)
         cAx.set_zlim3d(0, 2 * cRg_2)
Example #34
0
 def growKnoten(self, lKN, mxIDKt, iKN, cY):
     for k in range(len(self.lKC)):
         iKN += 1
         dInfo = {
             'VertZ': self.cAnVZ,
             'RelPZw': self.cAnRZ,
             'RelPKt': self.lFDsK[k],
             'LenZw': self.lenZ,
             'AgeZw': self.ageZ,
             'AgeBm': self.ageB
         }
         nKKt = Fkt.drawDict(self.dITp, dInfo, self.dIA['dMinMax'], 'dDist',
                             'NKKt', 'dNumNKKt', 'dBndAr', 'dCtWt',
                             self.sDir, self.cM)
         #             print('Growing Knoten with ID', mxIDKt + iKN, '.')
         lKN.append(
             Knoten(self.dIA, self.dITp, self.cMk, self.dFAd, mxIDKt + iKN,
                    self.pathID + [self.IDZ], k, cY, self.ageB, self.ageZ,
                    self.lenZ, self.lKC[k], self.lFDsK[k],
                    self.lKPS[k], self.sDir, self.vDirP, self.lKVD[k],
                    len(self.vDsK), nKKt))
     self.lKZw = [cKt for cKt in lKN[-len(self.lKC):]]
     return iKN
Example #35
0
# Für schnelles Umschalten der zu zeigenden Plots
y = True
n = False

a = n
b = n
c = n
d = n
e = n

if a:
    x1 = np.linspace(-4, 4, 101)
    x2 = np.linspace(-4, 4, 101)
    X1, X2 = np.meshgrid(x1, x2)
    rosenbrock = 100 * (X2 - X1**2)**2 + (1 - X1)**2
    fu.plotte_Funktion_surf_contf(X1, X2, rosenbrock, "Rosenbrock")

if b:
    x1 = np.linspace(-4, 4, 101)
    x2 = np.linspace(-4, 4, 101)
    X1, X2 = np.meshgrid(x1, x2)
    himmelblau = (X1**2 + X2 - 11)**2 + (X1 + X2**2 - 7)**2
    fu.plotte_Funktion_surf_contf(X1, X2, himmelblau, "Himmelblau")

if c:
    x1 = np.linspace(-4, 4, 101)
    x2 = np.linspace(-4, 4, 101)
    X1, X2 = np.meshgrid(x1, x2)
    bazaraa_shetty = (X1 - 2)**4 + (X1 - 2 * X2)**2
    fu.plotte_Funktion_surf_contf(X1, X2, bazaraa_shetty, "bazaraa/shetty")
Example #36
0
 def addBlattData(self, dITp, cIDObj, cAObj=-1):
     Fkt.adToDictCount(self.dNBt, dITp['iTp'])
     Fkt.addToDictL(self.dIDBt, dITp['iTp'], cIDObj)
     if cAObj >= 0:
         Fkt.adToDictCount(self.dABt, dITp['iTp'], cAObj)
         self.cABtLtC += cAObj * dITp['tPrpDLC'][0]
def main():
    while True:

        if spieler.lebend <= 0:
            break
        eingabe = input("Was willst du tun?")
        eingabe = fk.text_anpassen(eingabe)
        monsterliste = []
        if spieler.leben < spieler.maximalesleben:
            spieler.leben += 2

        if eingabe.startswith("gehen"):

            if eingabe == "gehen":
                aktuelleRichtung = input("gehen? In welche Richtung(nord/ost/sued/west)")

            elif eingabe.startswith("gehen "):
                aktuelleRichtung = eingabe[6:]

            else:
                aktuelleRichtung = eingabe[5:]

            if aktuelleRichtung == "himmel" or aktuelleRichtung == "hoelle":

                spieler.sterben(0)

                if spieler.lebend <= 0:
                    break
            vorherigerstandort = spieler.standort
            spieler.standort = spieler.bewegen(aktuelleRichtung)
            print("Du bist jetzt: ", (spieler.wo().name))

            bleiben = spieler.wo().verhalten(spieler)
            if bleiben is True:
                spieler.standort = vorherigerstandort
                print("Dein Standort ist:",(spieler.wo().name))
            else:
                pass

            monsterentstehung = rd.randint(0, 4)
            if monsterentstehung <= 4:
                monsterliste.append(((zombie_erstellen(monsterliste.__len__())).name)())
            for monster in monsterliste:
                monster.standort = monster.bewegen()
                print(monsterliste.index(monster))
                if monster.standort == spieler.standort:
                    print(
                    "Plötzlich taucht ein Gestalt auf, welche auf dich zugerannt kommt und anfängt dich zu attackieren.")
                    spieler.kaempfen(monster, monsterliste)


        if eingabe.startswith("stop"):
            beenden = fk.ja_nein_frage("Moechtest du das Spiel wirklich verlassen?")
            if beenden is True:
                print("Auf Wiedersehen.")
                break

        if eingabe.startswith("wo"):
            print(spieler.wo().name)
            print(spieler.wo().beschreibung)

        if eingabe.startswith("help"):
            print(
                "Du kannst gehen, indem du 'gehen' und danach die Himmelsrichtung,in welche du gehen willst, schreibst.")
            print("Mit dem Befehl 'wo' erfaerst du wo du bist.")
            print(
                "Und wenn du das Spiel verlassen moechtest schreibe einfach, wenn du gefragt wirst was du tun willst, 'stop'.")