Delphi-Quellcode:
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
...
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure TForm1.Druecken(Sender: TObject); // weg damit falsch deklariert
procedure Druecken(tic:Double); // wenn dann so
procedure SchereSteinPapiewahdf1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
Wobei ich jetzt gar nicht weis, was die Procedure Druecken denn überhaupt machen soll, denn die globale Variable (auch schlecht) "tic" wird nur dort bearbeitet und nur dort gebraucht.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
Druecken(spieler);
If spieler=1 then
begin
spieler:=2;
(Button2.Visible:=false); // Klammern werden nicht gebraucht
With Canvas Do
Begin
Pen.Color:=clBlack;
Pen.Width:=7;
MoveTo(10,210);
LineTo(190,390);
MoveTo(10,390);
LineTo(190,210);
End;
end
Else If spieler=2 then
begin
(Button2.Visible:=false);
spieler:=1; // hier fehlte das Umschalten zurück auf Spieler 1
With Canvas Do
Begin
Pen.Color:=clPurple;
Pen.Width:=7;
Ellipse(10,210,190,390);
End;
end;
end;
Schau Dir die Click-Proceduren der Buttons für TicTacToe an, dort fehlen die Anweisungen zum Setzten des Spielers in der else-Bedingung auf Spieler1. In Button1Click wird auch nach der If-Bedingung nicht auf Spieler2 geswitcht.
Für SchereSteinPapier sind keine Prozeduren für die OnClick-Evants der RadioButtons hinterlegt.
Ausserdem solltest Du dringend die gesamte Darstellungsweise überdenken.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.