AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spieleprogrammierung Hilfe benötigt

Ein Thema von Blutfeuernacht · begonnen am 20. Mär 2015 · letzter Beitrag vom 21. Mär 2015
Antwort Antwort
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#1

AW: Spieleprogrammierung Hilfe benötigt

  Alt 20. Mär 2015, 20:46
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.

Geändert von BadenPower (20. Mär 2015 um 21:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Spieleprogrammierung Hilfe benötigt

  Alt 21. Mär 2015, 10:28
Da haben wir es wieder...

9 Button 9x die Onclick Procedure kopiert und dir Werte für die Lineto's per Hand geändert.
Und nach dem kopieren sind noch Zeilen hinzugekommen...
Aber nur vereinzelt...

Versuche es mal mit.
Delphi-Quellcode:
Procedure TForm1.ButtonAllClick(Sender:TObject);
var
  X,Y : Integer;
begin
  X := TButton(Sender).Left;
  Y := TButton(Sender).Top;
  TButton(Sender).Visible := false;

  AddGewinliste(TButton(Sender).Tag);

  if Spieler = 1
    then begin
           Spieler := 2;
           MaleX(X,Y);
         end
    else begin
           Spieler := 1;
           MaleO(X,Y);
         end;

  TestGewonnen;
end;
Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#3

AW: Spieleprogrammierung Hilfe benötigt

  Alt 21. Mär 2015, 13:23
Eine Variable mehr könnte aber auch nicht schaden.
Delphi-Quellcode:
Procedure TForm1.ButtonAllClick(Sender:TObject);
var
  X,Y : Integer;
  Btn: TButton;
begin
  Btn := TButton(Sender); //ein Cast genügt
  X := Btn.Left;
  Y := Btn.Top;
  (* usw. *)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz