Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Memoryspielproblem (https://www.delphipraxis.net/149520-memoryspielproblem.html)

funkuchn 23. Mär 2010 13:00


Memoryspielproblem
 
So Leute,
ich nerv euch mal wieder mit meinem Memoryspiel :shock:
ich komme einfach nicht weiter weil ich nicht weiß, wie ich es umsetzen soll, 2 Karten aufdecken zu können und sowieso die Felder zufällig mit 10 Pärchen zu belgene :pale:
hier mal mein bisheriger Code, der so auch nicht ganz richtig ist :(
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Men1: TMenuItem;
    Start1: TMenuItem;
    Aufgeben1: TMenuItem;
    Neustart1: TMenuItem;
    Beenden1: TMenuItem;
    Hilfe1: TMenuItem;
    Image1: TImage;
    DrawGrid1: TDrawGrid;
    procedure Beenden1Click(Sender: TObject);
    procedure Hilfe1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);


  private
    { Private-Deklarationen }
    KarteVerdeckt:tbitmap;
    KarteAufgedeckt:tbitmap;
    KartenArray:array [0..4,0..3] of integer;

  public
    { Public-Deklarationen }
 end;

var
  Form1: TForm1;
  Zufallszahl:integer;
  Bitmap:TBitmap;

implementation

{$R *.DFM}

procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Hilfe1Click(Sender: TObject);
begin
showmessage('REMEMBER YOUR CHILDHOOD');
showmessage('Bei diesem Spiel geht es darum, gleiche Pärchen aufzudecken.');
showmessage('Durch den Klick auf zwei Spielkarten werden sie dir angezeigt.');
showmessage('Hast du ein Pärchen gefunden, werden dir 5 Punkte gutgeschrieben.');
showmessage('Viel Spaß beim Spielen!');
end;





procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
   if KartenArray[aCol, arow]=0 then
   Drawgrid1.Canvas.Draw(rect.left,rect.top,KarteVerdeckt);
    Bitmap := TBitmap.Create;
    Bitmap.Width := 100;
    Bitmap.Height := 100;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin

    for i:=0 to 4 do
     for j:=0 to 4 do
       KartenArray[i,j]:=0;

    KarteVerdeckt:=tbitmap.create;
    KarteVerdeckt.LoadFromFile(extractfilepath(application.exename)+'clip_image002.bmp');


end;

procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
var i,j:integer;
rect:Trect;
begin
   for i:=0 to 4 DO
    for j:=0 TO 4 Do
    Kartenarray[i,j]:=1;
    rect := DrawGrid1.CellRect(ACol, ARow);

    KarteAufgedeckt:=tbitmap.create;
    KarteAufgedeckt.LoadFromFile(extractfilepath(application.exename)+'clip_image010.bmp');

    if KartenArray[aCol, arow]=1 then
     Drawgrid1.Canvas.Draw(rect.left,rect.top,KarteAufgedeckt);
     Sleep(2000);
     DrawGrid1.Canvas.Draw(rect.left, rect.top, KarteVerdeckt);
   end;

procedure Zufallsbelegung(Sender:TObject);
begin
 Zufallszahl:=random(10)+1;


end;

end.

Luckie 23. Mär 2010 13:13

Re: Memoryspielproblem
 
Guck mal hier: http://www.michael-puff.de/Developer...-Klassen/HTML/

funkuchn 23. Mär 2010 13:16

Re: Memoryspielproblem
 
hmm, das hab ich mir ja auch schon total oft durchgelesen und steige nicht dahinter :pale:
ich bin jetzt wirklich n Anfänger und wir haben Jahre lang nicht programmiert weil wir ewig bei Datenbanken gehangen haben und sollen jetzt gleich son Projekt mache, ich sitz da schon übern Monat und bin verzweifelt weil Freitag Abgabe :pale:

funkuchn 23. Mär 2010 13:30

Re: Memoryspielproblem
 
ich brauch wirklich Hilfe, ich kann mir das nicht alles ausden Fingern saugen :cry:

DeddyH 23. Mär 2010 13:45

Re: Memoryspielproblem
 
Ich an Deiner Stelle würde mir eine Klasse TKarte deklarieren, die zumindest über einen Index verfügt. Von dieser Klasse würde ich mir dann die nötige Anzahl an Instanzen erstellen, nach jeder 2. den Index erhöhen (zur Paarbildung) und die Instanzen in einer TObjectList ablegen. Mischen könntest Du dann beispielsweise, indem Du mittels Exchange zufällig ausgewählte Elemente der Liste austauschst. Und dann musst Du diese Liste nur noch darstellen.

funkuchn 23. Mär 2010 15:26

Re: Memoryspielproblem
 
Ihr werft immer so schön mit euren Fachbegriffen um euch :cry:

ryLIX 23. Mär 2010 19:00

Re: Memoryspielproblem
 
Zitat:

Zitat von funkuchn
Ihr werft immer so schön mit euren Fachbegriffen um euch :cry:

Hmm könnte daran liegen das du hier in einem "Fachforum" bist :gruebel:
Welche "Fachbegriffe" verstehst du denn nicht?

Wie wäre es wenn du zumindestens einsatz zeigts und auch nciht immer einen Thread aufmachst?

Dieser Code:
Delphi-Quellcode:
procedure TForm1.Hilfe1Click(Sender: TObject);
begin
showmessage('REMEMBER YOUR CHILDHOOD');
showmessage('Bei diesem Spiel geht es darum, gleiche Pärchen aufzudecken.');
showmessage('Durch den Klick auf zwei Spielkarten werden sie dir angezeigt.');
showmessage('Hast du ein Pärchen gefunden, werden dir 5 Punkte gutgeschrieben.');
showmessage('Viel Spaß beim Spielen!');
end;
Wurde schon in einem vorhergegangenen Thread bemängelt und du änderst ihn einfach nicht...

http://www.delphipraxis.net/internal...t.php?t=174438
In dem Thread habe ich dir auch genug Hinweise gegeben die Pärchengeneration zu lösen und auch deine anderen Probleme.
Wir sind kein Hausaufgabenforum.

Blup 26. Mär 2010 09:21

Re: Memoryspielproblem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich fangen alle Anfänger so ein Projekt verkehrt herum an.
Sie erstellen sich zuerst eine Oberfläche und versuchen dann die Logik der Anwendung irgendwie reinzufummeln.

Zuerst sollte man sich um die Anwendungskern kümmern und zuletzt um die Oberfläche und natürlich beides trennen.

Welche Daten benötige ich um jeden Zustand des Spiels darzustellen?
(z.B. welche Objekte sind beteiligt und welchen Zustand können diese haben)
Karten
- können auf- oder zugedeckt sein
- haben ein Bild das bei jeweils 2 Karten gleich ist

Spieler
- Anzahl der bisher aufgedeckten Paare

Welche Methoden benötige ich um den Zustand des Spiels zu ändern oder abzufragen.
- Starten mit einem Spieler
- Karte aufdecken
- Abfrage ob schon 2 Karten aufgedeckt sind
- Abfrage ob Spielende
- Wechsel zum nächsten Spieler
...

Ich hab mir diese Arbeit mal gemacht und auch eine simple Oberfläche für einen Spieler und 10 Karten geschrieben.

funkuchn 27. Mär 2010 13:17

Re: Memoryspielproblem
 
funzt nicht? :freak:

ryLIX 27. Mär 2010 13:48

Re: Memoryspielproblem
 
:glaskugel:
:warn:
Das Problem ist wahrscheinlich 90cm vom Monitor entfernt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Seite 1 von 2  1 2      

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