Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Der "Color-Code" (https://www.delphipraxis.net/158059-der-color-code.html)

Mike_ 6. Feb 2011 19:17

AW: Der "Color-Code"
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Dragon93 (Beitrag 1079886)
hey mike,

danke für dein programm im anhang,
leider funktioniert es bei mir nicht richtig und es gibt einen deplhi praxis treffen? o.O wann isn das?

Was funktioniert nicht, wo kommt ein Fehler (Gibt es überhaupt einen) ?

Ich gehe eher davon aus dass du es nicht "einfach importieren" kannst, du du eine andere Delphi Version verwendest.

Daher ist folgendes angesagt :

1.) Neue VCL Form erstellen in deiner IDE. [Neues Projekt]
2.) Ziehe dir 1 Button und 5 Panels auf die Form.
3.) Füge auf Panel1 folgendes hinzu
1 x TLabel -> Name: Label_Level
1 x TLabel -> Name: Label1
4.) Benenne die Panels2-5 um in:
Panel2 -> Panel_Col0
Panel3 -> Panel_Col1
Panel4 -> Panel_Col2
Panel5 -> Panel_Col3

Dann muss deine Struktur so aussehen wie im Anhang.

5.) Kopiere dir den relevanten Teil aus dem Quellcode:
(Bei dir wird die Form ggf. anders heißen, daher nicht einfach Str+c und Str+v einfügen und dann sagen "geht nicht".

Kopiere sinnvoll !


Delphi-Quellcode:
////
//Created on 06.02.11 by Mike_
////

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;


type
  TForm2 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label_Level: TLabel;
    Panel1: TPanel;
    Panel_Col0: TPanel;
    Panel_Col1: TPanel;
    Panel_Col2: TPanel;
    Panel_Col3: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure mixColors();
    procedure NextColor();
    procedure NextLevel ();
    procedure FirstStart();
    procedure ShowColorSqeuence();
    procedure CheckAnswer(ColorOfButton: TColor);
    procedure Button1Click(Sender: TObject);
    procedure Panel2Clck(Sender: TObject);
    procedure Panel_Col2Click(Sender: TObject);
    procedure Panel_Col1Click(Sender: TObject);
    procedure Panel_Col3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations}

  end;

var
  Form2: TForm2;
  FarbListe: TStringList;
  Level, DerzeitigesFarbLevel: Integer;

implementation

{$R *.dfm}

procedure Delay(time:Integer);
var
  i: integer;
begin
  for i := 0 to time do
  begin
    Sleep(10);
    Application.ProcessMessages;
  end;
end;

procedure TForm2.ShowColorSqeuence();
var i : Integer;
begin
  for I := 1 to FarbListe.Count - 1 do begin
    case ColorToRGB(StringToColor(FarbListe.ValueFromIndex[I])) of
      32768: RandSeed:=0;    // RGB of clGreen
      255: RandSeed:=1;      // RGB of clRed
      65535: RandSeed:=2;    // RGB of clYellow
      16711680: RandSeed:=3; // RGB of clBlue
    end;

    TPanel(FindComponent('Panel_Col'+IntToStr(RandSeed))).Color := StringToColor(FarbListe.ValueFromIndex[I]);
    Delay(75);
    TPanel(FindComponent('Panel_Col'+IntToStr(RandSeed))).Color := clBtnFace;
    Delay(25);
  end;
end;

procedure TForm2.mixColors();
begin
  Randomize;
  RandSeed := Random(4);
  //ShowMessage(IntToStr(RandSeed));

  case RandSeed of
    0: FarbListe.Add('cclGreen');
    1: FarbListe.Add('cclRed');
    2: FarbListe.Add('cclYellow');
    3: FarbListe.Add('cclBlue');
  end;
end;

//Next Level
procedure TForm2.NextLevel ();
begin
  mixColors();
  Level := Level +1;
  Label_Level.Caption := IntToStr(Level);
  DerzeitigesFarbLevel := 1;
  ShowColorSqeuence();
end;

//Next Color in same level
procedure TForm2.NextColor();
begin
  DerzeitigesFarbLevel := DerzeitigesFarbLevel + 1;
end;

procedure TForm2.CheckAnswer(ColorOfButton: TColor);
begin
  //RIGHT ANSWER
  if FarbListe.ValueFromIndex[DerzeitigesFarbLevel] = ColorToString(ColorOfButton) then begin
    if DerzeitigesFarbLevel = Level then begin
      ShowMessage('Das war korrekt, herzlich willkommen im Level '+IntToStr(Level+1)+' !');
      NextLevel();
    end
    else
    //RIGHT BUT NO NEW LEVEL
    begin
      //ShowMessage('Ihre Antwort ist korrekt!');
      NextColor();
    end;
  end
  //FALSE ANSWER
  else begin
    ShowMessage('Dies war leider verkehrt, das Spiel wird neu gestartet !');
    Button1.Click;
  end;
end;


//First start of game
procedure TForm2.FirstStart();
begin

  FarbListe.Clear;

  (*
  Da TStirngList bei 0 anfängt zu zählen
  wir aber der Übersicht halber bei Level 1 anfangen
  *)
  FarbListe.Insert(0, '');

  mixColors();
  DerzeitigesFarbLevel := 1;
  Level := 1;
  Label_Level.Caption := IntToStr(Level);

  ShowColorSqeuence();
