![]() |
borland pascal problem =D
hallo leute,
ich hab da ein kleines problem, ich bin noch anfänger im programmieren allgemein und wollte mal ein stadt-land-fluss game in borland pascal schreiben, der berechnet die ergebnisse nämlich nicht so wie ich es will =), der folgende code beinhaltet die berechnung der punktzahl beider spieler bei einer disziplin ,z.B. Stadt. Code:
case q of ' ': begin es handelt sich ja um eine case anweisung mit 2 grundmöglichkeiten, die erste ist wenn Spieler 1 nichts eingegeben hat [' '], die folge hab ich verzweigt nämlich wenn Spieler 2 auch nichts eingeben hat passiert gar nichts, also werden keine punkte vergeben, tritt der andere Fall ein, dass Spieler 2 etwas geschrieben hat bekommt er 20 Punkte (so is das doch bei Stadt Land Fluss oder? http://forum.chip.de/images/smilies/wink.gif ) jetzt sind wir schon bei 2 grundmöglichkeit der case verzweigung , das else bedeutet ja, dass Spieler was geschrieben hat, die folge is dann auch wieder verzweigt, nämlich wenn dann Spieler 2 nix geschieben hat kriegt er 20 punkte, andernfalls (wenn beide was geschrieben haben) dann 1. wenn die wörter gleich sind bekommt jeder 5 punkte; 2. wenn sie sich unterscheiden 10 punkte. nach diesem system hab ich auch alle anderen disziplinen (Land, Fluss,...) ausrechnen lassen so das wars der erläuterung die ihr wahrscheinlich sowieso nicht braucht http://forum.chip.de/images/smilies/bw_smilies/2.gif aber trotzdem zeigt das program bei jedem spielvorgang 60 punkte für beide Spieler an :/ kann mir irgendwer helfen und mir tipps geben, is zwar jetzt kein weltbewegendes problem aber wär trotzdem nett http://forum.chip.de/images/smilies/wink.gif |
Verwende aussagekräftige Variablennamen, dann lässt sich hier vielleicht auch was machen
pong |
laß mal die unnötigen begin und ends weg. Dann wirds übersichtlicher
z.B: case q of ' ' : if a <> ' ' then n:=n+20; else ..... usw |
Für 2 Fälle sollte außerdem kein Case verwendet werden.
|
Hallo Mr.Spock,
ich versuche mal, dir weiterzuhelfen. Wenn ich das richtig deute verwendest du folgende Variablen: q -> Eingabe Spieler 1 -> Typ: string(?) a -> Eingabe Spieler 2 -> Typ: string(?) m -> Punkte Spieler 1 -> Typ: word (?) n -> Punkte Spieler 2 -> Typ: word (?) dann könnte dein Programm so aussehen: Code:
if (q=a) then SuperDef |
Hallo SuperDef,
zunächst einmal vielen Dank für deine Hilfe, dein Programvorschlag hat geklappt!! :) Zitat:
Aber trotzdem würde ich gerne wissen, warum das bei mir nicht ging, lag es daran, das man für die Unterscheidung von 2 Fällen nicht case nehmen sollte, wie CornedBee es gesagt hat? Außerdem musste ich dort die Eingaben der beiden Spieler als Char definieren, weil er bei string eine Fehlermeldung ausspukte, vielleicht lags daran. Zu allen Überfluss hab ich eben bermerkt, dass ich an einer anderen Stelle des Programs die Variablen der beiden Spieler vertauscht hab xD Naja jetzt hab ich es ja richtig, also nochmals vielen dank an alle!! |
m, n, a, q...
Ein Tip von mir: Benenne Variablen möglichst eindeutig. Also z.B. strSpieler_1_Input strSpieler_2_Input intSpieler_1_Punkte intSpieler_2_Punkte Dann kennst dich auch noch in 6 Monaten aus was was is. Mag zwar mehr Tipparbeit sein aber es lohnt sich. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag