Guten Abend zusammen,
ich programmier momentan ein Schiffeversenken als Schulprojekt. Das Projekt ist soweit fertig jedoch habe ich gestern Abend ein Video über Neuronale Netze gesehen und war sehr interessiert wie sowas funktioniert.
Nach einigen Stunden Videomaterial auf Youtube, habe ich das Prinzip verstanden jedoch möchte ich ein Neuronale Netz in mein Schiffeversenken einbauen bzw. als KI welche lernt Schiffe richtig und schnell zu setzten.
Und da häng ich momentan.
Ich hab völlig keine Ahnung wie ich das in mein Projekt einbauen soll.
Ich hab folgende Funktionen geschrieben welche mir das Leben erleichtern:
Funktion welche prüft ob sich das momentane Schiff in einem anderen befindet.
Spoiler anzeigen
Und eine Funktion welche mir ein null Wert zurück gibt sobald das Schiff im nächstem Schritt das Feld verlassen würde
Die beiden Funktionen bieten mir als Spieler keine Möglichkeit ein Schiff "ungültig" zu setzten..
Klar könnte ich bis zu mein Lebensende mit Randoms arbeiten, aber das ist ziemlich langweilig.
Vielen Dank schon mal im Voraus!!
ich programmier momentan ein Schiffeversenken als Schulprojekt. Das Projekt ist soweit fertig jedoch habe ich gestern Abend ein Video über Neuronale Netze gesehen und war sehr interessiert wie sowas funktioniert.
Nach einigen Stunden Videomaterial auf Youtube, habe ich das Prinzip verstanden jedoch möchte ich ein Neuronale Netz in mein Schiffeversenken einbauen bzw. als KI welche lernt Schiffe richtig und schnell zu setzten.
Und da häng ich momentan.
Ich hab völlig keine Ahnung wie ich das in mein Projekt einbauen soll.
Ich hab folgende Funktionen geschrieben welche mir das Leben erleichtern:
Funktion welche prüft ob sich das momentane Schiff in einem anderen befindet.
C#-Quellcode
- private bool insideShip(int shipLeft, int shipTop, bool shipRotate, Ship.ShipType shipType)
- {
- List<List<int>> allShips = new List<List<int>>();
- foreach (var ship in _ships)
- {
- for (int i = 0; i < (int)ship.Type; i++)
- {
- if (ship.rotate)
- {
- allShips.Add(new List<int> { ship.X, ship.Y + i });
- }
- else
- {
- allShips.Add(new List<int> { ship.X + i, ship.Y });
- }
- }
- }
- if (!shipRotate)
- {
- foreach (var ship in allShips)
- {
- for (int i = 0; i < (int)shipType; i++)
- {
- int s1 = ship[0];
- int s2 = ship[1];
- int d1 = shipLeft + i;
- int d2 = shipTop;
- if (d2 == s2 && s1 == d1)
- {
- return true;
- }
- }
- }
- }
- else
- {
- foreach (var ship in allShips)
- {
- for (int i = 0; i < (int)shipType; i++)
- {
- int s1 = ship[0];
- int s2 = ship[1];
- int d1 = shipLeft;
- int d2 = shipTop + i;
- if (d2 == s2 && s1 == d1)
- {
- return true;
- }
- }
- }
- }
- return false;
- }
Und eine Funktion welche mir ein null Wert zurück gibt sobald das Schiff im nächstem Schritt das Feld verlassen würde
Die beiden Funktionen bieten mir als Spieler keine Möglichkeit ein Schiff "ungültig" zu setzten..
Klar könnte ich bis zu mein Lebensende mit Randoms arbeiten, aber das ist ziemlich langweilig.
Vielen Dank schon mal im Voraus!!