AW: Eine Projektarbeit
Lasst doch den armen Kerl in Ruhe :cry:
|
AW: Eine Projektarbeit
Wie viele unterschiedliche Probleme werden hier eigentlich gerade in diesem einen Thread behandelt? Ich habe etwas den Überblick verloren.
|
AW: Eine Projektarbeit
Zitat:
|
AW: Eine Projektarbeit
ehm ich habe mir das jetzt einfach mal nicht alles durch gelesen xD. Um den im Moment offensichtlich gereizten Beitragsuser ein wenig zu beruhigen ich lade dem nächst einfach mal unsere beiden Programme hoch dann dürft ihr kritik äußern und feinarbeit leisten ^^ wenn ihr wollt. Das Rätsel um unser schweigen ist indess ziemlich simpel um die Projektarbeit zu schaffen und vor allem selber zu verstehen habe ich angefangen info Nachhilfe zu nehmen (ich ist in dem Fall Felix). Die Programme laufen zwar noch nicht aber den bisherigen aufbau habe ich verstanden (sind jetzt bei der Siegesbedingung) trotzdem danke ich noch mal allen die sich zuvor so rege am threat beteiligt haben :)
|
AW: Eine Projektarbeit
Liste der Anhänge anzeigen (Anzahl: 1)
angehangene Datei enthält Lazarus Programm für Tic Tac toe.
Achtung das spiel ist unfertig und wird euch eine Fehlermeldung bei der Prozedur "Victory" ausspucken der Rest ist korrekt. Wer das was vom Spiel fertig ist also betrachten möchte muss einfach die // vor die Prozedur machen und kann sehen wie weit ich bin. Victory ist das einzige was soweit noch fehlt also die Siegesbedingung die steht noch im Pseudocode. Hoffe jetzt habe ich alle Infos gegeben. Knobel im Moment an der Siegesbedingung habe am Donnerstag wieder Nachhilfe würde aber gerne auch sofort weiter machen^^ Problem mir fehlt die Sprachkenntnis für die Siegesbedingung von TTT |
AW: Eine Projektarbeit
Das mit der Siegbedingung ist ja eh egal, da es bei ernsthaften TTT-Runden nie zu einem Gewinner kommen wird ;)
Sherlock |
AW: Eine Projektarbeit
Dabei geht es in der Spieleprogrammierung nicht. Man kann anhand von TTT aber die Basistechniken der Nullsummenspielemitvollständigerinformationprogram mierung sehr gut lernen.
Ein anderes gutes und einfaches Spiel ist das Bauernspiel, bei dem auf einem NxN brett jeweils N Bauern plaziert werden. Es gibt nur zwei Züge: Ein Feld nach vorne und ein Feld schräg nach vorne zum Schlagen (wenn da einer ist). Gewonnen hat der, der zuerst einen Bauern an die gegnerische Grundlinie bringt. Obersimpel, langweilig, aber hervorragend geeignet, um selbstlernende, genetische Programme zu schreiben, mit Spielbaum, Minimax und allem, was dazugehört. |
AW: Eine Projektarbeit
Du solltest in Zeile 37 die Procedure "Update" umbenennen, da sie nicht im geringsten etwas mit der Procedure "Update" zu tun hat, welche in der Klasse TForm deklariert ist.
Der Compiler gibt Dir auch die entsprechende Warnung aus:
Code:
unit1.pas(37,15) Warning: An inherited method is hidden by "TForm1.Update(LongInt,LongInt,TImage);"
|
AW: Eine Projektarbeit
noch eine Kleinigkeit:
Delphi-Quellcode:
Was soll denn in der Button1Click-Procedure an der markierten Stelle geschehen, ausser dass das Feld[0,0] jedesmal 0 zugewiesen bekommt???
for i:= 0 to 2 do begin
for j:= 0 to 2 do begin Feld[x,y]:=0; // Hier ??? end; end; |
AW: Eine Projektarbeit
Zitat:
Wenn man Eueren bisherigen Quellcode einmal zugrundelegt, dann könnte dies so aussehen:
Delphi-Quellcode:
Ein paar Kleinigkeiten zu Orignal habe ich auch mal geändert.
unit Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image8: TImage; Image9: TImage; Label1: TLabel; procedure Button1Click(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); private { private declarations } FSpielerX: Boolean; Feld: Array[0..2,0..2] of Variant; procedure UpdateFeld(AX,AY: Integer; AImage: TImage); function CheckVictory(AX,AY: Integer; ASpieler: Boolean): Boolean; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var I,J: Integer; begin Image1.Enabled := true; Image2.Enabled := true; Image3.Enabled := true; Image4.Enabled := true; Image5.Enabled := true; Image6.Enabled := true; Image7.Enabled := true; Image8.Enabled := true; Image9.Enabled := true; FSpielerX := true; for I:= 0 to 2 do begin for j:= 0 to 2 do begin Feld[I,J] := nil; end; end; end; procedure TForm1.Image1Click(Sender: TObject); begin UpdateFeld(0,0,Image1); end; procedure TForm1.Image2Click(Sender: TObject); begin UpdateFeld(1,0,Image2); end; procedure TForm1.Image3Click(Sender: TObject); begin UpdateFeld(2,0,Image3); end; procedure TForm1.Image4Click(Sender: TObject); begin UpdateFeld(0,1,Image4); end; procedure TForm1.Image5Click(Sender: TObject); begin UpdateFeld(1,1,Image5); end; procedure TForm1.Image6Click(Sender: TObject); begin UpdateFeld(2,1,Image6); end; procedure TForm1.Image7Click(Sender: TObject); begin UpdateFeld(0,2,Image7); end; procedure TForm1.Image8Click(Sender: TObject); begin UpdateFeld(1,2,Image8); end; procedure TForm1.Image9Click(Sender: TObject); begin UpdateFeld(2,2,Image9); end; procedure TForm1.UpdateFeld(AX,AY: Integer; AImage: TImage); begin if (Feld[AX,AY] = nil) then begin Feld[AX,AY] := FSpielerX; if (FSpielerX) then begin AImage.Picture.Loadfromfile('Unbenannt1.png'); end else begin AImage.Picture.Loadfromfile('Unbenannt111.png'); end; if (CheckVictory(AX,AY,FSpielerX)) then begin Label1.Caption := 'Gewonnen'; //Victory(); end; FSpielerX := not FSpielerX; end; end; function TForm1.CheckVictory(AX,AY: Integer; ASpieler: Boolean): Boolean; begin Result := false; if ( ((Feld[AX,0] = ASpieler) and (Feld[AX,1] = ASpieler) and (Feld[AX,2] = ASpieler)) or ((Feld[0,AY] = ASpieler) and (Feld[1,AY] = ASpieler) and (Feld[2,AY] = ASpieler)) ) then begin Result := true; end; if ( (not Result) and ( ((AX = 0) and (AY = 0)) or ((AX = 1) and (AY = 1)) or ((AX = 2) and (AY = 2)) ) ) then begin if ((Feld[0,0] = ASpieler) and (Feld[1,1] = ASpieler) and (Feld[2,2] = ASpieler)) then begin Result := true; end; end; if ( (not Result) and ( ((AX = 2) and (AY = 0)) or ((AX = 1) and (AY = 1)) or ((AX = 0) and (AY = 2)) ) ) then begin if ((Feld[2,0] = ASpieler) and (Feld[1,1] = ASpieler) and (Feld[0,2] = ASpieler)) then begin Result := true; end; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz