Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Vier gewinnt (https://www.delphipraxis.net/146414-vier-gewinnt.html)

VerdammtVerzweifelt 19. Jan 2010 13:23


Vier gewinnt
 
Hallo ihr Computerfanatiker!

Wir (Sarah und Julia) müssen im Rahmen unseres Informatikunterrichts mit Hilfe des Delphi-Programms (Delphi5) ein Spiel programmieren. Ausgewählt haben wir "Vier gewinnt". Wir beide haben leider absolut keine Ahnung von Programmiersprache, StringGrid und Co. und werden wohl nie ganz hinter den Sinn der Informatik steigen. Deshalb hoffen wir auf eure Hilfe!
Folgendes Problem:

Mittlerweile haben wir (zugegebenermaßen nicht ganz ohne die Hilfe unseres Informatiklehrers!) es geschafft, die Zellen in die wir klicken mit einem farbigen Kreis zu füllen. Doch wie ist es möglich das 2 Spieler immer abwechselnd an der Reihe sind. Bitte antwortet im Quelltext, da es uns nicht gelingt Anweisungen in "unserer" Sprache in Programiersprache zu übersetzen! ;-) :gruebel:

Wir hoffen auf eure Hilfe und Antwort!

Mit freundlichen Grüßen
Sarah und Julia

Luckie 19. Jan 2010 13:27

Re: Vier gewinnt
 
Einfach merken, wer als letztes geklickt hat. Wenn das Spieler eins war, ist jetzt Spieler zwei dran und der Kreis muss blau sein. War es Spieler zwei, ist jetzt Spieler eins dran und der Kreis muss rot sein.

hoika 19. Jan 2010 13:29

Re: Vier gewinnt
 
Hallo,

falsche Rubrik.
es müßte ja heißen "Macht bitte meine Hausaufgaben".

Zeigt mal per Code, was ihr schon habt.

Das 2Merken", wer dran ist,
könnte man per Boolean

bPlayer1 = True -> Spieler 1 ist dran
bPlayer1 = False -> Spieler 2 ist dran

in FormCreate kommt

Delphi-Quellcode:
bPlayer1:= True;
Nach jedem Spielzug (gültiger Klick auf Grid)

Delphi-Quellcode:
bPlayer1:= not bPlayer1;
Das schaltet immer zwischen True und False um.

Man könnte auch schreiben

Delphi-Quellcode:
if bPlayer1 then
begin
  bPlayer1:= False;
end
else
begin
  bPlayer1:= True;
end;


Zitat:

Sinn der Informatik
Im Handy / MP3-Player / TV ist auch ein bisschen Informatik drin .. ;)


Heiko

VerdammtVerzweifelt 19. Jan 2010 13:37

Re: Vier gewinnt
 
Das ist unser bisheriger Quelltext .. wie gesagt noch ziemlich am Anfang:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
{==============================================================================}
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  // wenn in der gerade gezeichneten Zelle eine 1 steht, dann zeichne dort einen grünen Kreis
  if StringGrid1.Cells[ACol,ARow] = '1' then
    begin
      StringGrid1.Canvas.Brush.Color := clGreen;
      StringGrid1.Canvas.Ellipse (Rect);
    end;
  // wenn in der gerade gezeichneten Zelle eine 2 steht, dann zeichne dort einen blauen Kreis
  if StringGrid1.Cells[ACol,ARow] = '2' then
    begin
      StringGrid1.Canvas.Brush.Color := clBlue;
      StringGrid1.Canvas.Ellipse (Rect);
    end;

end;
{==============================================================================}
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  //wenn spieler 1 dannn schreibe 1
  // StringGrid1.Cells[ACol,ARow] := '1';
  // sonst schreibe 2

KEINE AHNUNG WIE DIE SPIELER ABWECHSELND ZUM ZUG KOMMEN!
HELFT UNS BITTE.
end;
{==============================================================================}
end.
[edit=Luckie]Delphi-Tags gesetzt. Beim nächsten mal bitte selber machen. Mfg, Luckie[/edit]

Corpsman 19. Jan 2010 13:44

Re: Vier gewinnt
 
In Der Hoffnung, dass ihr das nicht einfach nur Kopiert, möchte ich euch mal auf dieses 4 Gewinnt ( Inclusive Source / KI ) Hinweisen.

hoika 19. Jan 2010 13:52

Re: Vier gewinnt
 
Hallo,

Delphi-Quellcode:
TForm1 ..
  private
    { Private-Deklarationen }
    bPlayer1: Boolean;
  public    
  end;
Delphi-Quellcode:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  if StringGrid1.Cells[ACol,ARow] <> '' then
  begin

   // es steht was drin
   // also lassen wir von dieser Zelle mal die Finder
   // und verschwinden

    Exit;
  end;

  if bPlayer1 then
  begin
   // es ist Spieler 1
    StringGrid1.Cells[ACol,ARow] := '1';
  end
  else
  begin
   // es ist Spieler 2
    StringGrid1.Cells[ACol,ARow] := '2 ';
  end;

 // Spieler umschalten
  if bPlayer1 then
  begin
    bPlayer1:= False;
  end
  else
  begin
    bPlayer1:= True;
  end;
end;
Und jetzt nur noch das "wer hat gewonnen" schreiben ...

Vergesst mein FormCeate nicht
- freie Form-Fläche suchen
- Doppelklick



Heiko

VerdammtVerzweifelt 19. Jan 2010 13:54

Re: Vier gewinnt
 
Vielen Dank, Corpsman! Wir werden mal schauen was wir damit bewerkstelligen können. :-)
Natürlich auch vielen Dank an die anderen netten "Informatiker", die bereit waren uns zu helfen! ;-)

Luckie 19. Jan 2010 13:56

Re: Vier gewinnt
 
Delphi-Quellcode:
// Spieler umschalten
  if bPlayer1 then
  begin
    bPlayer1:= False;
  end
  else
  begin
    bPlayer1:= True;
  end;
end;
Umständlicher geht es nicht oder? ;)
Wie wäre es mit:
Delphi-Quellcode:
bPlayer1 := not bPlayer1;

hoika 19. Jan 2010 13:59

Re: Vier gewinnt
 
LUCKIE !!!

Es sind Rookies !!! ;)

Wie du in #3 siehst, hatte ich das dort auch so schon gehabt,
aber es dann vereinfacht ;)


Zitat:

Natürlich auch vielen Dank an die anderen netten "Informatiker", die bereit waren uns zu helfen! Wink
Das war leider keine Hilfe,
wenn ihr den Code nicht versteht.


Heiko

p80286 19. Jan 2010 17:19

Re: Vier gewinnt
 
[OT]
@corpsman

leider komm ich an den Link nicht heran
mein Admin schickt mir so etwas:

Access Denied (content_filter_denied)


Your request was denied because of its content categorization: "Games"

Gibt es da vielleicht auch "saubere" Quellen?
ja ich will einfach abschreiben vor allem die KI, dann muß ich nicht mehr selber denken!!

[/OT]
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.
Seite 1 von 4  1 23     Letzte »    

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