# WoT



## tanja (2. Dez 2009)

hallo...
  Kennt jemad oder hat jemand was gehört vom spiel WoT (World of Tours)

   oder irgendein Link über das Spiel. Ich muss das Spiel mit Java programmieren..Das Problem ist, Ich weiss nichts über das Spiel. Also wie s gespielt wird:noe: habe schon gegoggelt, da kommt aber nichts raus fürs Spiel. 

             Dankää...


----------



## Evil-Devil (2. Dez 2009)

Hat euch euer Lehrer denn kein Infomaterial bereit gestellt? Kann doch nicht sein das man ohne Hintergrundwissen und ohne Google Suchergebnisse was schreiben soll.


----------



## Quaxli (2. Dez 2009)

Ein Link wäre auch schon mal was, da ich über Google nix finde. Könnte zwar auch an mir liegen, wäre aber trotzdem hilfreich. :bahnhof:


----------



## ARadauer (2. Dez 2009)

ich würd den lehrer nochmal fragen...


----------



## tanja (3. Dez 2009)

hallo.. meine kommilitionin hat was gefunden über das spiel..ist zwar nicht ausreichend, aber wenigstens habe ich grundkenntnis.
 Man muss hier unabhängig von den Vorüberlegunge einen Torling mit eigene Strategie implementieren...
. Hierzu sind nur geringe Java-Kenntnisse nötig. Eigentlich muss nur eine einzige Methode implementiert werden. 
Spielidee
Auf einer fernen Welt leben die Einwohner nicht auf runden Planeten sondern auf einem Torus. Die Oberfläche eines Torus kann man sich als ein Rechteck vorstellen. Wenn man über die Ränder hinausläuft, dann kommt man auf der anderen Seite wieder heraus (wie bei dem Handy-Spiel Snake). Das Spielfeld ist in Rechtecke geteilt und die Einwohner heißen natürlich Torlinge. 


Jeder Torling hat eine Stärke (power genannt), die er durch Essen von auf manchen Feldern herumliegender Nahrung erhöhen kann. Leider sind Torlinge sehr kurzsichtig, sie sehen daher nur den Inhalt der acht Felder um sie herum. Sie können also Nahrung erkennen, Freund von Feind unterscheiden, aber nicht sehen, wie stark er ist.
Das Leben in WoT ist hart und eng. Daher können keine zwei Torlinge auf einem Feld existieren. Wenn zwei oder mehr Torlinge auf ein Feld wollen, wird gekämpft und nur der Stärkste überlebt. 
Torlinge können sich aber auch teilen und dadurch verdoppeln. Dies dauert allerdings eine Weile (insgesamt 3 Runden) und kostet Stärke. Nach der Verdoppelung haben beide Torlinge nur noch die Hälfte plus 1 der Stärke des ursprüngliche Torlings. 




Spielziel: Auf dem Torus soll der eigene Torling-Clan alle anderen Torlinge verdrängen. (Bei Bedarf gilt: Falls nach einer festgelegten Anzahl von Runden kein Sieger feststeht, dann gewinnt der, der die meiste power (aufsummiert über alle seine Torlinge) hat.)



Es gibt viele Möglichkeiten einer Spielstrategie! Der Torling muss nicht deterministisch handeln (Stichwort: Random). Der Torling kann zusätzliche Zustände haben (außer der eigenen power). Die Torlinge könnten ein kollektives Gedächnis oder kollektive Zustände haben (Stichwort: static Variablen der Klasse).
Die Möglichkeiten sind also nahezu unbegrenzt


----------



## Quaxli (3. Dez 2009)

Klingt nach einem Konzept ähnlich wie Robocode ? Wikipedia.

Mußt/Willst Du jetzt das ganze Spiel realisieren oder sollst Du einen Torling programmieren, der eine bestimmte Strategie verfolgt? 
Für mich klingt das bis jetzt nach letzterem. Da wird Dir dann aber ohne konkrete zusätzliche Info und der API, die es für solche Spiele gibt kaum jemand helfen können.


----------



