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

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

11

15.06.2011, 21:57

so leute ich muss mich leider wieder zurückmelden mit einem erneuten problem.
Das ensteht dadurch, dass ich eine funktion habe, an die 2 gegner übergeben werden,
danach wird überprüft wo sich diese Spieler zueinander befinden, bis hierhin funktioniert auch nun alles.
Nun ist mein problem, dass ich die x und y koordinate manipuliere. Jedoch, da jeder Gegner einmal Gegner1 und einmal Gegner2
der funktion ist (da beide gegner diesen check durchführen müssen) passiert es, dass beide spieler die gleich manipulation erfahren und somit
meine ganze vermeidung nichts bringt, habt ihr villeicht vorschläge wie ich diesses problem vermeiden kann???

wäre sehr nett von euch, da ich nach eurer Kritik lange darüber gekrübelt habe.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

12

15.06.2011, 22:54

Du hast das natürliche Talent der Verschlüsselung von Sprache. Code?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

JRJ

Treue Seele

Beiträge: 113

Wohnort: Tirol

Beruf: Schüler

  • Private Nachricht senden

13

16.06.2011, 16:50

Er meint, wenn er jeden Spieler mit jedem vergleicht (z.B. zwei for-Schleifen), wird die Funktion zum Vergleichen einmal so:

C-/C++-Quelltext

1
vergleichen(Spieler[1], Spieler[2]); 

und einmal so:

C-/C++-Quelltext

1
vergleichen(Spieler[2], Spieler[1]);

aufgerufen.

Hoffentlich war das verständlicher. :huh:


Meine Lösung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
int i, j;
for(i=0; i<anzahlSpieler; i++)
{
    for(j=i; j<anzahlSpieler; j++)
    {
        if(i != j)
            vergleichen(Spieler[i], Spieler[j]);
    }
}


Dadurch wird jeder Spieler nur einmal mit jedem verglichen.

JRJ

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

14

16.06.2011, 19:22

Du sagst die x und y Werte werden manipuliert. Dann ist doch alles ok oder nicht? Dabei wird die Kollision doch aufgehoben. Davon gehe ich jetzt mal aus;) Ansonsten bin ich mir nicht sicher wie du deine Gegner speicherst. Wenn es ein Array oder eine Liste ist, kannst du es einfach lösen.
Vergleiche Gegner1 mit Gegner2, Gegner3, Gegner4 ......
Vergleiche Gegner2 mit Gegner3, Gegner 3, Gegner5....
Vergleiche Gegner3 mit Gegner4, Gegner5, Gegner6....
Und so weiter. So vergleichst du jeden nur einmal mit jedem.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

15

16.06.2011, 19:29

xD jo so war des gemeint xD sorry das ich keinen Code hatte fand es nicht so
schwer verständlich schreibe nur immer gerne sehr verschachtelt.
Danke für die antwort hört sich hilfreich und logisch an.
werde es bald mal ausprobieren, bin aber gerade mit Vektoren am schaffen,
da ich keine lust auf blöde arrays habe.

Werbeanzeige