Will euch hier mal etwas vorstellen, dass ich in der downtime von vb-x entdeckt habe.
Nennt sich Antme! und dreht sich im Grunde darum, ein Ameisenvolk so zu programmieren, dass es auf verschiedene Ereignisse reagiert.
Es gibt Objekte wie Äpfel und Zucker zum einsammeln und feindliche Käfer die man bekämpfen kann.
Beides führt zu Punkten, wobei man natürlich soviel wie möglich erreichen sollte.
Das ganze gibt es für C#, VB.Net und bald auch für C++.
Ich hab mich für C# entschieden und bin auch ziemlich begeistert.
Ist VB6 bzw. Delphi sehr ähnlich und stellt für mich kein Großes Problem dar damit zu arbeiten.
Mein Ameisenvolk, die "Starship TroopAnts" unter der Führung von "General James T. Morgan" kommt nun schon auf stolze 10.-11.000 Punkte.
Und das ohne Schnickschnak wie "Globales Gedächtnis" oder ähnlichem, was echte Ameisen ja eigentlich nicht haben.
Also rein über Duftmarken usw.
Würde mich freuen wenn ich es euch schmackhaft machen konnte.
Evt. machen wir vielleicht ne Challenge daraus.
Für Fragen steh ich euch auch zur Verfügung, wobei ich selbst noch nicht lange damit zu tun habe.
mfg, ZiG _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
nicht schlecht werds mir mal bei gelegenheit zu gemüte führen. _________________
Jolo_ Coder
Anmeldedatum: 20.03.2007 Beiträge: 210
Verfasst am: 06.02.2008, 11:18
Sieht sehr nice aus
Ich denke ich werd das mal ausprobiern ^^
MfG Jolo
Rausch_ Poster
Anmeldedatum: 03.11.2007 Beiträge: 164
Verfasst am: 06.02.2008, 13:08
hey das sieht sehr interresant aus, werde ich auch mal ausprobieren.
schade nur das man C#,ober VB.net benuzen muss.
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 06.02.2008, 13:57
Find ich eigentlich nicht so schade. Man hat durch die Videotuts einen recht leichten Einstieg in eine andere Sprache und C# ist wirklich ziemlich einfach.
VB.Net sicher genauso. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Rausch_ Poster
Anmeldedatum: 03.11.2007 Beiträge: 164
Verfasst am: 06.02.2008, 18:47
mhmm ich hätte da mal ne frage, also wie misst man den dann welches volk am besten ist? in dem tutorial sagt er es währen 100 ameisen, aber bei mir sterben mehr als 100(das spiel hört nie auf) und bei ihm bekommt er auch punkte abgezogen wenn ameisen sterben, ist bei mir nicht so.
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 06.02.2008, 19:07
Die Simulation hört normal nach 4500 Runden auf.
Das sind glaube ich 5 Minuten.
Man kann das ganze aber auch im Schnelldurchlauf machen.
Einfach bei "Konstante Bildwiederholrate" den Haken rausmachen.
Und 100 Ameisen aufeinmal in der Simulation ist das Maximum.
Sobald eine Stirbt wird eine neue erstellt.
Nur kostet das natürlich Zeit.
Ich glaube jede Runde kann eine erstellt werden.
Wenn also viele sterben wird es auch lange dauern bis wieder alle erstellt sind.
Und Punkte werden einem glaube ich nur abgezogen falls die Ameisen durch Erschöpfung sterben. Also bei Käferangriffen nicht.
Ist aber glaube ich erst seit der neuen Version so.
Und lasst euch nicht von sehr hohen Punkten verwirren.
Es gab mal einen Bug mit dem man sehr viele Punkte machen konnte.
Das wurde aber schon gefixt.
Außerdem gibt es noch so Sachen wie Globales Gedächtnis, was aber schon ein großer Eingriff ins Programm ist und nicht mehr viel mit echten Ameisen zu tun hat. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Rausch_ Poster
Anmeldedatum: 03.11.2007 Beiträge: 164
Verfasst am: 07.02.2008, 12:30
so also ich hab noch ein paar mehr probleme:
-wie kann ich variablen erzeugen deren wert länger als eine runde gespeichert wird(ich benuze C#), z.b. die entfernung vom aktuellen zuckerberg zum bau, den wenn bei mir ein zuckerberg leer ist rennen die ameisen einfach weiter bis sie vor erschöpfung sterben.
-wenn ich 2 verschiedene typen habe, z.b. sammler und kämpfer, wei bekomm ich das dann hin das unterschiedlicher code ausgeführt wird, also wenn die sammler ameise zucker sieht soll sie ihn hohlen, wenn die kämpferameise zucker sieht soll sie ihn nur markieren
-wie bekomme ich raus was meine ameise gerade trägt, den meine apfel-träger denken sie haben zucker und schicken ameisen zum zuckerberg der gar nicht existiert.
-was macht meine ameise wieder fit, bevor sie vor erschöpfung stirbt?
meine ameisen bekommen so zwischen 6000-7000 punkte
Teyhouse_ Poster
Anmeldedatum: 11.02.2007 Beiträge: 100
Verfasst am: 07.02.2008, 13:09
Kleine Frage: Ist es in Vb.net Möglich das Pfadpfinding zu beeinflussen?
Mfg.
Teyhouse
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 07.02.2008, 13:17
1.
Variablen kannst du hier deklarieren:
Code:
public static void Initialisiere() {
}
Es gibt für die Ameisen auch einen Event "Wartet".
Also falls kein Zucker mehr da ist, einfach zum Bau zurückschicken oder in eine andere Richtung laufen lassen etc.
2.
Typ abfragen kannst du so:
Code:
if (Typ == "sammler")
{
}
3.
Weiß nicht ob man direkt abfragen kann was genau getragen wird.
Evt. kann man es übers Gewicht machen.
Code:
AktuelleLast
Aber ich denke das kannst du einfach lösen über die Funktion:
Code:
BrauchtnochTräger
Die gibts ja nur fürs Obst. Falls also keine Träger gebraucht werden, dann halt keine Signale aussenden.
4.
Ich glaube nur in den Bau zurückkehren.
Edit//
@Teyhouse
Man kann so gut wie alles ändern.
Du mußt dir nur den Source beschaffen und dich auskennen.
Im Forum wird auch recht viel besprochen.
Globales Gedächtnis, GPS usw.
Also einfach mal umsehen. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Rausch_ Poster
Anmeldedatum: 03.11.2007 Beiträge: 164
Verfasst am: 07.02.2008, 13:39
Code:
public static void Initialisiere() {
int EntfernungZucker;
}
Dann müßten die eigentlich global deklariert sein. Jedenfalls mach ich es so bei einem anderen Prog.
Im Code von Antme! steht bei "Initialisiere" halt das man da seine Variablen deklarieren kann, aber probiert hab ichs nicht.
Ähm, bei deiner zweiten Frage hast du dich wohl vertan.
Du schickst die Ameise eigentlich bevor sie zum Zucker gegangen ist schonwieder zum Bau zurück. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Rausch_ Poster
Anmeldedatum: 03.11.2007 Beiträge: 164
Verfasst am: 07.02.2008, 14:50
erstmal danke für die ganzen antworten.
da ich mit Koordinate.BestimmeEntfernung die entfernung vom bau zum zucker
bestimmen mag und den bau allerdings nicht als objekt finde, schicke ich die ameise zurück zum bau, den dann ist ja in Ziel der bau, dann messe ich die entfernung, und schicke die ameise zum zucker, ohne das eine runde vergeht, daher geht die ameise keinen schritt richtung bau.
das funktioniert zwar schon, aber es wäre besser wenn ich den bau als objekt hätte.
mfg
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 07.02.2008, 14:59
Gibt im Forum dazu auch Themen.
Also Abstand zwischen Zucker und Bau bestimmen usw.
Anmeldedatum: 17.12.2007 Beiträge: 315 Wohnort: Private Class _ Villa()
Verfasst am: 24.02.2008, 01:24
So ich habe das ganze dann nun auch einmal angeschnitten
Ich arbeite in dem Projekt in VB.NET für denn Fall das jemand Fragen haben sollte bzgl. VB.NET . _________________ Avoid Suspicion, Manipulate your friends, Eliminate your enemies.