AGB  ·  Datenschutz  ·  Impressum  







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

Memory Spiel

Ein Thema von audifanrs6 · begonnen am 2. Jun 2014 · letzter Beitrag vom 3. Jun 2014
Antwort Antwort
audifanrs6

Registriert seit: 2. Jun 2014
1 Beiträge
 
#1

Memory Spiel

  Alt 2. Jun 2014, 20:04
Hallo zusammen,

zur Zeit bin dabei ein Memory Spiel zu erstellen. Jedoch komm ich nicht mehr weiter. Im Moment funktioniert es ja nur so, dass der Button verschwindet und das darunter liegende Image gezeigt wird.
Wie bekomme ich das jetzt hin, dass maximal 2 Buttons verschwinden? Und das die beiden Buttons wieder da sind, wenn ich einen dritten anklick? Die jeweils zwei Buttons sollen nur wegbleiben, wenn das richtige Paar gefunden wurde.
Ist ja schließlich ein Memory.
Kann mir jemand sagen, was ich genau machen muss mit meinem vorhandenen Programm? Ich weiß, dass ich irgendwas mit Variablen machen muss, nur wie?

Delphi-Quellcode:
unit Unit3;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
  StdCtrls, ExtCtrls;
 
type
 
  { TForm3 }
 
  TForm3 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    Button1: TButton;
    Image1: TImage;
    Image10: TImage;
    Image11: TImage;
    Image12: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    procedure BitBtn10Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Image1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form3: TForm3;
 
implementation
uses Unit1 ;
 
{$R *.lfm}
 
{ TForm3 }
 
procedure TForm3.BitBtn10Click(Sender: TObject); //Paar 3
begin
  BitBtn10.Visible:=false;
  Image10.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image6.bmp');
end;
 
procedure TForm3.BitBtn11Click(Sender: TObject); //Paar 4
begin
  BitBtn11.Visible:=false;
  Image11.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image8.bmp');
end;
 
procedure TForm3.BitBtn12Click(Sender: TObject); //Paar 6
begin
  BitBtn12.Visible:=false;
  Image12.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image12.bmp');
end;
 
procedure TForm3.BitBtn1Click(Sender: TObject); //Paar 1
begin
  BitBtn1.Visible:=false;
  Image1.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image1.bmp');
end;
 
procedure TForm3.BitBtn2Click(Sender: TObject); //Paar 1
begin
  BitBtn2.Visible:=false;
  Image2.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image2.bmp');
end;
 
procedure TForm3.BitBtn3Click(Sender: TObject); //Paar 3
begin
   BitBtn3.Visible:=false;
   Image3.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image5.bmp');
end;
 
procedure TForm3.BitBtn4Click(Sender: TObject); //Paar 2
begin
  BitBtn4.Visible:=false;
  Image4.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image3.bmp');
end;
 
procedure TForm3.BitBtn5Click(Sender: TObject); //Paar 4
begin
  BitBtn5.Visible:=false;
  Image5.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image7.bmp');
end;
 
procedure TForm3.BitBtn6Click(Sender: TObject); //Paar 2
begin
  BitBtn6.Visible:=false;
  Image6.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image4.bmp');
end;
 
procedure TForm3.BitBtn7Click(Sender: TObject); //Paar 6
begin
  BitBtn7.Visible:=false;
  Image7.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image11.bmp');
end;
 
procedure TForm3.BitBtn8Click(Sender: TObject); //Paar 5
begin
  BitBtn8.Visible:=false;
  Image8.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image9.bmp');
end;
 
procedure TForm3.BitBtn9Click(Sender: TObject); //Paar 5
begin
  BitBtn9.Visible:=false;
  Image9.Picture.LoadFromFile('H:\SmkInf\Memorykarten\Fortgeschritten\Image10.bmp');
end;
 
procedure TForm3.Button1Click(Sender: TObject);
begin
  form3.hide ;
  form1.show ;
end;
 
 
end.

