Leichtes memoryspiel in lazerus programmieren

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
yuke
Beiträge: 6
Registriert: Do 26. Okt 2023, 14:16

Leichtes memoryspiel in lazerus programmieren

Beitrag von yuke »

Hallo, ich kenn mich selber noch gar nicht so gut aus mit dem programmieren in Lazarus, also ich bin quasi ein richtiger Anfänger. Ich brauch unbedingt Hilfe um ein Memoryspiel mit acht Spielkarten zu programmieren, da ich es einfach nicht schaffe. Ich freue mich über antworten, danke im Voraus!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von af0815 »

Aha, gibt es wieder Hausübungen ?!

Ich würde sagen du fängst an und schreibst dann wo dein genaues Problem ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

yuke
Beiträge: 6
Registriert: Do 26. Okt 2023, 14:16

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von yuke »

ich habe schon angefangen, ich habe Probleme, beim functions geben, also ich habe die Karten schon alle eingefügt als timages. und die Bilder eingefügt, bei dem Quelltext ist mein Problem.

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von theo »

yuke hat geschrieben:
Do 26. Okt 2023, 14:59
ich habe schon angefangen, ich habe Probleme, beim functions geben, also ich habe die Karten schon alle eingefügt als timages. und die Bilder eingefügt, bei dem Quelltext ist mein Problem.
Das geht mir genauso! Mein Problem ist auch meistens beim Quelltext wenn ich programmiere. :wink:
Wie kann man dir jetzt genau helfen, ohne die ganze Arbeit für dich zu machen?

yuke
Beiträge: 6
Registriert: Do 26. Okt 2023, 14:16

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von yuke »

wenn du so fragst, geht es mir eigentlich nur ums Vorgehen, also was ich schritt für Schritt machen müsste, dabei musst du mir ja nicht die commands vorgeben, aber es würde mir sehr helfen zu verstehen, wie man in diesem Programm programmiert, da ich es erst zum ersten Mal benutzte

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von theo »

yuke hat geschrieben:
Do 26. Okt 2023, 15:27
wenn du so fragst, geht es mir eigentlich nur ums Vorgehen, also was ich schritt für Schritt machen müsste, dabei musst du mir ja nicht die commands vorgeben, aber es würde mir sehr helfen zu verstehen, wie man in diesem Programm programmiert, da ich es erst zum ersten Mal benutzte
Wie lautet denn die Hausaufgabe genau?
Mit Spielen kenne ich mich eigentlich nicht aus.

yuke
Beiträge: 6
Registriert: Do 26. Okt 2023, 14:16

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von yuke »

also es soll einfach nur ein kleines memory-spiel programmiert werden, indem man 4 Paare aufdecken muss. Wenn man ein falsches Paar aufdeckt sollen sich die jeweiligen Karten wieder umdrehen und man soll gewinnen, wenn man alle Paare aufgedeckt hat. Außerdem sollte man noch die Möglichkeit haben, durch einen Button, die Karten wieder neu zu mischen und erneut zu spielen. Bedanke mich vielmals wenn du mir helfen kannst.

Benutzeravatar
theo
Beiträge: 10499
Registriert: Mo 11. Sep 2006, 19:01

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von theo »

Ich helfe gerne wenn du konkrete Fragen hast, aber ich mache nicht die Arbeit für dich.

Wenn es dir nicht ums Lernen geht, dann klau's doch einfach. Z.B. hier:
https://github.com/mehmetulukaya/lazheros

yuke
Beiträge: 6
Registriert: Do 26. Okt 2023, 14:16

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von yuke »

ich danke dir trotzdem!

Benutzeravatar
KodeZwerg
Beiträge: 100
Registriert: Mo 6. Feb 2023, 11:04

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von KodeZwerg »

Da Du auf die genaue Aufgabestellung nur rudimentär geantwortet hast kann ich es nur so sagen:
Erstelle dir ein 2 Dimensionales array (coordsXY) mit X und Y, das dient dazu im das Visuelle irgendwie im Quelltext zu haben.
Erstelle dir ein weiteres array (cardsXY) mit einer Länge von X * Y, da kommen die Spielkarten für eine Runde im Quelltext rein.
Erstelle dir ein weiteres array (allCards) wo mit einer Länge von "Anzahl einzigarter Karten" (also jede verschiedene Karte ein mal)
Für eine neue Runde erstelle nun eine Kopie von allCards in "currentCards", aus der ziehst Du per "Random()" eine Karte und kopierst sie zwei mal nach "cardsXY" und entfernst per "Delete()" diese aus "currentCards" raus.
Das wiederholst Du so oft bis die Anzahl der Karten in "cardsXY" der Anzahl der möglichen visuellen Karten entspricht.
Nun mischt Du "cardsXY"
Jetzt wieder Karten ziehen und in das coordsXY array verteilen, das kann total sequenziell passieren da sie ja bereits gemischt sind.
Der letzte Schritt, lese nun das coordsXY array und zeige nun visuell die entsprechende Karte dar.

Meine Empfehlung für all das wäre es mit Byte arrays zu läsen es sei denn ein Kartendeck kann mehr als 256 Karten haben.
Nummer 1 für die niedrigste Karte in deiner TImageList bis hoch zum maximum, so kannst du bequem per Index die Bildchen verwalten.
Nummer 0 würde ich dem "umgedreht" bild geben, also die Rückseite einer Karte.

Der eigentliche Spielablauf ist ja recht simpel, OnClick() event-Handler für die Bilder, prüfen welcher Index das ist, merken, zweite Karte aufdecken, Index merken, Kontrollieren, passt es? = aufgedeckt lassen und aus dem OnClick() rausnehmen, passt es nicht? bilder wieder umdrehen

Ich hoffe es ist verständlich genug.
Zuletzt geändert von KodeZwerg am Sa 39. Okt 6043, 29:87, insgesamt 43-mal geändert.

hum4n0id3
Beiträge: 301
Registriert: So 5. Mai 2019, 15:23

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von hum4n0id3 »

Spontan gedacht würde ich ein Array erstellen das mir folgendes Spielfeld darstellt:

|--|--|--|--|
| 0 | 0 | 1 | 1 |
|--|--|--|--|
| 2 | 2 | 3 | 3 |
|--|--|--|--|
| 4 | 4 | 5 | 5 |
|--|--|--|--|
| 6 | 6 | 7 | 7 |
|--|--|--|--|

Die Zahlen die drin sind stehen für Ids einer Karte und können für den Anfang festgesetzt werden und später per zufall generiert werden. Eine Karte hat eine ID und ein Image. Anhand des Spielfeld-Array ein Spielfeld generieren, mit TImages vielleicht und jeweils ein Click-Event das ein Image anzeigt das der Karte-ID entspricht und prüfen ob die IDs gleich sind. Sind die das, kann man Punkte dazu zählen und die Images offen lassen. Bei unterschiedlichen IDs werden die Images wieder auf das Ursprungsbild zurück gesetzt.

Ich mässte jetzt selbst ausprobieren ob das funktioniert ... :lol:

yuke
Beiträge: 6
Registriert: Do 26. Okt 2023, 14:16

Re: Leichtes memoryspiel in lazerus programmieren

Beitrag von yuke »

ok danke

Antworten