Autor Beitrag
Viergewinnt
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 07.03.08 22:42 
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...

ausblenden volle Höhe Delphi-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:
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;              //Gewinnabfrage
  var
  i, j : byte;                                //i steht für die Slots und j für die Reihen
 begin
 help := ' ';

     for j := 1 to 6 do                      // Waagerecht
       begin
        for i := 1 to 4 do
        begin
        if (gewinn[i, j] = 'a')             //Die Zählschleife durchläuft das Array und fragt die entsprechende Felder ab, und falls einer er Fälle eintritt, wird help auf 'a' oder 'b' gesetzt. Dann hat ein Spieler gewonnen!
         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                    // Vertikal
    begin
     for j := 1 to 3 do
       begin
         if (gewinn[i, j] = 'a')            //Bei der Vertikalen Abfrage läuft es ähnlich, wie bei der waagerechten ab
         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 user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
artelogic
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Fr 07.03.08 23:34 
ohne genau hinzuschauen: tippfehler!


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
     for j := 1 to 6 do                      // Waagerecht
       begin
        for i := 1 to 4 do
        begin
        if (gewinn[i, j] = 'a')             //Die Zählschleife durchläuft das Array und fragt die entsprechende Felder ab, und falls einer er Fälle eintritt, wird help auf 'a' oder 'b' gesetzt. Dann hat ein Spieler gewonnen!
         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);   <------------------------- DA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         end


Zuletzt bearbeitet von artelogic am Fr 07.03.08 23:40, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 07.03.08 23:39 
An beide: Könntet ihr bitte Delphi-Tags für euren Quelltext nutzen?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.