Geändert von Luckie ( 3. Jun 2014 um 12:45 Uhr) Grund: Delphi-Tags ergänzt.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Memory Spiel

  Alt 3. Jun 2014, 09:16
Hast Du Dir mal auf einem Zettel (neudeutsch Word) aufgeschrieben, was genau passieren soll? Irgendwo wird da ja stehen, wieviele Knöpfe gleichzeitig gedrückt sein dürfen. Um soetwas als ganz dummes Programm zu tun, muss gezählt werden. Zwar nur bis zwei, aber man muss sich das halt merken.

Wie man ein Programm dazu bringt, zu zählen hat man Dir hoffentlich beigebracht.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#3

AW: Memory Spiel

  Alt 3. Jun 2014, 09:27
Eine Antwort ist zwar schon da, aber noch bissl Kleinkram bleibt übrig.
  • Wenn du deinen Code hier in [delphi]...[/delphi]-Tags einfügst, dann kann man Diesen besser lesen.
  • Zitat:
    Delphi-Quellcode:
    procedure TForm3.Button1Click(Sender: TObject);
    begin
    form3.hide ;
    form1.show ;
    end;
    Der Code steht bereits in TForm3, also solltest du dort nicht auf Form3 zugreifen.
    Entweder weglassen (Hide; ), oder Self.Hide; verwenden.
  • Sind dir die nutzlosen Kommentare hinter den Methoden-Headern aufgefallen?
    Wenn du die Buttons entsprechend benennst, dann wären Diese nicht nötig.
  • Und wenn du die TImages, TBitBtns und Bitmaps gleich benennst (selbe Nummer), dann wäre der Zusammenhang gleich verständlicher.
  • Du könntest auch die Bitmaps direkt im Formdesigner in die Images laden und brauchst Diese im Code dann nur noch sichtbar machen. (im OI das Visible auf False)
  • Sind denn auf jedem Computer, wo dieses Programm mal ausgeführt wird, die Bitmaps immer im selben Verzeichnis? Wenn nicht, dann sind absolute Pfadangaben eher schlecht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Memory Spiel

  Alt 3. Jun 2014, 09:46
Beispiel für einen Zettel was passieren soll:
Code:
Start:
  Karten zufällig verteilen

Kartenklick:
  Welcher Zustand liegt vor:

1.keine Karte als neu aufgedeckt gemerkt
- Anzahl der Versuche erhöhen
- Karte aufdecken
- 1.Karte merken und damit zu Zustand 2 wechseln

2.eine Karte wurde bereits als neu aufgedeckt gemerkt
- Karte aufdecken
  Wenn(zweite Karte = erste Karte)
-   Merker für erste Karte löschen und damit in Zustand 1 wechseln
-   Auf Ende prüfen
  Sonst
-   2.Karte merken und damit zu Zustand 3 wechseln

3.zwei unterschiedliche Karten wurden bereits als neu aufgedeckt gemerkt
- beide Karten zudecken
- Merker für beide Karten löschen
- weiter wie im Zustand 1.

4.Ende(alle Karten sind aufgedeckt)
- alle Karten zudecken
- neu Starten
Benötigt werden also mindestens zwei Variablen, in denen du dir die erste und die zweite Karte merken kannst.
Abhängig von der Belegung dieser Variablen muss beim Kartenklick anders reagiert werden.
Mit einer weiter Variable, die die Gesamtanzahl der aufgedeckten Karten enthält, lässt sich auch der Zustand 4 leicht erkennen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#5

AW: Memory Spiel

  Alt 3. Jun 2014, 09:58
Mit einer weiter Variable, die die Gesamtanzahl der aufgedeckten Karten enthält, lässt sich auch der Zustand 4 leicht erkennen.
Oder man schreibt sich eine Funktion, welche zählt wieviele Karten aufgedeckt sind. Das läst sich z.B. an der Sichtbarkeit der Buttons erkennen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 16:19 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