Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 4 Gewinnt PROBLEM! (https://www.delphipraxis.net/124301-4-gewinnt-problem.html)

Nefesimsin55 18. Nov 2008 10:14


4 Gewinnt PROBLEM!
 
also als erstens ich bin neu hier also bitte nich gleich fertig machen falls sowas passiern sollte :P ^^ zweitens ich wusste nicht ganz wo ich es rein schreiben sollte also falls ich ein fehler gemacht hab bitte ich die MODS oder ADMINS mein beitrag zu verschieben danke :) und drittens ihr werdet wahrscheinlich wieda rumnörgeln schon wieda so ein beitrag undso das bin ich mir auch bewusst aber ich hab halt leider kein beitrag gefunden wo mein problem beschrieben wird^^ also bitte ich um entschuldigung :) so jetzt zu meinem problem :)


ich muss für die schule (Klausur) ein programm schreiben wie oben schon steht 4 gewinnt aber ohne KI ^^ so ich kam auch schon etwas vorran. ich hab eine tabelle gezeichnet mit einem Stringgrid so und halt noch kleine andere sachen wie zum beispiel wer grade dran ist wie viel spielzüge schon gemacht wurden und wo man halt die spaltennr. und die zeilennr. lesen kann. MEIN EIGENTLICHES PROBLEM ist wenn ich einen ein feld rot makieren lasse und wie üblich is ya dann gelb dran (oder halt ne andere farbe :P ) aba wenn ich ein feld gelb makiere geht das feld wo ich rot makiert habe wieder weg als ob ich nix reingeschrieben hätte. und hier mal der quellcode zum nachgucken :

Delphi-Quellcode:
procedure TForm1.StringGrid1Click(Sender: TObject);
VAR  SpaltenNr, ZeilenNr : Integer;
      Rect      : TRect;
begin
  Mausklick:= Mausklick+1;
  EditSpielzug.Text:= Inttostr(Mausklick);
  If (Mausklick mod 2) = 1 Then
  Begin
     EditRotGelb.Color :=clYellow;
  End
  else
  Begin
     EditRotGelb.Color :=clRed;
  End;

  SpaltenNr:=StringGrid1.Col;
  edit1.Text:=IntToStr(SpaltenNr);
  ZeilenNr:=StringGrid1.Row;
  edit2.Text:=IntToStr(ZeilenNr);



  If (Mausklick mod 2) = 1 Then
  Begin
    StringGrid1.Canvas.Brush.Color := clRed;
    Rect := StringGrid1.CellRect(SpaltenNr, ZeilenNr);
  end
  else
  begin
    StringGrid1.Canvas.Brush.Color := clYellow;
    Rect := StringGrid1.CellRect(SpaltenNr, ZeilenNr);
  end;

  StringGrid1.Canvas.FillRect(Rect);

end;

end.

Daniel 18. Nov 2008 10:26

Re: 4 Gewinnt PROBLEM!
 
Moin,

Deine Frage ist grundsätzlich völlig legitim, Dein Stil jedoch grauenvoll. Und damit meine ich nicht Deinen Quellcode, sondern orthographische Stilblüten wie "wieda weg", "is ya dann" und Konsorten. Ändere dies bitte in Zukunft, das wird das Lesen Deiner Beiträge erheblich angenehmer machen.

Grundsätzlich solltest Du zwischen Programmdaten und Darstellung trennen. In einem Array beispielsweise könntest Du Dir merken, wer wo geklickt hat und dann zeichnest Du in einer anderen Routine die Informationen aus dem Array in das Stringgrid.

Nefesimsin55 18. Nov 2008 10:45

Re: 4 Gewinnt PROBLEM!
 
werde ich mir merken danke für die info :)

Corpsman 18. Nov 2008 13:06

Re: 4 Gewinnt PROBLEM!
 
Mir warn das zu viele Buchstaben in deinem 1. Beitrag, aber wenn ich da sehe das du mittels

Zitat:

Delphi-Quellcode:

Mausklick:= Mausklick+1;

  If (Mausklick mod 2) = 1 Then

Prüfst denke ich mir doch das könntest du einfacher haben ala

Delphi-Quellcode:
Var Mausklick : Boolean = false;

begin
..
Mausklick := not Mauscklick;
if Mausklick then
Nur so als kleine Optimierung ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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