![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Newbie
![]() Registriert seit: 13.07.2008
Alter: 34
Beiträge: 2
|
![]() 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 if a=' ' then begin end else begin n:=n+20; end; end else begin if a=' ' then begin m:=m+20; end else begin if q=a then begin m:=m+5; n:=n+5; end else begin m:=m+10; n:=n+10; end; end; end; end; 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? ![]() 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 ![]() 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 ![]() |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() |
![]() Verwende aussagekräftige Variablennamen, dann lässt sich hier vielleicht auch was machen
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#3 |
Newbie
![]() Registriert seit: 11.03.2004
Beiträge: 4
|
![]() 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 |
![]() |
![]() |
![]() |
#4 |
Jr. Member
![]() |
![]() Für 2 Fälle sollte außerdem kein Case verwendet werden.
____________________________________
All the buzzt. Logic is futile. ![]() \"Der freie Fall ist nicht weiter schlimm - die Landung ist es.\" |
![]() |
![]() |
![]() |
#5 |
Newbie
![]() Registriert seit: 14.07.2008
Alter: 49
Beiträge: 1
|
![]() 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 if (q<>'') then begin m:=m+5; n:=n+5; end; {Wenn die Eingaben beider Spieler gleich sind und nicht leer sind dann bekommt jeder Spieler 5 Punkte} if (q<>a) then begin {Wenn die Eingaben unterschiedlich sind, dann...} if (q='') then n:=n+20; {wenn Spieler 1 nichts eingibt bekommt Spieler2 20 Punkte} if (a='') then m:=m+20; {wenn Spieler 2 nichts eingibt bekommt Spieler1 20 Punkte} if ((q<>'') and (a<>'')) then begin m:=m+10; n:=n+10; end; {wenn beide Spieler etwas eingegeben haben bekommen beide 10 Punkte} end; ![]() SuperDef |
![]() |
![]() |
![]() |
#6 | |
Newbie
![]() Registriert seit: 13.07.2008
Alter: 34
Beiträge: 2
|
![]() 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!! |
|
![]() |
![]() |
![]() |
#7 |
Schwarzfußfrettchen
![]() Registriert seit: 28.01.2001
Beiträge: 2.071
|
![]() 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.
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\" http://www.dream.at/gizmo/bunny.gif Image is © 2001 Merle Sterndalsäg.. ähh... jäger ![]() |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|