Autor Beitrag
Demon
Hält's aus hier
Beiträge: 6

Win 2000 Pro
D6
BeitragVerfasst: Mi 02.03.05 17:35 
Hallo Leute, brauche Hilfe!
Kann mir einer helfen ein beliebiges Spiel zu programmieren? Muss das für die schule machen, hab aber im momment keinen plan. Sollte am besten ein mit ein oder zwei Spielquadraten sein!
So ne art Tetris, Memory, Schiffeversenken, Snake, Minesweaper, Mesch ärgere dich nicht oder ähnliches!
Bitte, bitte, brauche Hilfe!!!!
Danke!
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mi 02.03.05 17:39 
Zitat:
Sollte am besten ein mit ein oder zwei Spielquadraten sein!


Hae? Das wird bei Minesweeper aber öde ;-)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 02.03.05 17:39 
guck mal hier im forum, einige meiner aktuellen postings sind:

3 In A Row

und

Snake <- kommt bestimmt gut an !!!

Das wird dir sicherlich weiterhelfen :D

hier mal mein kompletter 3 In A Row Code:
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:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    MainMenu1: TMainMenu;
    Spiel1: TMenuItem;
    Neustart1: TMenuItem;
    N1: TMenuItem;
    Beenden1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure Image6Click(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure Image8Click(Sender: TObject);
    procedure Image9Click(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure Neustart1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  player, Check: boolean; //Spieler unterscheiden
  map: array of array of integer; //Zuordnungsarray
  able: array[1..9] of boolean; //Array zum (de)aktivieren einzelner Felder

implementation

{$R *.dfm}

function HCheck(Player: integer): boolean; //Prüfen ob 3 gleiche Scheiben horizontal in einer Reihe sind
begin
  result:= false;
  if player > 0 then begin
    if (map[0,0] = player) and (map[0,1] = player) and (map[0,2] = player) then result:= true;
    if (map[1,0] = player) and (map[1,1] = player) and (map[1,2] = player) then result:= true;
    if (map[2,0] = player) and (map[2,1] = player) and (map[2,2] = player) then result:= true;
  end;
end;

function VCheck(Player: integer): boolean; //Prüfen ob 3 gleiche Scheiben vertikal in einer Reihe sind
begin
  result:= false;
  if player > 0 then begin
    if (map[0,0] = player) and (map[1,0] = player) and (map[2,0] = player) then result:= true;
    if (map[0,1] = player) and (map[1,1] = player) and (map[2,1] = player) then result:= true;
    if (map[0,2] = player) and (map[1,2] = player) and (map[2,2] = player) then result:= true;
  end;
end;

function DCheck(Player: integer): boolean; //Prüfen ob 3 gleiche Scheiben diagonal in einer Reihe sind
begin
  result:= false;
  if player > 0 then begin
    if (map[0,0] = player) and (map[1,1] = player) and (map[2,2] = player) then result:= true;
    if (map[0,2] = player) and (map[1,1] = player) and (map[2,0] = player) then result:= true;
  end;
end;

function Draw: boolean; //Ein Unentschieden prüfen
var
  x,y,r: integer;
begin
  result:= false;
  r:= 0;
  for x:= 0 to 2 do for y:= 0 to 2 do r:= r + map[x,y]; //Alle Werte zusammenzählen (Spieler1: 1, Spieler2: 2)
  if r >= 13 then result:= true; //Wenn alle Felder belegt sind ist der minimalwert 13 (5 * 1 + 4 * 2) [weil Spieler1 immer anfängt]
end;

procedure WinCheck(Player: integer); //Prüfen ob die Bedingungen erfüllt wurden, oder ob es ein Unentschieden gibt
var
  Win: boolean;
  i: integer;
begin
  if check = true then begin //Prüfen ob nicht schon gewonnen wurde
    Win:= false;
    if win = false then Win:= HCheck(Player); //Horizontaler Check
    if win = false then Win:= VCheck(Player); //Vertikaler Check
    if win = false then Win:= DCheck(Player); //Diagonaler Check
    if Win = true then begin //Wenn gewonnen wurde ...
      check:= false; //Nicht mehr prüfen
      for i:= 1 to 9 do
        able[i]:= false; //Felder deaktivieren
      showmessage('Spieler ' + inttostr(player) + ' hat gewonnen!'); //"Spieler 1/2 hat gewonnen" anzeigen
    end;
    if (win = false) and (Draw = true) then begin //Ein unentschieden prüfen, falls noch nicht gewonnen wurde
      check:= false; //Nicht mehr prüfen
      showmessage('Unentschieden!'); //Unentschieden
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject); //Restart aufrufen und Map initialisieren
begin
  setlength(map,3,3); //Spielfeldgröße festlegen
  Neustart1Click(self); //Spiel initianisieren (siehe Neustart1Click)
end;

procedure TForm1.Image1Click(Sender: TObject); //Bild wurde geklickt
begin
  if able[1] = true then begin //Wenn das Feld aktiviert ist ...
    if player = true then map[0,0]:= 1 else map[0,0]:= 2; //Abfragen welcher Spieler an der Reihe ist und das Feld mit seinem Wert beschreiben
    player:= not player; //Der andere Apieler ist nächstes Mal an der Reihe
    if map[0,0] = 1 then with image1.Canvas do begin //Wenn das Feld Spieler 1 gehört ...
      brush.Color:= clred;
        ellipse(0,0,image1.Width,image1.Height); //Roten Kreis auf das Feld zeichnen
    end;
    if map[0,0] = 2 then with image1.Canvas do begin //Wenn das Felder Spieler 2 gehört ...
      brush.Color:= clblue;
      ellipse(0,0,image1.Width,image1.Height); //Blauen Kreis auf das Feld zeichnen
    end;
    able[1]:= false; //Das Feld deaktivieren
  end;
  case not player of //Den Spieler ermitteln, der den letzten Spielzug getätigt hat
  true: WinCheck(1); //Wenn Spieler 1 den letzten Zug hatte, prüfen ob er gewonnen hat
  false: WinCheck(2); //Wenn Spieler 2 den letzten Zug hatte, prüfen ob er gewonnen hat
  end;
end;

procedure TForm1.Image2Click(Sender: TObject);
begin
  if able[2] = true then begin
    if player = true then map[0,1]:= 1 else map[0,1]:= 2;
    player:= not player;
    if map[0,1] = 1 then with image2.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image2.Width,image2.Height);
    end;
    if map[0,1] = 2 then with image2.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image2.Width,image2.Height);
    end;
    able[2]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image3Click(Sender: TObject);