end;


procedure TForm2.Button1Click(Sender: TObject);
begin
  FirstStart();
end;

procedure TForm2.Panel2Clck(Sender: TObject);
begin
  CheckAnswer(clGreen);
end;

procedure TForm2.Panel_Col1Click(Sender: TObject);
begin
  CheckAnswer(clRed);
end;

procedure TForm2.Panel_Col2Click(Sender: TObject);
begin
  CheckAnswer(clYellow);
end;

procedure TForm2.Panel_Col3Click(Sender: TObject);
begin
  CheckAnswer(clBlue);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  FarbListe := TStringList.Create;
  Label_Level.Caption := '';
  //ShowMessage(IntToStr(ColorToRGB(clGreen))+' '+IntToStr(ColorToRGB(clRed))+' '+IntToStr(ColorToRGB(clYellow))+' '+IntToStr(ColorToRGB(clBlue)));
end;

end.
Edit://
Im Anhang habe ich dir noch mal den Sourcecode + funktionierende .exe hingepackt.

Dragon93 6. Feb 2011 19:41

AW: Der "Color-Code"
 
danke das du es mir noch einmal erklärt hast :)
aber das meinte ich garnicht nun gut ich wollte damit meinen das deine exe in deinem anhang bei mir nicht funktionierte :D
wenn ich auf new game gedrückt habe leuchtete keine farbe auf hatte ich mal das glück das ich aus zufall den richtigen button gefunden habe sah ich immernoch nicht die farbe :D

Mike_ 6. Feb 2011 19:50

AW: Der "Color-Code"
 
Ich habe es mir ebend selbst heruntergeladen, bei mir funktioniert es.

Die .exe kann sich eigentlich bei dir und mir nicht so unterschiedlich verhalten !?

Dragon93 6. Feb 2011 19:56

AW: Der "Color-Code"
 
ich weis das verhält sich sehr komisch und teilweise sogar unrea und bekloppt aber ich habe einfach mal ein kleines bild gemacht
http://img828.imageshack.us/img828/434/level1oo.jpg
ich kann dazu nur sagen so siehts bei mir aus und das ist kein scherz o.O

Mike_ 6. Feb 2011 20:12

AW: Der "Color-Code"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sieht so aus als wenn WinVista/7 die Panels transparent setzt.

Ich hab dir mal eine weitere Variante angehangen.

Sag mir bitte welches Panel bei dir angezeigt wird.

Dragon93 6. Feb 2011 20:21

AW: Der "Color-Code"
 
bei mir sind alle panels grau bis auf das unten links

Bummi 6. Feb 2011 20:24

AW: Der "Color-Code"
 
Liste der Anhänge anzeigen (Anzahl: 1)
bei mir (hier D 2010 ) schlägt ValueFromIndex und ColorToString bei der Farbnamesvergabe fehl..., der Anhang funktioniert

patti 6. Feb 2011 20:26

AW: Der "Color-Code"
 
Ich weiß nicht, in wie weit das Problem inzwischen behoben wurde, aber evtl. könnte die Eienschaft "ParentBackground" das Verhalten ändern. Ich kann allerdings im Moment nicht sagen, ab welcher Delphi-Version diese Eigenschaft vorhanden ist.
Generell würde ich aber voschlagen, die graphische Ausgabe selbst zu zeichnen und beispielsweise über eine Paintbox auszugeben. Da kann man sich dann graphisch etwas "austoben", was ja gerade bei Spielen nie verkehrt ist ;-)

Dragon93 6. Feb 2011 20:32

AW: Der "Color-Code"
 
es wurden bei mir eigentlich alle probleme behoben bummi hat eine nette kleine version gepostet die bei mir funktioniert ich müsste mich bei meiner version nur noch der verschönerung widmen und der fehler meldung aber ansonsten sollte alles wohl gesagt sein :)

ich bedanke mich bei allen von ganzenherzen die bei der lösung des problems geholen haben :)

wer mag darf das spiel für seine zwecke ruhig weiter entwickeln/umentwickeln oder einfach als nachguck objekt benutzen :)

noch mal an alle danke und bis demnächst wenn ich wieder einmal ein problem haben sollte^^

Mike_ 6. Feb 2011 20:49

AW: Der "Color-Code"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Bummi (Beitrag 1079910)
bei mir (hier D 2010 ) schlägt ValueFromIndex und ColorToString bei der Farbnamesvergabe fehl..., der Anhang funktioniert

Dank dir, damit ist es nun auch gleich D2010 kompatibel.

Dadurch ist das unerklärliche Phänomen auch verschwunden, weshalb in der TStringList immer das erste Zeichen verschluckt wurde.

Das ValueFromIndex benötigt man nirgendwo, habe es dank deinem Hinweis an allen 3 Stellen entfernt. :thumb:

Danke dir :thumb:

Zitat:

Zitat von Dragon93 (Beitrag 1079908)
bei mir sind alle panels grau bis auf das unten links

Dann liegt es am ParentBackground, genau wie Patti getippt hatte.

Im Anhang der der "Fix für Win7/Vista".

EDIT:\
Anhang gelöscht, weiteren Bug entdeckt.
Neue Version wird geuploaded.

Edit2:\
Erneuter Bugfix im Anhang


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr.
Seite 3 von 3     123   

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