BBoard stellt seinen Betrieb ein, Details hier
www.meckerwiese.de.vu
Forum für den Programmierwettbewerb 2007
 

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Tasks


Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    www.meckerwiese.de.vu Foren-Übersicht -> Fragen zum Wettbewerb
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Senior Sanchez
Forumsjunki




Anmeldungsdatum: 07.02.2007
Beiträge: 61

BeitragVerfasst am: 12.02.2007, 13:40    Titel: Tasks Antworten mit Zitat

Hi,

Könnte nochmal jemand die Geschichte mit den unterschiedlichen Tasks erklären? Ich blicke das irgendwie gar nicht, finde es sehr verwirrend beschrieben.

Also Tasks sind ja die zu lösenden Aufgaben. TaskSheepCollect ist doch im Grunde immer die Aufgabe die man erfüllen muss: Ich soll bestimmte Schafe in einem Kreis sammeln.

Eine TaskList ist jetzt wiederum eine Liste die aus lauter TaskSheepCollects besteht, die ich erfüllen muss. Dabei kann es sein, dass ich diese TaskSheepCollects entweder seriell oder parallel ausführen muss.

Und eine TaskCompetition ist dann jetzt genau was?!

Wenns jemand erklären sollte, dann bitte mit anderen Worten als die, die auf der Homepage bzw. inner Präsi benutzt wurden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Micha
Neuling




Anmeldungsdatum: 07.02.2007
Beiträge: 9

BeitragVerfasst am: 13.02.2007, 15:32    Titel: Antworten mit Zitat

also die TaskCompetition enthält nen TaskArray (also meist mehrere TaskList) in dem dann an der Stelle t die Task für Team t drin sind. Den Array gibbet per getTasks() als clone.

Ne TaskList ist nen Vector<Task> das heisst die kann nicht nur TaskSheepCollect enthalten sondern auch weitere TaskList. Und sie hat nen boolean-Atribut parallel, wenn sie nicht parallel ist kann man per getCurrentTask() das Task kriegen ansonsten musss man per getTaskList() den Vector abfragen und selber auseinandernehmen.
Wenn ne TaskList Parallel ist sind die Unterlisten aber nicht zwangsläufig parallel, könnte aber auch eher nen Fehler des MapEditors sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez
Forumsjunki




Anmeldungsdatum: 07.02.2007
Beiträge: 61

BeitragVerfasst am: 13.02.2007, 16:21    Titel: Antworten mit Zitat

Jetzt wird die ganze Sache doch gleich mal klarer.

Ich habe mir, wie man vllt merkt, die konkrete Implementierung des Schafspiels noch gar nicht angeschaut, aber quasi nochmal zum Verständnis.

Es findet an sich immer eine TaskCompetition statt die für jedes Team eine entsprechende TaskList enthält. Einzelaufgaben, also wo ich nur direkt eine TaskList bekomme und gegen keine weiteren Gegner antrete, gibt es nicht, richtig?

Ansonsten bekomme ich halt direkt TaskSheepCollects oder Listen von eben diesen, die ich dann entweder parallel oder seriell, abarbeiten muss.


Wenns so ist, habe ich die Sache dann wohl verstanden.
Das man so etwas aber nicht mal wirklich genauer in der Dokumentation findet, finde ich etwas ungünstig.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Micha
Neuling




Anmeldungsdatum: 07.02.2007
Beiträge: 9

BeitragVerfasst am: 14.02.2007, 13:57    Titel: Antworten mit Zitat

Ich glaub bei neuen Karten sollte das so sein, alte haben glaub ich aber noch ne TaskList als Wurzel. Müsste sich mal ein Dev zu äußern ^^.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
zet
Forumsjunki




Anmeldungsdatum: 05.02.2007
Beiträge: 85

BeitragVerfasst am: 14.02.2007, 20:04    Titel: Antworten mit Zitat

Ja, die initialisierungskarte ist ohne TaskCompetition. Genau dieser Task wird aber für neu angelegte Karten IMMER in der Wurzel abgelegt und sonst nirgends. In dem befindet sich dann die Liste mit Tasks, wo jeder Eintrag einem Team zugehört.

Jeder Task hat eine Bedingung die erfüllt sein muß, damit das Programm diesen als gelöst betrachtet. Bei Sequentiellen listen muß dafür ein Task nach dem anderen gelöst werden, bei Paralellen müssen alle gleichzeitig gelöst sein, damit die Liste als gelöst gilt.

Dadurch ergeben sich mitunter sehr komplexe aufbauten, aber so kompliziert wirds nicht werden, ihr könnt damit rechnen, dass es für jedes Team nur eine sequentielle Liste gibt in der entweder die Schafsammelpunkte drinnen stehen oder Paralleltask Listen, welche wiederum NUR Sammelpunkte enthalten. Also z.B.

Code:

+ TaskCompetition
+--+ Team 1 Liste, sequentiell
|  +-- Sammelpunkt 1
|  +-- Sammelpunkt 2
|  +--+ Parallellists
|     +--Sammelpunkt 1
|     +--Sammelpunkt 2
|
+--+ Team 2 Liste, sequentiell
   +-- Sammelpunkt 1
   +-- Sammelpunkt 2
   +--+ Parallellists
      +--Sammelpunkt 1
      +--Sammelpunkt 2


Eure KI muss also nur zwei Situationen beherrschen: Einzelne Sammelpunkte ansteuern und mehrere Sammelpunkte gleichzeitig ansteuern.

Das sollte ansich nicht so kompliziert sein. Es dürfte auch nicht zu erwarten sein, dass eine Wettbewerbskarte mit einem Paralleltask mit mehr als 3 Sammelpunkte gleichzeitig da sein dürfte - also maximal ein Sammelpunkt pro Hund.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Basti
Neuling