## tanja (3. Dez 2009)

Also ich muss fürs Spil ein Klassendiagram mit Methoden erstellen.. und Programmierte spiel sieht wie am bild aus,(siehe untere Link)

http://i46.tinypic.com/2zzssxc.jpg


----------



## faetzminator (3. Dez 2009)

Es ist "nicht schwer"... Ich hab (durch Glück?) mit so was ähnlichem SOI (die schweizer Informatikolympiade) damit gewonnen (Final: YouTube - ants @ SOI 08). Auf all Fälle: denk dir zuerst einmal eine Strategie aus, das Programmieren wird dann nicht mehr schwer sein.


----------



## tanja (4. Dez 2009)

hmm..gratuliere dich:applaus:
 Das Problem ist; ich weiss nicht wie man ein Klassendiagram erstellt. oder besser gesagt was ist ein Klassediagram überhaupt?:noe:


----------



## Evolver (4. Dez 2009)

Wer googln kann ist klar im Vorteil.  Bzw. reicht Wikipedia:

Unified Modeling Language ? Wikipedia

Klassendiagramm ? Wikipedia


----------



## tanja (4. Dez 2009)

hallo faetzminator... kannst die java-code deines spiels hier veröffentlichen?


----------



## faetzminator (6. Dez 2009)

Ich finde den Code gerade nicht. Und es war in C und nicht in Java geschrieben.


----------



## tanja (12. Dez 2009)

hallo leute es wurde ne neue seite veröffentlicht über WoT.
ich schick erst mal den link .. dort kann man sehen wie ein wot-spiel aussieht..
wenn Sie auf link klicken , da sehen sie an der linke konsole einige dinge..da klicken Sie bitte auf Wot.
da finden Sie auch 2 kleine folder mit dem namen Wot-engine und wot-editor zum download. die dateien brauchen zu wenige speicherplätze,also Sie können sie in paar sekunden downloaden. 
 wenn Sie die anleitun lesen, können Sie dann besser verstehen was Wot ist..
das problem ist was für ne strategie man sich über dieses spiel entwickeln.?
ich muss eine torlinge strategie mit dem wot.editor entwickel und diese mit wot-engine testen.für diesen torling aber kein user-code erlaubt also es muss mit wot.editor, also es muss nur mit wot-editor erzeugt werden. Mir ner anderen message werde ich noch einn torlinge code schicken. dieser torlinge ist aber ned so stark. also in einem zweier match muss mein eigener torlinge gegen dieser code gewinnen.
   hier ist erstmal der link, damit Sie wot-engine und wot-editor zu downloaden
Einfhrung in die Informatik III WS 2009/00, Universitt Stuttgart


----------



## tanja (12. Dez 2009)

und hier ist die coder des dummen torlinges:bae:

```
package Torlings;
import WorldofTorus.Action;
import WorldofTorus.Content;

//
// a reasonably good Torling made by BOTi
//
public class Torling0815 extends AbstractTorling {
    private int turn = 0;

    public Torling0815(int p) { super(p); }
    public AbstractTorling getNewInstance() {
	return new Torling0815(getPower());
    }

    public Action nextMove(Content[] viewing) {
	int enemys = 0;
	int friends = 0;
	turn++;
	double fightfactor = ((double)getPower()*(((double)turn/100.0)+1.0))/(double)turn;
	//if (turn > 160) fightfactor += 0.3;
	if (turn > 200 && getPower() > 120) return Action.BROOD;

	for (Content c : viewing)
	    if (c.equals(Content.ENEMY)) enemys++;
	for (Content c : viewing)
	    if (c.equals(Content.FRIEND)) friends++;
	
	if (enemys==0 && fightfactor > 1.0) return Action.BROOD;
	// eating
	if (viewing[0].equals(Content.FOOD)) return Action.NORTHEAST;
	if (viewing[1].equals(Content.FOOD)) return Action.EAST;	
	if (viewing[2].equals(Content.FOOD)) return Action.SOUTHEAST;	
	if (viewing[3].equals(Content.FOOD)) return Action.SOUTH;	
	if (viewing[4].equals(Content.FOOD)) return Action.SOUTHWEST;	
	if (viewing[5].equals(Content.FOOD)) return Action.WEST;	
	if (viewing[6].equals(Content.FOOD)) return Action.NORTHWEST;	
	if (viewing[7].equals(Content.FOOD)) return Action.NORTH;	
	//abhauen
	//if (enemys > 1 && getPower() < 5) return Action.DOUBLENORTH;	
	//fighting
	if (enemys > 0 && fightfactor > 1.0) {
	    if (viewing[0].equals(Content.ENEMY)) return Action.NORTHEAST;
	    if (viewing[1].equals(Content.ENEMY)) return Action.EAST;	
	    if (viewing[2].equals(Content.ENEMY)) return Action.SOUTHEAST;	
	    if (viewing[3].equals(Content.ENEMY)) return Action.SOUTH;	
	    if (viewing[4].equals(Content.ENEMY)) return Action.SOUTHWEST;	
	    if (viewing[5].equals(Content.ENEMY)) return Action.WEST;	
	    if (viewing[6].equals(Content.ENEMY)) return Action.NORTHWEST;	
	    if (viewing[7].equals(Content.ENEMY)) return Action.NORTH;	    
	}
	//merging
	if (friends > 0 && fightfactor < 0.4) {
	    if (viewing[0].equals(Content.FRIEND)) return Action.NORTHEAST;
	    if (viewing[1].equals(Content.FRIEND)) return Action.EAST;	
	    if (viewing[2].equals(Content.FRIEND)) return Action.SOUTHEAST;	
	    if (viewing[3].equals(Content.FRIEND)) return Action.SOUTH;	
	    if (viewing[4].equals(Content.FRIEND)) return Action.SOUTHWEST;	
	    if (viewing[5].equals(Content.FRIEND)) return Action.WEST;	
	    if (viewing[6].equals(Content.FRIEND)) return Action.NORTHWEST;	
	    if (viewing[7].equals(Content.FRIEND)) return Action.NORTH;    
	}
	return Action.SOUTH;		
    }
}
```


----------



## Boti_D (12. Dez 2009)

so funktioniert das also. nicht selber nachdenken (nicht selber google benutzen wollen/können), sondern sich die aufgaben von anderen machen lassen? würde zu gerne wissen wer du bist 

jetzt was konstruktives:
wenn du nicht komplett selber nachdenken willst, dann löse die aufgabe so:
benutze den editor und übertrage einfach die aktionen des 0815 torlings (somit hast du einen gleichstarken). danach baue noch ein paar mehr fallunterscheidungen ein und schon hast du einen besseren.


----------



## tanja (12. Dez 2009)

die aufgabe werde ich natürlich selber  bearbeiten. ich bräuchte nur eine strategie oder ne orientierung wie ichs lösen kann.

danke trotzdem für deinn tipps.


----------



## tanja (12. Dez 2009)

und wie übertrage ich die actionen auf WoT-editor..??


----------



## frapo (12. Dez 2009)

tanja hat gesagt.:


> und wie übertrage ich die actionen auf WoT-editor..??



Hm.. woher soll einer hier im Forum wissen, welche Vereinbarungen bei euch in der Vorlesung getroffen wurden? Steht unter Einfhrung in die Informatik III WS 2009/00, Universitt Stuttgart(Rubrik WoT) nichts darüber? Wenn das nicht fruchtet könntest du mal einen Dozenten oder Mitstudenten fragen, wie die Tools zu benutzen sind, die in eurer Vorlesung benutzt werden.

Bei solchen Fragen "Was ist ein Klassendiagramm?", oder bei Problemen Google benutzen bzw. wenn es um spezielle universitäre Dinge geht, relevante Foren der Uni nicht zu benutzen, möchte ich hoffen das du nicht Inf oder WiInf studierst.. sorry.

Viel Erfolg dennoch, vorallem bei der Verbesserung von Arbeits- und Recherchetechniken.

Gruß
frapo


----------



