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

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

21

04.04.2013, 16:29

Hab den Fehler nach langem Suchen endlich gefunden.
  1. Habe ich den Haltepunkt icht ans ende der If-Abfrage gesetzt sondern iergentwo in die mehrzeilige Abfrae
  2. Wird der die Variable die sagt ob der Schlüssel noch gezeichnet werden soll auf true gesetzt, so konnte ich das nicht mitbekommen
Und jetzt meine Frage:
Ich setzte die Variable Schluessel_1 auf false sobald ich mit dem Schlüssel kolidire, jetzt gibt es keinen weiteren Zuweisungsoporeiter trotzdem ist die Variable beim zeichnen wieder auf true kann man variablen auch noch anderes als über einen = einen Wert zuweisen?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

22

04.04.2013, 16:32

Übrigens solltest du Variablen wie deinen Level oder die Spielsteuerung nicht als Wert an eine Funktion übergeben, sondern als Referenz.
Sonst werden die Objekte jedes Mal kopiert und direkt danach wieder zerstört, und eventuelle Änderungen werden nicht auf dem Originalobjekt gemacht.

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

23

04.04.2013, 17:22

Danke :thumbsup:
Jetzt geht es endlich

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

24

05.04.2013, 17:26

Hi ich brauche noch einmal eure Hilfe, und zwar gibt es auch eine Kolision wenn die Variable Level.Schluessel_1 false ist obwohl sie true sein sollte. Genau so ist es bei der Schlüsselanzahl die ja größer oder gleich 1 sein muss, ist aber nur 0.
Wo liegt mein Fehler???

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Tür
                if (
                    // Ohren
                    ((FredX + 92  > Level.TuerX && FredX + 92  < Level.TuerX + Level.TuerB) && (FredY       > Level.TuerY && FredY      < Level.TuerY + Level.TuerH)) ||
                    // Ohr Seite
                    ((FredX + 54  > Level.TuerX && FredX + 54  < Level.TuerX + Level.TuerB) && (FredY + 33  > Level.TuerY && FredY + 33  < Level.TuerY + Level.TuerH)) ||
                    //Hände
                    ((FredX + 122 > Level.TuerX && FredX + 122 < Level.TuerX + Level.TuerB) && (FredY + 126 > Level.TuerY && FredY + 126 < Level.TuerY + Level.TuerH)) ||
                    // Füße
                    ((FredX + 106 > Level.TuerX && FredX + 106 < Level.TuerX + Level.TuerB) && (FredY + 200 > Level.TuerY && FredY + 200 < Level.TuerY + Level.TuerH)) ||
                    // Flamme
                    ((FredX     > Level.TuerX && FredX      < Level.TuerX + Level.TuerB) && (FredY + 200 > Level.TuerY && FredY + 200 < Level.TuerY + Level.TuerH)) ||
                    // Rakete
                    ((FredX + 30  > Level.TuerX && FredX + 30  < Level.TuerX + Level.TuerB) && (FredY + 91  > Level.TuerY && FredY + 91  < Level.TuerY + Level.TuerH)) ||
                    // Rakete Mitte
                    ((FredX + 24  > Level.TuerX && FredX + 24  < Level.TuerX + Level.TuerB) && (FredY + 128 > Level.TuerY && FredY + 128 < Level.TuerY + Level.TuerH)) &&
                    (Level.Schluessel_1 == false && Level.Schluessel_Anzahl >= 1)// Hier ist das Problem
                    )
                    {
                        Level.Schluessel_Anzahl = Level.Schluessel_Anzahl - 1;
                        Level.Schluessel_1 = UNSICHTBAR;
                        Steuerung.Spielstatus = LEVEL_2;
                        Steuerung.Löschen = LOESCHEN;
                        std::cout << "Tuer";
                    }

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

25

05.04.2013, 17:43

Jetzt benutz schon endlich den Debugger und trage in die Watch-List die kompletten logischen Ausdrücke ein, die Deiner Meinung nach keinen Sinn ergeben und voilà, er wird sehen.

Zudem macht der Satz: "gibt es auch eine Kolision wenn die Variable Level.Schluessel_1 false ist obwohl sie true sein sollte" in meinem Kopf keinen so rechten Sinn. Auch der Satz danach: "Genau so ist es bei der Schlüsselanzahl die ja größer oder gleich 1 sein muss, ist aber nur 0" ist für mich eher ein semantisches Rätsel.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

26

05.04.2013, 17:55

Mein Post wurde offensichtlich vehement ignoriert, also zitiere ich mich mal selbst:

Zitat

btw. Fred::FredKolision <- Finde den Fehler


PS: Versuch bitte mal in ordentlichem Deutsch zu schreiben.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

27

05.04.2013, 18:46

:D Genial. Du vergisst, dass wir deinen Code und deine Gedanken nicht lesen können. BlueCobold hat ja schon geschrieben, dass er sich unter deinen Aussagen nichts vorstellen kann. Und die Hilfe hat er dir auch gegeben. Das Stichwort Debugger ist ja schon mal gefallen. Wenn du dich damit nicht auseinandersetzen möchtest, dann solltest du aufhören und mit Fragen auf die nerven zu gehen. Faulen Entwicklern braucht man auch nicht zu helfen. Das ist Unsinn. Wenn du einfach Probleme damit hast den Debugger zu benutzen, dann kannst du ja konkrete Fragen dazu im Forum stellen. Wenn du einfach nicht weißt was wir damit meinen, dann solltest du erst mal lernen Google zu benutzen und dich ein wenig selbst durchzuwühlen. Wenn das nicht hilft, dann kann man immer noch im Forum fragen. Wer programmieren will, sollte das wohl noch so grad schaffen. Es wenigstens versuchen und dann lernen.
„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.“

MGBeginner

Frischling

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

28

05.04.2013, 20:02

Könnte man Kolision nicht gleich in den Filter für Rechtschreibfehler mit aufnehmen ?

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

29

05.04.2013, 23:12

Danke für eure Antworten. Um die Rechtschreibfehler und den Debugger werde ich mich kümmern, und noch einmal fragen warum meine If-Abfrage die letzte Zeile einfach ignoriert.

MGBeginner

Frischling

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

30

06.04.2013, 00:23

Warum sagst du, du kümmerst dich um debuggen und fragst dann trotzdem nochmal ? Mit Hilfe des Debuggers sollst du diesen Fehler doch selbst finden !

Der Fehler, welcher hier tatsächlich in der if-Abfrage und nicht in den Werten der Variablen steckt, ist eigentlich einfach zu beheben, du musst nur an 2 Stellen etwas einfügen, versuch aber erst, den Fehler mittels Debugger selbst zu finden, du sollst ja bei der Sache auch was lernen !

Und Schluessel_Anzahl brauchst du eigentlich auch nicht prüfen, dass gibt keinen Sinn, entweder du hast Schluessel_1 oder nicht ? Warum ist hier die Anzahl der Schlüssel noch wichtig ? Und wenn Schluessel_1 true wäre und Schluessel_Anzahl 0, dann stimmt da was grundsätzlich nicht. Oder ich interpretiere denn Sinn dieser 2 Variablen falsch. ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MGBeginner« (06.04.2013, 00:45)


Werbeanzeige