Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

1

22.07.2009, 21:14

#12: "Sternmanöver", Spezial, 23.08.2009

#12: "Sternmanöver"
Typ: Spezial
Deadline: 23.08.2009
Abgabe: helmut4242 [at] web (pünktchen) de

Bitte beachten:
- Ablauf und Regeln
- Die KI muss deterministisch sein (bei gleichen Parametern jedes mal das gleiche Ergebnis)
- Keine statischen Variablen. Die sind aber auch nicht nötig, da ihr eine Klasse implementiert (ihr könnt Member anlegen)
- Keine Threads
- C++ Zugriffsschlüsselwörter private und const dürfen nicht umgangen werden


Aufgabenstellung:
Wir sind in einem Raumschiff in den tiefen Weiten des Weltalls. Doch wir sind nicht allein, ein dunkler Doppelgänger ist in Sicht. Zum Glück hat unser Raumschiff einige Raketen an Bord, mit denen man den von Grund auf bösen Doppelgänger sicher leicht abschießen kann. Dummerweise sind wir so nah an der Sonne, dass die Raketen abgelenkt werden. Wir müssen die Flugbahnen also präzise berechnen, denn wir haben nicht unendlich Raketen an Bord. Genaugenommen haben wir sogenannte Ökoraketen: Raketen, die nach der Detonation die eigenen Materialien wieder zurück in unser Schiff beamen und dort erneut abgeschossen werden können. Wir können also nur eine bestimmte Zahl an Raketen gleichzeitig ins All schicken.
Wie nicht anders zu erwarten ist unser Erzfeind aber so böse, dass er uns mit gefährlichen Raketen beschießt. Eine Detonation kann unser Schiff unmöglich aushalten, aber zum Glück haben wir einen Schubantrieb, mit dem wir den Raketen ausweichen können. Doch wer steuert das Schiff? Da kommen Sie in's Spiel Commander! Hier ist Ihr Bedienungsinterface:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
class Pilot
{
    virtual ~Pilot(){}
    virtual void Destroy() = 0;

    virtual const char* WhatIsYourNameCommander() const = 0;
    virtual int WhatDoYouWantToDoNow(const GameState& GS, int Me, int You) = 0;
    virtual void LetsStartANewGame() = 0;
};


GS gibt die präzisen Informationen unserer Umgebung wieder. Me gibt den Index des Schiffes an, das auf der guten Seite steht (wir). You ist der böse Erzfeind.
Der int-Rückgabewert ist Ihr Befehl: Eine Kombination von K_Forward, K_Left, K_Right und K_Shoot. Oder einfach nur 0. Ziemlich viele Kombinationen.. Aber Sie dürfen nicht zu lange überlegen! Das Gehirn baut unter so hektischen Bedingungen nämlich schnell ab, sobald Sie insgesamt länger als 5 Minuten gedacht haben, werden Sie so müde, dass Sie einfach einschlafen und das Raumschiff dem Feind ein leichtes Ziel wird!


(Link)


Ein Anfänger Pilot ist bereits implementiert, der den Gegner zielsicher trifft (und trotzdem nur paar Zeilen benötigt).
Für Windowsuser liegt eine VS Projektdatei bei. Linuxuser sehen sich Linux.txt an.
Bei der Auswertung wird jeder gegen jeden spielen. Genaueres sollte aus dem Quellcode ersichtlich sein.


Paket hier herunterladen (1MB)
Lohnt sich übrigens auch für die Nicht-Teilnehmer. Das Spiel macht auch Spaß, wenn man es selber steuert ;)
Steuerung:
Pfeiltasten Links/Rechts: Drehen
Pfeiltaste Oben: Gas geben
Leertaste: Schießen
+/- Schnelllauf an/aus

Und falls ihr jetzt denkt, dass so ne KI schwer zu programmieren ist, irrt ihr euch;) Schaut euch mal das Beispiel an, das ist kinderleicht und genausoleicht zu erweitern. Ich hoffe also mal, dass viele mitmachen.

Bei Fragen oder Problemen einfach hier melden ;)

Viel Spaß!
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

2

22.07.2009, 21:46

Der Contest ist doof. Da wird man als Linux User total ausgeschlossen.
Homepage: fkrauthan.de | Browser-game: flowergame.net

3

22.07.2009, 21:54

Hm, also die Idee klingt cool, aber das er Windowsonly ist, ist natürlich etwas, das nicht sein müsste.
Vielleicht mach ich da ja auch noch mit, mal sehen.
Lieber dumm fragen, als dumm bleiben!

Viktor

Alter Hase

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

4

22.07.2009, 22:19

Jetzt freut euch doch mal, dass sich jemand die Mühe gemacht hat...und wer es auf Linux machen will, kann es ja als Herausforderung nehmen und den Quellcode portieren.

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

5

22.07.2009, 22:21

Kann man damit auch gewinnen? Wenn man eine bessere Crossplatform Version hinbekommt?^^
Homepage: fkrauthan.de | Browser-game: flowergame.net

Viktor

Alter Hase

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

6

22.07.2009, 22:32

Ja, damit wirst du gewinnen ... Erfahrung, reicht das nicht?

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

7

22.07.2009, 22:40

nee erfahrung is doof ^^
Homepage: fkrauthan.de | Browser-game: flowergame.net

8

22.07.2009, 22:48

Sehr schön, so gefällt mir ein Contest.
Ich mach mich gleich dran zu schauen wie das funktioniert.

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

9

22.07.2009, 22:54

Ich finde des Contest auch äußerst reizvoll. Fahre nur leider sehr bald in den Urlaub. Da bleibt wenig Zeit, um die beste KI zu schreiben ;)

Atlan123

1x Contest-Sieger!

  • Private Nachricht senden

10

23.07.2009, 02:19

Super Helmut! Endlich mal wieder ein Contest! Danke dafür!

Hab mich gerade mal hingesetzt und ein paar Zeilen Code getippt. Und siehe da - die Referenz ist schon geschlagen *g*.
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." (Bjarne Stroustrup)

Werbeanzeige