locked
Arbeiten mit Koordinaten, geht das?

    Frage

  • Hallo,

    wollte mal eine eigene Klasse machen, namens Treffpunkt(in meinem namespace),wo sich erst mal alle Ameisen treffen(ob das Sinn macht, keine Ahnung, is auch egal hier). Ausserdem wollt ich mal ein bischen das Koordinatensystem erforschen. Also habe ich angefangen mit Code aus Insekt.Cs zu klauen:


     public class TreffPunkt : IKoordinate
        {
            public TreffPunkt()
            {
                Mykoordinate.X = 5;
               
            }
            /// <summary>
            /// Die Position des Treffpunkts
            /// </summary>
            public Koordinate Koordinate
            {
                get { return Mykoordinate; }
                internal set { Mykoordinate = value; }
            }

            /// <summary>
            /// Die Position des Treffpunkts
            /// </summary>
            protected Koordinate Mykoordinate;
        }//public class treffPunk : IKoordinate

    Das ganze führt zu dem Fehler:


    Fehler    1    "AntMe.Koordinate" enthält keine Definition für "X".   


    Warum? Das Insekt kann das doch auch? Gibt es da eine spezielle Rechtevergabe? Aber wie wird sowas realisiert? Wie könnte man eine A-Meise zu einem bestimmten Punkt laufen lassen?


     Danke Joe
    Sonntag, 26. November 2006 12:53

Alle Antworten

  • Hallo,

    Der Grund dafür, dass es X nicht gibt, liegt darin, dass die Sichtbarkeit auf internal gesetzt ist (siehe Koordinate.cs, Zeile 160). Das heißt, die X Eigenschaft kann nur innerhalb des Assemblies abgerufen/gesetzt werden.

    Warum das so gemacht wurde kann ich dir leider nicht sagen, außer das es in meinem Augen auch eigentlich keinen Sinn macht eine Ameise an eine beliebige Koordinate laufen zu lassen... Ansonsten können Wolfgang oder Tom sicher noch den Grund für diese Entscheidung posten.

    marco

    Sonntag, 26. November 2006 14:16
  • Diese Frage hab ich mir auch schon gestellt.
    Auch wenn ich es noch nicht ausprobiert habe, sollte folgendes klappen:
    Du hast zwar nicht die kartesischen Koordinaten gegeben, aber relativ zu einem Bezugspunkt (z.B. der Bau) hast du durch die Entfernung und Richtung Polarkoordinaten! Vielleicht sollten sich die Entwickler hierzu nochmal äußern. Ich denke es geht darum, dass eine Ameise in natura schließlich auch kein Koordinatenmodell besitzt.
    Da wir mit unseren virtuellen Ameisen aber eh schon über das natürliche Bewusstsein hinausgeschossen sind (globales wissen etc.), wäre es natürlich fair uns die Koordinaten auch direkt zur Verfügung zu stellen.
    voilá, kontroverse Diskussion
    Sonntag, 26. November 2006 14:47
  • Hi,

     genau internal bedeutet im assemblie, darum kann es das insekt und ich nicht.
    Tja, das ist so eine Info die liest man in einem buch und vergisst sie wieder.

    Dank Dir
    Sonntag, 26. November 2006 16:23
  • Hi,

    Polarkoodinaten, stimmt. Mensch die Mathevorlesung habe ich doch geschwänzt *g*.

    Egal, damit klappt es auch, ich dank dir.

    Was hast du mit " globalem Wissen" gemeint?

    Gruß Joe
    Sonntag, 26. November 2006 16:25
  • ich sag nur Stichwort static Variablen - es gibt hier schon einen Thread, der sich mit dem Thema befasst.

    Felix
    Sonntag, 26. November 2006 16:43
  • ...und was später durch verschiedene "Ligen" abgedeckt wird... also mit und ohne "gedächtnis".

    marco

    Sonntag, 26. November 2006 20:32
  • Hi,

    also es geht leider nicht mit den Polarkoordinaten, weil man hat zwar den Abstand zum Bau, jedoch nicht den Winkel. Die Richtung ist die Richtung in die die Ameise gehen wird, und nicht der Winkel zum Bau. Mit Koordinate.BestimmeRichtung() geht es auch net, da Bau als Objekt nicht vorhanden ist.

    Schade eigentlich, da gehen viele Möglichkeiten flöten.
    Dienstag, 28. November 2006 21:58
  • Hallo Alle,

    Also die Sache mit den Polarkoordinaten geht durchaus. Du kannst die Entfernung zum (nächsten) Bau bestimmen und den Winkel auch (durch die Richtung und den RestWinkel). Daraus kannst du dann auch relative kartesische Koordinaten bestimmen. Bin schon gespannt auf Ameisen mit Sinn für Orientierung ;-)

    Die Koordinaten sind absichtlich nicht auslesbar. Von Anfang an galt das Prinzip, daß eine Ameise dumm ist, und sich nichts merken kann und Entscheidungen in jeder Runde bzw. bei jedem Ereigniss neu trifft. Dem wiederspricht es, daß die Ameise über die Koordinate rausbekommen kann, wo sie sich befindet. Außerdem würde es die Sache viel zu einfach machen, wenn man sich einfach die Koordinaten z.B. vom gegnerischen Ameisenbau merken und mit einer Armee direkt dort hin gehen könnte.

    Für die kommenden Versionen werde ich das Arbeiten mit relativen Koordinaten ein wenig verbessern und optimieren. Z.B. kann die Bestimmung des Quadranten in dem sich ein Ziel Objekt relativ zu einer Ameise befindet dabei helfen, eine Fluchtrichtung zu planen (drehen kostet Zeit). Die Bezeichnungen Koordinate und IKoordinate gefallen mir auch nicht mehr allzu gut. Absolute Koordinaten möchte ich jedoch auch weiterhin nicht herausrücken.

    Viele Grüße,
    Wolfgang

    Mittwoch, 29. November 2006 22:20
  • Finde ich übrigens absolut richtig, die absoluten Koordinaten geheim zu halten!
    Allerdings würde mir schon wünschen, den Bau/die Baus (?Baue?) als Objekt wie Zucker, Obst, Käfer und alles andere auch zu haben.
    Damit könnte man die Entfernung zwischen einem Obst/Zucker und den Bau berechnen und feststellen, ob man z.B. bei einer ohnehin nötigen Müdigkeitsbaurückkehr noch am Obst/Zucker vorbeigehen kann...

    Ciao,
    Wolfram
    Sonntag, 3. Dezember 2006 11:58