begin
  if able[3] = true then begin
    if player = true then map[0,2]:= 1 else map[0,2]:= 2;
    player:= not player;
    if map[0,2] = 1 then with image3.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image3.Width,image3.Height);
    end;
    if map[0,2] = 2 then with image3.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image3.Width,image3.Height);
    end;
    able[3]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image4Click(Sender: TObject);
begin
  if able[4] = true then begin
    if player = true then map[1,0]:= 1 else map[1,0]:= 2;
    player:= not player;
    if map[1,0] = 1 then with image4.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image4.Width,image4.Height);
    end;
    if map[1,0] = 2 then with image4.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image4.Width,image4.Height);
    end;
    able[4]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image5Click(Sender: TObject);
begin
  if able[5] = true then begin
    if player = true then map[1,1]:= 1 else map[1,1]:= 2;
    player:= not player;
    if map[1,1] = 1 then with image5.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image5.Width,image5.Height);
    end;
    if map[1,1] = 2 then with image5.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image5.Width,image5.Height);
    end;
    able[5]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image6Click(Sender: TObject);
begin
  if able[6] = true then begin
    if player = true then map[1,2]:= 1 else map[1,2]:= 2;
    player:= not player;
    if map[1,2] = 1 then with image6.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image6.Width,image6.Height);
    end;
    if map[1,2] = 2 then with image6.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image6.Width,image6.Height);
    end;
    able[6]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image7Click(Sender: TObject);
begin
  if able[7] = true then begin
    if player = true then map[2,0]:= 1 else map[2,0]:= 2;
    player:= not player;
    if map[2,0] = 1 then with image7.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image7.Width,image7.Height);
    end;
    if map[2,0] = 2 then with image7.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image7.Width,image7.Height);
    end;
    able[7]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image8Click(Sender: TObject);
begin
  if able[8] = true then begin
    if player = true then map[2,1]:= 1 else map[2,1]:= 2;
    player:= not player;
    if map[2,1] = 1 then with image8.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image8.Width,image8.Height);
   end;
    if map[2,1] = 2 then with image8.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image8.Width,image8.Height);
    end;
    able[8]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Image9Click(Sender: TObject);