## tanja (14. Dez 2009)

Hallo ich habe nen torlinge erstellt., gwinnt auch gegen dumme torlinge... zwar ist er ned so stark aber naja es geht schon.

```
package Torlings;

import java.util.*;
import WorldofTorus.Action;
import WorldofTorus.Content;
public class ClanofMinorlingsCoM2508924 extends AbstractTorling {
	public ClanofMinorlingsCoM2508924(int p) {
		super(p);
	}
	public AbstractTorling getNewInstance() {
		return new ClanofMinorlingsCoM2508924(getPower());
	}
	public Action nextMove(Content[] viewing) {
		if(viewing[0] == Content.FOOD || viewing[1] == Content.FOOD || viewing[2] == Content.FOOD || viewing[3] == Content.FOOD || viewing[4] == Content.FOOD || viewing[5] == Content.FOOD || viewing[6] == Content.FOOD || viewing[7] == Content.FOOD) {
			if(viewing[1] == Content.FOOD || viewing[3] == Content.FOOD || viewing[5] == Content.FOOD || viewing[7] == Content.FOOD) {
				if(viewing[3] == Content.FOOD || viewing[7] == Content.FOOD) {
					if(viewing[3] == Content.FOOD) {
						return Action.SOUTH;
					} else {
						return Action.NORTH;
					}
				} else {
					if(viewing[5] == Content.FOOD) {
						return Action.WEST;
					} else {
						return Action.EAST;
					}
				}
			} else {
				if(viewing[0] == Content.FOOD || viewing[6] == Content.FOOD) {
					if(viewing[6] == Content.FOOD) {
						return Action.NORTHWEST;
					} else {
						return Action.NORTHEAST;
					}
				} else {
					if(viewing[4] == Content.FOOD) {
						return Action.SOUTHWEST;
					} else {
						return Action.SOUTHEAST;
					}
				}
			}
		} else {
			if(viewing[0] == Content.ENEMY || viewing[1] == Content.ENEMY || viewing[2] == Content.ENEMY || viewing[3] == Content.ENEMY || viewing[4] == Content.ENEMY || viewing[5] == Content.ENEMY || viewing[6] == Content.ENEMY || viewing[7] == Content.ENEMY) {
				if(viewing[1] == Content.ENEMY || viewing[3] == Content.ENEMY || viewing[5] == Content.ENEMY || viewing[7] == Content.ENEMY) {
					if(viewing[3] == Content.ENEMY || viewing[7] == Content.ENEMY) {
						if(viewing[7] == Content.ENEMY) {
							return Action.NORTH;
						} else {
							return Action.SOUTH;
						}
					} else {
						if(viewing[5] == Content.ENEMY) {
							return Action.WEST;
						} else {
							return Action.EAST;
						}
					}
				} else {
					if(viewing[0] == Content.ENEMY && viewing[2] == Content.ENEMY && viewing[4] == Content.ENEMY && viewing[6] == Content.ENEMY) {
						return Action.IDLE;
					} else {
						if(viewing[0] == Content.ENEMY && viewing[6] == Content.ENEMY) {
							return Action.SOUTH;
						} else {
							if(viewing[2] == Content.ENEMY && viewing[4] == Content.ENEMY) {
								return Action.NORTH;
							} else {
								if(viewing[4] == Content.ENEMY && viewing[6] == Content.ENEMY) {
									return Action.EAST;
								} else {
									if(viewing[0] == Content.ENEMY && viewing[2] == Content.ENEMY) {
										return Action.WEST;
									} else {
										if(viewing[4] == Content.ENEMY || viewing[6] == Content.ENEMY) {
											return Action.WEST;
										} else {
											return Action.EAST;
										}
									}
								}
							}
						}
					}
				}
			} else {
				if(viewing[1] == Content.FRIEND && viewing[5] == Content.FRIEND) {
					if(viewing[3] == Content.FRIEND) {
						return Action.NORTH;
					} else {
						return Action.SOUTH;
					}
				} else {
					return Action.BROOD;
				}
			}
		}
	}
}
```


----------