Geschlecht: Geschlecht:männlich
Anmeldungsdatum: 16.02.2007
Beiträge: 16
Wohnort: Schönebeck

BeitragVerfasst am: 16.02.2007, 19:49    Titel: Antworten mit Zitat

Kann ich auch davon ausgehen, dass die "Team x Liste" deiner Auflistung immer eine serielle TaskList ist, oder kann die bereits parallel sein?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
zet
Forumsjunki




Anmeldungsdatum: 05.02.2007
Beiträge: 85

BeitragVerfasst am: 18.02.2007, 21:55    Titel: Antworten mit Zitat

Theoretisch ja - kann auch schon parallel sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast








BeitragVerfasst am: 05.03.2007, 19:25    Titel: think Task? Antworten mit Zitat

Was für ein Task ist denn der in der Think Methode übergebene?
Zitat:
public DogCommand think(Field f, Dog dog, Task task)

Ist das der TaskCompetition Task oder die Liste für das Team oder irgendein anderer?
Nach oben
zet
Forumsjunki




Anmeldungsdatum: 05.02.2007
Beiträge: 85

BeitragVerfasst am: 07.03.2007, 09:10    Titel: Antworten mit Zitat

ist der gleiche task wie der, den man mit field.getTask bekommt. Da man ohnehin den abrufen würde, übergeb ich den gleich als argument mit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Gast








BeitragVerfasst am: 16.03.2007, 20:44    Titel: Antworten mit Zitat

Gibt es Chancen, dass es zu einer Situation
Code:

- parallel
  -> seriell
    ->collect
    ->collect 
  -> collect
  -> collect

kommt? Oder ist so etwas definitiv ausgeschlossen (was bei der komplexität der Situation gut vorstellbar wäre)?[/code]
Nach oben
zet
Forumsjunki




Anmeldungsdatum: 05.02.2007
Beiträge: 85

BeitragVerfasst am: 17.03.2007, 12:54    Titel: Antworten mit Zitat

Nein, wir werden uns auf sowas beschränken:

Code:

seriell
  collect
  collect
  paralell
    collect
    collect


D.h. wenn euer Hund Paralelltasks und serielle Tasks kann, ist das kein Problem mehr.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Senior Sanchez
Forumsjunki




Anmeldungsdatum: 07.02.2007
Beiträge: 61

BeitragVerfasst am: 19.03.2007, 14:27    Titel: Antworten mit Zitat

Ich muss nochmal fragen:

Was ich dort bei think() oder bei field.getTask() übergeben bekomme ist IMMER eine Instanz von TaskCompetition, richtig?
Von dieser kann ich mir dann über den Index meine eigene Tasks holen und die parsen, korrekt?

Sämtliche Tasks sind auch von Anfang an verfügbar, richtig? Oder wird diese Liste dynamisch erweitert, wenn ein alter Task abgeschlossen ist und ein neuer hinzukommt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mike
Gast







BeitragVerfasst am: 20.03.2007, 03:43    Titel: Antworten mit Zitat

Hi,
wie kann ich denn z.B. auf Funktionen wie z.B.
getTaskList() (von app.logic.TaskList)
oder
getTasks() (von app.logic.TaskCompetition)
zugreifen?

Ich brauche doch eine Instanz der jeweiligen Klasse um diese Funktionen nutzen zu können oder?

(Ich bitte logische Fehler meinerseits zu entschuldigen und zu korrigieren,
bin was statische und nicht-statische Methoden und deren Nutzung/Zugriff angeht noch nicht auf nem ausreichenden Wissensstand)
Nach oben
Senior Sanchez
Forumsjunki




Anmeldungsdatum: 07.02.2007
Beiträge: 61

BeitragVerfasst am: 20.03.2007, 10:46    Titel: Antworten mit Zitat

Mike hat folgendes geschrieben:
Hi,
wie kann ich denn z.B. auf Funktionen wie z.B.
getTaskList() (von app.logic.TaskList)
oder
getTasks() (von app.logic.TaskCompetition)
zugreifen?

Ich brauche doch eine Instanz der jeweiligen Klasse um diese Funktionen nutzen zu können oder?

(Ich bitte logische Fehler meinerseits zu entschuldigen und zu korrigieren,
bin was statische und nicht-statische Methoden und deren Nutzung/Zugriff angeht noch nicht auf nem ausreichenden Wissensstand)


Du bekommst ja ein Task Objekt. Wenn du dir die Klassenhierarchie mal anschaust, wirst du feststellen, dass Task die Oberklasse von TaskSheepCollect, TaskList und TaskCompetition ist. Ergo kannst du, nachdem du am besten per instanceof die Zugehörigkeit zu einer der Klassen geprüft hast, das Task Objekt auf diese Klasse casten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
toster
Neuling



Geschlecht: Geschlecht:männlich
Anmeldungsdatum: 23.02.2007
Beiträge: 11
Wohnort: Magdeburg

BeitragVerfasst am: 24.03.2007, 21:11    Titel: Antworten mit Zitat

Wenn ich die Methode getCurrentTask(dog, task) aufrufe, bekomme ich dann immer entweder den aktuellen TaskSheepCollect oder eine parallele TaskList zurück?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    www.meckerwiese.de.vu Foren-Übersicht -> Fragen zum Wettbewerb Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.




Powered by phpBB 2.0.23 © 2001, 2002 phpBB Group

BBoard.de bietet Ihnen ein Kostenloses Forum mit zahlreichen tollen Features

Impressum | Datenschutz