begin
  if able[9] = true then begin
    if player = true then map[2,2]:= 1 else map[2,2]:= 2;
    player:= not player;
    if map[2,2] = 1 then with image9.Canvas do begin
      brush.Color:= clred;
      ellipse(0,0,image9.Width,image9.Height);
    end;
    if map[2,2] = 2 then with image9.Canvas do begin
      brush.Color:= clblue;
      ellipse(0,0,image9.Width,image9.Height);
    end;
    able[9]:= false;
  end;
  case not player of
  true: WinCheck(1);
  false: WinCheck(2);
  end;
end;

procedure TForm1.Beenden1Click(Sender: TObject); //Beenden wurde geklickt
begin
  application.terminate; //Programm beenden
end;

procedure TForm1.Neustart1Click(Sender: TObject); //Neustart wurde geklickt, alles wieder zurücksetzen
var
  PMap : TComponent;
  i, j, k: integer;
begin
  player:= true; //Spieler = Spieler Nr 1
  Check:= true;
  for j:= 0 to 2 do
    for k:= 0 to 2 do
      map[j,k]:= 0; //Die Map leeren
    for i:= 1 to 9 do begin
      able[i]:= true; //Die Felder zum klicken freigeben
      PMap := FindComponent('image'+IntToStr(i)); //Image Komponenten suchen
      if PMap <> nil then with Timage(Pmap).Canvas do begin
        brush.color:= clwhite;
        rectangle(0,0,Timage(Pmap).width,Timage(Pmap).width); //Image Komponeten mit einem weißen Quadrat füllen
      end;
    end;
end;

end.
Demon Threadstarter
Hält's aus hier
Beiträge: 6

Win 2000 Pro
D6
BeitragVerfasst: Do 03.03.05 09:31 
Danke für die antwort! werd mir das mal angucken! Hast du vielleicht ein fertiges Spiel, was du mir rüberschicken kannst? Muss morgen schon abgeben, hatte aber nen virus der mir die ganze platte geschrottet hat!
(dima_cs-master@web.de)

DANKE!

Ps: bin auch über andere Vorschläge froh!
HariboHunter
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 49

Win Xp pro
Delphi 7 pro
BeitragVerfasst: Do 03.03.05 09:46 
Wenn ich Mod- wäre, würde ich das ganze jetzt in das Job - Topic verschieben und den Kerl zahlen lassen.
MANN DA STEHT DER KOMPLETTE CODE!
Was willst Du denn noch?
Sollen wir dir vieleicht noch beim Kauen helfen?
Ist schon schlimm genug das sich überhaupt Leute finden die noch bei Hausaufgaben helfen.
Demon soll schließlich was lernen!
Wenn er zum Abgabetermin nix hat weil er zu dumm oder zu faul ist, dann hilft ihm diese Erfahrung sicherlich mehr, als wenn er einen guten Quelltext präsentiert und nichtmal in der Lage ist, die nötigen Komponenten einzufügen und das ganze durch den Compiler zu jagen. Diese Hausaufgabe bestand ja wahrscheinlich nicht darin, sich in einem beliebigen Themen-Forum anzumelden und Leute mit den ihm selbst gestellten, einfachen Aufgaben aufzuhalten.
Ps: Es fliegen in den Projekten genug fertige, kleine Spiele mit Quelltext rum. Such Dir da was raus.

edit 1 : Zuviel Counter-strike fügt ihnen und ihren ungeborenen Kindern schwere Schäden zu!

edit 2 : 123456..7.....8..........9 ... ok, bin wieder ruhig.

_________________
Viel von Nix, ist auch nix!
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.03.05 10:27 
@fear: hoffe du hast ihm das Spiel nicht vollständig geschickt.

Demon hat folgendes geschrieben:
hatte aber nen virus der mir die ganze platte geschrottet hat!


lol, wenn das stimmt, dann könntest du dir mit der Ausrede einen späteren Termin für die Abgabe des Spiels holen. Aber, wenn du das schon sagst, heißt das für mich, du hattest vorher schon angefangen, hast jetzt aber deine Daten verloren. Aber in deinem ersten Post haste nach einer Idee gefragt, also hattest du noch nichmal angefangen.

Demon hat folgendes geschrieben:
Ps: bin auch über andere Vorschläge froh!


