Hallo!
Ich hab im Informatikunterricht als Projekt 4 gewinnt programmiert!
Das Programm ist soweit funktionstüctig, udn Gewinnabfrage etc. funktioniert alles.
Nur bei meiner Punkteanzeige (also so oft, wie der Spieler gewonnen hat) hat ein kleines Problem...
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: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| function TForm1.gewinner:string; var i, j : byte; begin help := ' ';
for j := 1 to 6 do begin for i := 1 to 4 do begin if (gewinn[i, j] = 'a') and (gewinn[i + 1, j] = 'a') and (gewinn[i + 2, j] = 'a') and (gewinn[i + 3, j] = 'a') then begin help := 'a'; spieler := 'Spieler 1'; inc(scoreb); end else if (gewinn[i, j] = 'b') and (gewinn[i + 1, j] = 'b') and (gewinn[i + 2, j] = 'b') and (gewinn[i + 3, j] = 'b') then begin help := 'b'; spieler := 'Spieler 2'; inc(scoreb); end; end; end;
for i := 1 to 7 do begin for j := 1 to 3 do begin if (gewinn[i, j] = 'a') and (gewinn[i, j + 1] = 'a') and (gewinn[i, j + 2] = 'a') and (gewinn[i, j + 3] = 'a') then begin help := 'a'; spieler := 'Spieler 1'; inc(scorea); end else if (gewinn[i, j] = 'b') and (gewinn[i, j + 1] = 'b') and (gewinn[i, j + 2] = 'b') and (gewinn[i, j + 3] = 'b') then begin help := 'b'; spieler := 'Spieler 2'; inc(scoreb); end; end; end; |
das array gewinn ist dabei mein 2 dimensionales array, das ich zur gewinnabfrage nutze...
scorea und scoreb sind jeweils für spieler 1 und spieler 2, doch wird scoreb bei einem sieg immer doppelt inkrementiert, kann mir jemand von euch sagen warum? ich hab schon versucht etwas zu ändern, doch kam immer wieder der gleiche Fehler, und nun da ich einmal das Zeug reinprogrammiert habe, möchte ich ihn auch nur ungern wieder entfernen^^
Ich hoffe jemand von euch kann mir helfen!
LG
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt