| Autor |
Beitrag |
DonnieYen
Hält's aus hier
Beiträge: 7
|
Verfasst: So 07.02.10 18:33
Hallo,
habe nen kleines Würfelspiel geschrieben.
Dabei habe ich zwei globale Variablen deklariert.
Punkte1 für den Spieler und Punkte2 für den PC-Gegner.
Doch es tritt immer der Else Fall auf obwohl z.B. Punkte1 = 2 und Punkte2 = 0 sind.
Wo liegt hier der Fehlerteufel?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| if Punkte1 > Punkte2 then showmessage('Du hast gegen den bösen Rechner gewonnen!') else if Punkte1 < Punkte2 then showmessage('Du hast leider gegen den bösen Rechner verloren!') else if Punkte1 = Punkte2 then showmessage('Es steht Unentschieden zwischen dir und dem Rechner!')
end; |
Habe die If-Anweisung derselben Prozedur drinnen,in der auch die Würfel generiert werden.
Ist das vielleicht der Fehler?
Wo bzw. wie könnte ich die If Anweisung schöner verstecken/aktiviern lassen?
LG,
DonnieYen
PS.
Der in Sachen Delphi fleißig dazu lernt.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.02.10 18:45
|
|
DonnieYen 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 07.02.10 20:14
Hallo,
danke für deine Antwort.
Tatsächlich,den Variablen wird kein Wert zugewiesen.
Dabei ist es egal ob ich sie global oder lokal deklariere.
Muss wohl ein Denkfehler im Algorithmus sein.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if ((a=b) and (a=c) and (a=d) and (a=e)) or ((b=a) and (b=c) and (b=d) and (b=e)) or ((c=a) and (c=b) and (c=d) and (c=e)) or ((d=a) and (d=b) and (d=c) and (d=e)) or ((e=a) and (e=b) and (e=c) and (e=d)) then begin edSpieler1.Text:= 'Fünfling'; Punkte1:=7; end else if ... |
Es wird an dieser Stelle kein Wert zugewiesen.
Ich stehe irgendwie auf dem berühmten Schlauch.
Zuletzt bearbeitet von DonnieYen am So 07.02.10 20:15, insgesamt 1-mal bearbeitet
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: So 07.02.10 20:15
Haltepunkt setzen (F5) und gucken, was in den Variablen drin steht.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.02.10 20:19
|
|
DonnieYen 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 07.02.10 20:25
Ist mir grad selber aufgefallen,
habe den Fünfling als letztes eingebaut und wenn man vorher bei ner Straße alle Möglichkeiten durchgegangen ist dann hat man eine kleine Routine im Kopf.
Wenn ich statt der Variable "Punkte1" "z" verwende funktioniert es.
Dürfen also Variablen nicht lange Namen haben?
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.02.10 20:29
Das hört sich danach an als hättest du vergessen den Code in sinnvolle Teile zu unterteilen, so dass jetzt irgendwo deine Variable überschrieben wird ohne dass du es merkst...
Was passiert kann dir nur der Debugger sagen, wir ohne den restlichen Code nicht. Am Variablennamen selbst liegt es 100%ig nicht, nur an der Verwendung der Variable.
|
|
DonnieYen 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 07.02.10 20:51
Nachdem es beim Fünfling einzeln geklappt hat,
klappt es jetzt wieder nicht.
Entschuldigt - aber er ist für so ein primitives Ziel ziemlich lang und teilweise unnötig?
Gruß
Zuletzt bearbeitet von DonnieYen am So 07.02.10 21:48, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.02.10 20:56
Du setzt vor deiner if-Abfrage Punkte2 immer auf 0...
DonnieYen hat folgendes geschrieben : | | Entschuldigt - aber er ist für so ein primitives Ziel ziemlich lang und teilweise unnötig? |
Ja, extrem lang, das lässt sich sicher sehr sehr viel kürzer lösen.
|
|
DonnieYen 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 07.02.10 21:02
DANKE!
Ich habe die Verbundanweisung vergessen.
Ich glaube,ich muss mir beibringen,den Quelltext vorher Zeile für Zeile genau zu lesen,bevor ich hier mit sowas ankomme.
Danke!
Da machst du mich ganz neugierig.
Doch meine Kenntnisse sind eher bescheiden - wüsste jetzt auf Anhieb nicht,wie ich den Quelltext verkürzen sollte.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.02.10 21:08
Was bei dem sehr langen Quelltext natürlich auch nicht so leicht fällt... (also den Zeile für Zeile zu lesen)
Beispiel Straße: Eigentlich willst du nur wissen, ob a, b, c, d und e eine Permutation von 1 bis 5 bzw, 2 bis 6 enthalten. Das lässt sich in einem Bruchteil deines Codes lösen. Zum Beispiel mit einem Array statt 5 Variablen. Davon kannst du einfach eine sortierte Kopie erstellen und bist bereits quasi fertig. 
|
|
DonnieYen 
Hält's aus hier
Beiträge: 7
|
Verfasst: So 07.02.10 22:01
Tja,
Array,
bis dahin reicht mein Kenntnisstand noch nicht.
Aber ich werde mich einlesen,danke für den Tipp.
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: So 07.02.10 22:28
Hier empfiehlt sich der DELPHI CRASHKURS von TUFKAPL [Christian S.]
|
|