Wähl Informatik ab, wenns nicht Pflicht ist. :lol:
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 03.03.05 14:52 
er soll sich den code angucken und daraus lernen, kopieren wäre natürlich ****** !!!
(deshalb auch all die kommentare)
Das würde ich mir merken und er würde von mir bestimmt keine Hilfe mehr erfahren.
Der Code ist Free den kann sich ja jeder holen, sonst hätte ich ihn ja nicht gepostet,
wenn er den code nicht erklären kann oder zu dumm ist ihn zu benutzen, muss er sich vor seinem Lehrer rechtfertigen, ist nicht mein problem, was mit dem code passiert.
Demon Threadstarter
Hält's aus hier
Beiträge: 6

Win 2000 Pro
D6
BeitragVerfasst: Do 03.03.05 17:13 
könntet ihr mir nochmals helfen? und zwar, wie lautet der Programmtext bei schiffe versenken, wenn ich als anfangs spieler die schiffe makieren möchte? das ich die erst beliebig setzten kann und die dann beim starten des spiels verdeckt werden mit einem anderen spielquadrat? Schaffe es einfach nicht
danke schon mal im vorraus :cry:
Demon Threadstarter
Hält's aus hier
Beiträge: 6

Win 2000 Pro
D6
BeitragVerfasst: Do 03.03.05 17:22 
was soll das eigentlich,dass ihr mich hier so runter zieht??? ihr habt vor ladies auch keinen respekt mehr oder? vor lauter pc keine freundin oder was? ich habe euch lediglich um hilfe gebeten, da ich echt in der klemme war! und was macht ihr? ich will euch mal sehen wenn ihr nicht mehr weiter wisst und euch keiner mehr hilft? außer im internet HÖFLICH zu fragen bleibt mir nun mal nichts anderes übrig, ich bin nicht mit dem talent zu programmieren auf die welt gekommen! ich habe diesen kurs gewählt, damit ich mal lerne mit pc's umzugehen, war halt n fehler von ...kanns auch nicht mehr rückgängig machen....!!!!
aber wenn ihr schon so in euren pc vernarrt seid und nicht in der lage seid mir zu helfen oder auch anderen, kann ich ich auch nichts mehr machen! ich habe euch nichts gaten oder euch in keinster weise beleidigt!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :cry:
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 03.03.05 17:29 
Mein Vorschlag: Tic Tac Toe. Das ist in 10 Minuten programmiert :) (ist das dasselbe wie 3 in a row :gruebel:)
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 03.03.05 17:32 
@demon: ist mein code denn keine hilfe ? :cry:

@delfiphan: mein code ist tictactoe :D (edit: ja genau :wink: )
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 03.03.05 17:42 
Ich würde dir schon helfen, ein sehr simples Tic Tac Toe selbst zu programmieren. Ohne grosse Grafik und drumherum.
So in folgendem Stil halt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
[         ]  [         ]  [         ]  
[ Button1 ]  [ Button2 ]  [ Button3 ]
[         ]  [         ]  [         ]  

[         ]  [         ]  [         ]  
[ Button4 ]  [ Button5 ]  [ Button6 ]
[         ]  [         ]  [         ]  

[         ]  [         ]  [         ]  
[ Button7 ]  [ Button8 ]  [ Button9 ]
[         ]  [         ]  [         ]

Die Beschriftung der Buttons wird dann auf X oder O geändert, wenn drauf geklickt wird, usw..
Ist nur ein Vorschlag. Die anderen Games wären wohl alle aufwändiger zu programmieren.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 03.03.05 18:07 
Das hier hilft dir vielleicht weiter. Ist vielleicht einfacher zu verstehen als ein vollständiges Game mit schöner Grafik und so weiter.
Einfach 9 Knöpfe auf das Form platzieren, denen dann die Tags von 0 bis 8 vergeben. Dann alle OnClicks der Buttons zur Prozedur "ButtonClick". Und fertig :) Den Code wirst du schon verstehen, wenn du es dir ein bisschen anguckst.
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:
Const
 // alle Gewinnmöglichkeiten:
 Gewinn : array[1..8,1..3] of Integer = ((0,1,2),(3,4,5),(6,7,8), // Horizontal
                                         (0,3,6),(1,4,7),(2,5,8), // Vertikal
                                         (0,4,8),(2,4,6)); // Diagonal
Type
 Feld = (Unbelegt, Kreuz, Kreis); // Die Felder können diese Belegung haben
