Seite 12 von 271 ErsteErste ... 289101112131415162262112 ... LetzteLetzte
Ergebnis 166 bis 180 von 4063

Thema: Der Pythonthread

  1. #166
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von ante Beitrag anzeigen
    Was sollte bei range "überladen" werden?
    werden bei range die nicht-übergebenen Parameter einfach gesetzt?
    Wenn nicht, hieße dass ja, dass man range mit verschiedenen Arten von Parametern aufrufen kann -> überladen.

    Zitat Zitat von ante Beitrag anzeigen
    xrange: Weniger speicherverbrauch und schneller. ne kurzfassung am prompt liefert dir: help(xrange)
    Ich werd' mal gucken.
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  2. #167
    .
    Registriert seit
    28.09.06
    Beiträge
    16.132
    Zitat Zitat von The_J Beitrag anzeigen
    werden bei range die nicht-übergebenen Parameter einfach gesetzt?
    Wenn nicht, hieße dass ja, dass man range mit verschiedenen Arten von Parametern aufrufen kann -> überladen.
    Ich werd' mal gucken.
    range hat ebenso wie xrange per default 3 parameter: start, stop, step. Das Belegen der Parameter ist kein "Überladen", sondern ein ganz normaler Funktionsaufruf. Wenn range nur mit einem Parameter aufgerufen wird, dann wird dieser als stop interpretiert (start ist dann 0, step 1).

  3. #168
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Zitat Zitat von ante Beitrag anzeigen
    range hat ebenso wie xrange per default 3 parameter: start, stop, step. Das Belegen der Parameter ist kein "Überladen", sondern ein ganz normaler Funktionsaufruf. Wenn range nur mit einem Parameter aufgerufen wird, dann wird dieser als stop interpretiert (start ist dann 0, step 1).
    Das finde ich aber auch wieder sehr iritierend. (Ich weiß, dass das so ist). Weil normalerweise muss ich die Zahlen nach der richtigen Reihenfolge laden!! Ich kann nicht einfach start an dritter Stelle schreiben, wenn es nach der Library an erster Stelle stehen muss. Dass Parameter ausgelassen werden dürfen, müsste ja bekannt sein. (Funktioniert natürlich nur wenn die Parameter mit einem Vorwert geladen werden)
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  4. #169
    L'Éléphant terrible Avatar von Gigaz
    Registriert seit
    28.11.06
    Ort
    Zuhause
    Beiträge
    13.229
    Weiß jemand, wie ich einer Variable eine n²-Matrix voller Nullen zuweisen und danach auf die einzelnen Beiträge zugreifen kann?

  5. #170
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525
    Leute helft mir:
    Warum geht das nciht? Der Code soll folgendes machen: Die Einheit Mongol Herde soll wenn von der KI auf ein freies Feld gestellt werden, nur das macht sie nicht.

    PHP-Code:
        def AI_unitUpdate(self,argsList):
            
    pUnit argsList[0]
            
    Herde gc.getInfoTypeForString('UNIT_MONGOL_HERDE')
            
    pOwner pUnit.getOwner()
            if 
    pUnit.getUnitType() == Herde:
                
    iX pUnit.getX()
                
    iY pUnit.getY()
                
    oPlot CyMap().plot(iX,iY)
                if 
    oPlot.isCity():
                    for 
    iiX in range(iX-1iX+21):
                        for 
    iiY in range(iY-1iY+21):
                            
    pPlot CyMap().plot(iiX,iiY)
                            if 
    pPlot.getFeatureType() != gc.getInfoTypeForString('FEATURE_FOREST'):
                                if 
    pPlot.getFeatureType() != gc.getInfoTypeForString('FEATURE_JUNGLE'):
                                    if 
    not pPlot.isWater():
                                        if 
    pPlot.isOwned():
                                            if 
    pPlot.getOwner() == pOwner():
                                                
    pUnit.getGroup().pushMission(MissionTypes.MISSION_MOVE_TOpPlot.getX(), pPlot.getY(), 0FalseFalseMissionAITypes.NO_MISSIONAIpUnit.plot(), pUnit)
                                                return 
    true
                                                
    break
    #        if pUnit.getUnitType() == Herde:
    #            return true
            
    return False 

  6. #171
    .
    Registriert seit
    28.09.06
    Beiträge
    16.132
    Zitat Zitat von Gigaz Beitrag anzeigen
    Weiß jemand, wie ich einer Variable eine n²-Matrix voller Nullen zuweisen und danach auf die einzelnen Beiträge zugreifen kann?
    Irgendwie sind deine Fragen immer nicht konkret genug. Womöglich hilft dir das Folgende;

    Relikte einer extrem ineffizienten Matrixklasse; Ansonsten schau dir mal NumPy an. Wenn du ein bisschen Numerik betreiben willst, ist das gar nicht so schlecht.

    Code:
    class Matrix:
        def __init__(self,dimX=0,dimY=0,value=0):
            self._dimX = dimX
            self._dimY = dimY
            self._data=[]
            for i in xrange(self._dimX):
                self._data.append([])
                for j in xrange(self._dimY):
                    self._data[i].append(float(value))
    
        def __getitem__(self,index):
            i,j = index
            if self._valid_idx(i,j):
                return self._data[i][j]
            else:
                raise KeyError
            
        def __setitem__(self,index,value):
            i,j = index
            if self._valid_idx(i,j):
                self._data[i][j] = value
            else:
                raise KeyError
            
        def _valid_idx(self,i,j):
            return i >= 0 or j>= 0 or i < self._dimX or j < self._dimY
    
        def pprint(self):
            import pprint #eher unueblich, module in funcs zu importieren
            pprint.pprint(self._data)
    
        def read(self,filename):
            buf = open(filename).readlines()
            self._data = []
            self._dimX = len(buf)
            self._dimY = len(buf[0].split())
            for line in buf:
                self._data.append([])
                self._data[-1].extend(map(float,line.split()))
                
        def __iadd__(self,m):
            if self._dimX != m._dimX or self._dimY != m._dimY:
                    raise TypeError
            for i in xrange(self._dimX):
                for j in xrange(self._dimY):
                    self._data[i][j]+=m[i,j]
            return self
            
    """der folgende code wird nur ausgefuehrt, wenn diese klasse direkt ausgefuehrt wird"""
    if __name__ == '__main__':
        N,M = 4,3
        init_value = 0
        m = Matrix(N,M,init_value)
        
        """schnell ausgabe"""
        m.pprint()
        
        """wert setzen"""
        m[1,2] = 2
        
        """lesender zugriff"""
        print "lese"
        for i in xrange(N): 
            for j in xrange(M):
                print m[i,j],
            print
        
        """lesen aus datei m.txt:
        1 2 3
        4.0 5.0 6.0
        7 8.8 9.9
        10 11 12"""
        print "read from file"
        n = Matrix()
        n.read('m.txt')
        n.pprint()
        
        """prefix addition"""
        print "m+=n"
        m+=n
        m.pprint()

  7. #172
    L'Éléphant terrible Avatar von Gigaz
    Registriert seit
    28.11.06
    Ort
    Zuhause
    Beiträge
    13.229
    Zitat Zitat von ante Beitrag anzeigen
    Irgendwie sind deine Fragen immer nicht konkret genug. Womöglich hilft dir das Folgende;

    Relikte einer extrem ineffizienten Matrixklasse; Ansonsten schau dir mal NumPy an. Wenn du ein bisschen Numerik betreiben willst, ist das gar nicht so schlecht.

    Code:
    class Matrix:
        def __init__(self,dimX=0,dimY=0,value=0):
            self._dimX = dimX
            self._dimY = dimY
            self._data=[]
            for i in xrange(self._dimX):
                self._data.append([])
                for j in xrange(self._dimY):
                    self._data[i].append(float(value))
    
        def __getitem__(self,index):
            i,j = index
            if self._valid_idx(i,j):
                return self._data[i][j]
            else:
                raise KeyError
            
        def __setitem__(self,index,value):
            i,j = index
            if self._valid_idx(i,j):
                self._data[i][j] = value
            else:
                raise KeyError
            
        def _valid_idx(self,i,j):
            return i >= 0 or j>= 0 or i < self._dimX or j < self._dimY
    
        def pprint(self):
            import pprint #eher unueblich, module in funcs zu importieren
            pprint.pprint(self._data)
    
        def read(self,filename):
            buf = open(filename).readlines()
            self._data = []
            self._dimX = len(buf)
            self._dimY = len(buf[0].split())
            for line in buf:
                self._data.append([])
                self._data[-1].extend(map(float,line.split()))
                
        def __iadd__(self,m):
            if self._dimX != m._dimX or self._dimY != m._dimY:
                    raise TypeError
            for i in xrange(self._dimX):
                for j in xrange(self._dimY):
                    self._data[i][j]+=m[i,j]
            return self
            
    """der folgende code wird nur ausgefuehrt, wenn diese klasse direkt ausgefuehrt wird"""
    if __name__ == '__main__':
        N,M = 4,3
        init_value = 0
        m = Matrix(N,M,init_value)
        
        """schnell ausgabe"""
        m.pprint()
        
        """wert setzen"""
        m[1,2] = 2
        
        """lesender zugriff"""
        print "lese"
        for i in xrange(N): 
            for j in xrange(M):
                print m[i,j],
            print
        
        """lesen aus datei m.txt:
        1 2 3
        4.0 5.0 6.0
        7 8.8 9.9
        10 11 12"""
        print "read from file"
        n = Matrix()
        n.read('m.txt')
        n.pprint()
        
        """prefix addition"""
        print "m+=n"
        m+=n
        m.pprint()
    Ich hatte eigentlich gehofft, es gäbe Matrixfunktionen so wie man mit Arrays arbeiten kann
    Naja danke trotzdem.

  8. #173
    .
    Registriert seit
    28.09.06
    Beiträge
    16.132
    so etwas findest du bei python fast immer in libs. siehe NumPy oben.

  9. #174
    Magie ist entscheidend Avatar von magic66
    Registriert seit
    15.02.07
    Ort
    Das Dorf
    Beiträge
    1.394
    Zitat Zitat von Little Pritt Beitrag anzeigen
    Leute helft mir:
    Warum geht das nciht? Der Code soll folgendes machen: Die Einheit Mongol Herde soll wenn von der KI auf ein freies Feld gestellt werden, nur das macht sie nicht.

    PHP-Code:
        def AI_unitUpdate(self,argsList):
            
    pUnit argsList[0]
            
    Herde gc.getInfoTypeForString('UNIT_MONGOL_HERDE')
            
    pOwner pUnit.getOwner()
            if 
    pUnit.getUnitType() == Herde:
                
    iX pUnit.getX()
                
    iY pUnit.getY()
                
    oPlot CyMap().plot(iX,iY)
                if 
    oPlot.isCity():
                    for 
    iiX in range(iX-1iX+21):
                        for 
    iiY in range(iY-1iY+21):
                            
    pPlot CyMap().plot(iiX,iiY)
                            if 
    pPlot.getFeatureType() != gc.getInfoTypeForString('FEATURE_FOREST'):
                                if 
    pPlot.getFeatureType() != gc.getInfoTypeForString('FEATURE_JUNGLE'):
                                    if 
    not pPlot.isWater():
                                        if 
    pPlot.isOwned():
                                            if 
    pPlot.getOwner() == pOwner():
                                                
    pUnit.getGroup().pushMission(MissionTypes.MISSION_MOVE_TOpPlot.getX(), pPlot.getY(), 0FalseFalseMissionAITypes.NO_MISSIONAIpUnit.plot(), pUnit)
                                                return 
    true
                                                
    break
    #        if pUnit.getUnitType() == Herde:
    #            return true
            
    return False 
    Das "break" ist doch eigentlich unnötig, oder? Weil mit return wird doch schon die Schleife abgebrochen.

    Zu deiner Frage: Ich weiß nicht, was daran falsch sein soll. Hast du schon mal pushMoveToMission(x,y) probiert. (Keine Garantie - ich weiß nämlich nicht, was das bewirkt )
    Mit Anstand, Tugen und Manieren,-kannst du dich nie blamieren!!
    Wäre, wenn und aber ... CIV ist kein Spiel der Konjunktive!

  10. #175
    Registrierter Benutzer
    Registriert seit
    30.11.08
    Beiträge
    1.563
    @LittlePritt:

    iX = pUnit.getX()
    iY = pUnit.getY()

    CyUnit hat kein getX(), getY():

    iX = pUnit.plot().getX()
    iY = pUnit.plot().getY()

  11. #176
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525
    Doch eigentlich schon, darüber mekert er auch nicht.


    Edith hat den Fehler gefunden, hinter pOwner war ein ()
    Geändert von Little Pritt (25. April 2009 um 09:35 Uhr)

  12. #177
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Wie komme ich denn von einer Team-ID zu einer CyPlayer-Instanz?
    Sowas wie GetPlayers() gibt's für CyTeam ja nicht.
    Bin irgendwie zu blöd dazu .
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  13. #178
    o0
    Registriert seit
    22.06.08
    Ort
    Rheinhessen
    Beiträge
    525
    PHP-Code:
    for i in range (pTeam.getNumMembers()):
    pPlayer gc.getPlayer(i
    oder
    PHP-Code:
    pPlayer pTeam.getLeaderID() 

  14. #179
    paranoider Irrer Avatar von The_J
    Registriert seit
    07.08.07
    Ort
    verrat ich nicht
    Beiträge
    13.297
    Zitat Zitat von Little Pritt Beitrag anzeigen
    PHP-Code:
    for i in range (pTeam.getNumMembers()):
    pPlayer gc.getPlayer(i
    wenn das Team genau 1 Mitglied hat (also ganz normal, ohne Allianz, etc), dann liefert mir getNumMembers doch 0 zurück, über getPlayer(0) hab' ich dann aber automatisch den menschlichen Spieler, und nicht das Mitglied des Teams, oder?

    Zitat Zitat von Little Pritt Beitrag anzeigen
    oder
    PHP-Code:
    pPlayer pTeam.getLeaderID() 
    Und wenn's mehr als ein Mitglied gibt ?
    Zum Download bereit: Civ4-Mod "Mars, jetzt!"


    "Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )

    "Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)


  15. #180
    L'Éléphant terrible Avatar von Gigaz
    Registriert seit
    28.11.06
    Ort
    Zuhause
    Beiträge
    13.229
    Ich würde gern ein Unterprogramm schreiben, mit dem man eine Fläche in einem Koordinatensystem festlegen kann. Also bestenfalls so, dass man die Fläche zeichnet oder modelliert wie bei Paint und anschließend eine Funktion definieren kann, die auf der Fläche 1 ist und sonst überall 0.
    Weiß jemand, was ich da für Routinen brauche? Ich bin völlig planlos.

Seite 12 von 271 ErsteErste ... 289101112131415162262112 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •