![]() |
Memory für "Anfänger"
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:
2. Die Karten kontrollieren
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'; ...
Code:
3. Die Karten mischen > "auslegen"
...
Platz[0]:= 0; Platz[1]:= 1; Platz[2]:= 2; Platz[3]:= 0; Platz[4]:= 1; Platz[5]:= 2; end;
Code:
4. Spielen (Gewünschte Karten umdrehen und danach auswerten [OK/Karten wieder umdrehen])
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; Komme ich nun zur Hilfestellungen:
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 |
Re: Memory für "Anfänger"
Guck dir mal mein Container-Klassen Tutorial an:
![]() |
Re: Memory für "Anfänger"
Zitat:
Name[6] liest also den sechsten Buchstaben des Namen aus, in diesem Falle die Ziffern. TImage(sender) verweist auf das Image, auf welches geklickt wird. StrToInt wandelt die Ziffer als Zeichen in eine gültige Zahl um. Letztendlich bekommt i also den Wert der Ziffer, welche das Image definiert. |
Re: Memory für "Anfänger"
Zitat:
Zitat:
|
Re: Memory für "Anfänger"
Wo ist eigentlich der Anhang mit der Aufgabe?
|
Re: Memory für "Anfänger"
Zitat:
|
Re: Memory für "Anfänger"
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Memory für "Anfänger"
[OT]Wenn unsere Infolehrer nur mal solche Hinweise geben würden, läge der Durschnitt mit Sicherheit unter 3,4...[/OT]
|
Re: Memory für "Anfänger"
Ich finde die Aufgabenstellung (=Lösung) eures Lehrers nicht besonders elegant. Das was er da nutzt sieht aus wie urlater Turbo-Pascal Code, der nach Delphi übertragen wurde. Ich meine, sicher könnte man sich bei so einem Mini-Projekt Klassen sparen, aber zumindest records (zur halbwegs komfortablen Handhabung der Daten) und etwas mehr flexibilität (zum Beispiel um mehr Karten einzubinden) sollte schon drin sein.
edit:
Delphi-Quellcode:
ist übrigens Schwachsinn. Er wird nicht aktiviert sondern nur initialisiert um sicher zu sein, dass neue Zufallszahlen gebildet werden und keine Wiederholung zum vorherigen Durchlauf vorkommt. Du kannst Random auch ohne Randomize; verwenden, ist aber Meist nicht zu empfehlen.
randomize; // Zufallszahlengenerator [b]aktivieren[/b]
|
Re: Memory für "Anfänger"
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr. |
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