Var
 Spielfeld : Array[0..8] of Feld; // Unser Spielfeld: Von 0 bis 8 nummeriert
 Spieler1 : Boolean;
procedure TForm1.ButtonClick(Sender: TObject);
Var
 I : Integer;
 KreuzGewinnt, KreisGewinnt : Boolean;
begin
 with TButton(Sender) do
 begin
  if Spielfeld[Tag] = unbelegt then // Das Spielfeld ist noch unbelegt
  begin
   if Spieler1 then // Spieler 1 ist an der Reihe
   begin
    Spielfeld[Tag] := Kreuz; // Feld mit einem Kreuz belegen
    Caption := 'X'; // Button umbenennen
   end else
   begin
    Spielfeld[Tag] := Kreis; // Feld mit einem Kreis belegen
    Caption := 'O'; // Button umbenennen
   end;
   Spieler1 := not Spieler1; // Spielerwechsel...
  end else // Das Spielfeld ist schon belegt
   ShowMessage('Dieses Feld kann nicht mehr belegt werden!');
  KreuzGewinnt := False;
  KreisGewinnt := False;
  For I := 1 to 8 do // Finde heraus, ob jemand gewonnen hat
  begin
   KreuzGewinnt := KreuzGewinnt or ((Spielfeld[Gewinn[I,1]]=Kreuz)and
                                    (Spielfeld[Gewinn[I,2]]=Kreuz)and
                                    (Spielfeld[Gewinn[I,3]]=Kreuz));
   KreisGewinnt := KreisGewinnt or ((Spielfeld[Gewinn[I,1]]=Kreis)and
                                    (Spielfeld[Gewinn[I,2]]=Kreis)and
                                    (Spielfeld[Gewinn[I,3]]=Kreis));
  end;
  if KreuzGewinnt then ShowMessage('Gratulation, Kreuz Gewinnt!');
  if KreisGewinnt then ShowMessage('Gratulation, Kreis Gewinnt!');
 end;
end;

//Edit: Kommentare hinzugefügt


Zuletzt bearbeitet von delfiphan am Do 03.03.05 18:14, insgesamt 1-mal bearbeitet
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 03.03.05 18:10 
nicht schlecht, aber mein code ist auch net übel :)
habe die prozeduren ausgelagert damit de 9 einzelnen nicht so lang werden.

Der Code ist zwar leicht zu verstehen aber ein paar kommentare mehr, wären auch net schlecht :D

und in deinem code gibts glaube ich kein unentschieden und wenn die siegbedingung 2 mal erfüllt wird, gehts auch net :?

@demon: du beleidigst uns, nur weil der eine oder andere hier vielleicht mehr ahnung hat, heißt das lange nicht, dass wir nichts besseres zu tun hätten als den ganzen tag vorm pc zu hocken !
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 03.03.05 18:21 
@F34r0fTh3D4rk: Stimmt, wenn am Schluss keiner gewonnen hat, kommt keine Meldung. Aber das ist schon gut so, er soll ruhig selbst noch was machen. Ein Resetknopf fehlt auch.
Ist eben nur ein Grundgerüst. :) Aber offenbar ist er ja nicht mehr hier... :\
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 03.03.05 18:22 
ja ok aber er hat ja meinen code ... :lol: da steht alles drinne :D
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.03.05 18:39 
F34r0fTh3D4rk hat folgendes geschrieben:
nicht schlecht, aber mein code ist auch net übel :)


also ich fand deinen Code im Vergleich ganz schön übel :?

delfiphan hat folgendes geschrieben:
Aber offenbar ist er ja nicht mehr hier...


Ich dachte, das wäre eine sie?

@demon: Du solltest nicht erwarten, dass wir hellsehen können und uns deiner Situation bewusst sind. :wink:
Jetzt dürftest du mit einem geringen Anteil Eigeninitiative dein Spiel bis morgen fertig bekommen.

Mfg
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 03.03.05 18:41 
aus welchem grund ?

zu faul zum lesen oder wie ?
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.03.05 18:45 
F34r0fTh3D4rk hat folgendes geschrieben:
aus welchem grund ?
zu faul zum lesen oder wie ?


aus welchem grund was? und wer ist zu faul zum lesen?
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 03.03.05 18:48 
warum findest du den code schlecht, weil er zu lang ist ?
nimm den anderen code * 9 und dann isser noch länger !