Thema: Delphi Memory für "Anfänger"

Einzelnen Beitrag anzeigen

Saul
(Gast)

n/a Beiträge
 
#1

Memory für "Anfänger"

  Alt 27. Dez 2007, 14:52
Hallo,
ich soll demnächst ein Memory-Spiel mit sechs Karten programmieren. Die Karten sollen als Image dargestellt werden. Dazu habe ich ein paar Hilfestellungen bekommen (Im Anhang). Aber irgenwie verwirrt mich das alles. So eine Aufgabenstellung für Anfänger finde ich persönlich ziemlich übertrieben...

Hier erstmal mein bisheriger Quellcode:
1. Bei dem Spiel muss ich zuerst die Karten festlegen
Code:
var
  Form1: TForm1;
  Bild0, Bild1, Bild2, Anzahl, zufall, Nummer, i, k: Integer;
  Bild: Array[0..2] of String;                                 //Bildernamen
  Platz: Array[0..5] of Integer;                               //Bildnummer
  Name0, Name1, Name2: String;                                 //Imagename für Deckblatt

procedure TForm1.FormCreate(Sender: TObject);
  begin
    // verdeckt
    Image1.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image2.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image3.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image4.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image5.Picture.LoadFromFile('Bilder/Deckblatt.bmp');
    Image6.Picture.LoadFromFile('Bilder/Deckblatt.bmp');

    // offen
    Bild[0]:= 'Bilder/Bild1.BMP';
    Bild[1]:= 'Bilder/Bild2.BMP';
    Bild[2]:= 'Bilder/Bild3.BMP';
...
2. Die Karten kontrollieren
Code:
...
    Platz[0]:= 0;
    Platz[1]:= 1;
    Platz[2]:= 2;
    Platz[3]:= 0;
    Platz[4]:= 1;
    Platz[5]:= 2;
end;
3. Die Karten mischen > "auslegen"
Code:
randomize;                                            // Zufallszahlengenerator aktivieren
  while Anzahl > 0 do               { Die Karten mischen }
  begin
    zufall := random(Anzahl)+1;        // eine Karte aus dem Stapel ziehen
    Nummer[Anzahl] := Platz[zufall]; // und auf letzten freien Platz auslegen
   for k := zufall to Anzahl-1 do        // restliche Karten einen Platz nach vorn
    begin
      Platz[k] := Platz[k+1];
    end;
    Anzahl := Anzahl - 1;        // Der Stapel ist nun kleiner geworden
  end;
4. Spielen (Gewünschte Karten umdrehen und danach auswerten [OK/Karten wieder umdrehen])



Komme ich nun zur Hilfestellungen:
  • Wie verwende ich z.B. den Image.Tag wie auf Seite 4 gefordert?
  • Was bedeutet das "i:= StrToInt(TImage(sender).Name[6]);"?
    "Name" ist doch überhaupt nicht definiert, sondern nur "Name1, Name2: String;" auf Seite 2

Gibt es auch eine einfachere verständlichere Variante oder könnt ihr es mir besser erklären, was die Hilfestellung mir sagen soll?
Gruß Saul
  Mit Zitat antworten Zitat