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

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

1

18.04.2003, 11:06

Mini-KI: Stärkstes Raumschiff benutzen.

Also ich hab nen code geschrieben der em Computer sagt was sein stärkstes Schiff ist und ihn dazu veranlasst damit anzugreifen.Doch wenn ich 2 Schiffe dieser Sorte in seinem Team habe(1 Team besteht aus maximal 4 Schiffen kann aber auch nur aus einem bestehen)
greift der Computer auch mit beiden an. er soll aber nur mit einem angreifen. hier der Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while(MyEnemy.Pactive == true)
{
 for(int e = 0;e < MyPlayer.NumofShips;e++)
{
if(MyEnemy.fleet [e].damage>=MyEnemy.maxdamage /MyPlayer.NumofShips)
{
MyPlayer.fleet[e].health -= MyEnemy.fleet[e].damage;
cout << MyPlayer.fleet[e]Type>name<< " wurde getroffen!" << endl;
            MyEnemy.Pactive = false;
            MyPlayer.Pactive = true;
        }else{
            continue;
        }
    }
}


Warum benutzt der PC 2 Schiffe ?
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

18.04.2003, 11:35

Du setzt ja nach dem Angriff:
MyEnemy.Pactive = false;

Wahrscheinlich denkst Du jetzt, dadurch würde die while-Schleife automatisch beendet. Wird sie aber nicht - denn da ist ja noch die for-Schleife und die läuft natürlich erst noch zuende durch, bevor die while-Schleife merkt, dass ihre Abbruchbedingung erfüllt ist.
Verlasse die for-Schleife nach dem Angriff mit "break;". Dadurch wird die while-Schleife dann auch überflüssig.

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

3

18.04.2003, 12:54

hab ich mir auch schon so gedacht da ich mir vorgestellt hab was der PC macht.
brauch ich die while schleife nun gar net mehr?


Gut läuft reibungslos :D
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

18.04.2003, 13:01

Ja, die Schleife ist überflüssig! Die for-Schleife läuft doch eh nur einmal durch, warum dann noch ein while drumherum?

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

5

18.04.2003, 14:02

Ich mach draus ein if.Am anfang des Programms wird per rand ermittelt wer startet ;).
Und ist der Stärkstes-Schiff-Ermitteln-code auch richtig?
oder würdest du das anders machen?
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

Werbeanzeige