![]() |
Memory Programm
Hallo,
ich bin in der 12 Klasse und müssen in dem Halbjahr ein Programm selbst erstellen. Wir haben uns (meine Partnerin und ich) für Memory entschieden. Der Grundzug ist getan. Uns fehlt nur noch einige Programmiertechnische Dinge. Das wichtigste eigentlich am Memory. Das umdrehen der Karten. Wir haben uns überlegt mit einer "if-then" Funktion den Vergleich der Bilder durchzuführen, nur fehlt uns, dass sich die Bilder umdrehen wenn wir sie anklicken und immer nur 2 umgedreht werden können & das bei falscher Zuordnung das sie sich wieder umdrehen. Stehen auf dem Schlauch. Ein Lösungsansatz würde uns wahrscheinlich schon helfen. Danke schon mal im voraus. ~ Maria |
AW: Memory Programm
Merkt Euch doch einfach in einer Zählvariablen, wieviele Karten aktuell umgedreht sind. Wenn mehr als 1, ggf. etwas warten, damit der Spieler die Bilder auch sieht und sich merken kann, Karten umdrehen und Zähler wieder auf 0 setzen. Beim Klicken auf eine Karten, diese umdrehen und Zähler erhöhen.
|
AW: Memory Programm
Entschuldigung wenn das jetzt dumm rüber kommt.
aber was meinst du damit? beim Memory werden ja 2 karten umgedreht. entweder passen diese zusammen oder nicht und müssen wieder umgedreht werden :/ |
AW: Memory Programm
Ja. Nehmen wir mal an, Ihr verwendet TImages zur Anzeige der Karten. Der Spieler klickt nun auf so ein Image, der Zähler wird erhöht, steht also auf 1. Nun klickt er die 2. Karte an, der Zähler erhöht sich auf 2. Jetzt werden die Karten verglichen, und wenn sie nicht gleich sind, werden sie wieder umgedreht, ansonsten entfernt, auf jeden Fall wird der Zähler wieder auf 0 gesetzt. Der Vergleich findet also nur statt, wenn der Zähler auf 2 steht, sonst hat es ja auch keinen Sinn.
|
AW: Memory Programm
Im Grunde ist es ja eine
![]()
Den State könnte man auch an den Speichern auslesen: Speicher 1 leer = keine Karte Speicher 2 leer = eine Karte Speicher 2 voll = zwei Karten Oder man zählt mit, dann entspricht der Zähler dem Speicher der letzen Karte. |
AW: Memory Programm
Hättest du einen Ansatz(Quelltext) zum Programmieren dieses Zählers?
Sitzen gerade beide hier und grübeln. ja das haben wir verstanden. nur die Umsetzung fällt gerade schwer. |
AW: Memory Programm
Deklarier Dir eine globale Variable oder ein privates Feld des Formulars vom Typ Integer. Und diese Variable/dieses Feld wird nach jedem Karten-Umdrehen angepasst.
Delphi-Quellcode:
oder
Zaehler := Zaehler + 1;
Delphi-Quellcode:
if Zaehler > 1 then
Zaehler := 0; |
AW: Memory Programm
Hey ich bin es nochmal.
Wir haben die Woche mal rumgetüfftelt mit den Tipps. Aber egal wo wir alles deklariert haben und programmiert. Klappen tut es nicht ._. Gebe es freundlicher weise noch ideen oder tips? wir verzweifeln und müssen es bis Freitag fertig haben. ._. |
AW: Memory Programm
Wie wäre es denn, wenn Ihr Euren Code mal zeigt? Sonst wird es schwierig für uns, Euch zu zeigen, wo die Fehler sind.
|
AW: Memory Programm
Noch mehr Ideen = noch mehr Varianten, die nicht klappen könnten ... und selbst wenn was klappt, dann bringt es euch nichts, wenn ihr nichtmal versteht warum es ging.
Zitat:
|
AW: Memory Programm
okay Freundin hat mir den Quelltext jetzt gesendet.
sie hat folgendes gemacht.
Code:
var
FormAL: TFormAL; zaehler: integer; implementation uses UnitStart; {$R *.dfm} procedure TFormAL.Button2Click(Sender: TObject); begin formstart.show; end; procedure TFormAL.Image15Click(Sender: TObject); begin image15.visible:= false; end; . . {die restlichen karten} . procedure TFormAL.FormCreate(Sender: TObject); begin If zaehler > 1 then Zaehler := 0; end; end. |
AW: Memory Programm
Die Images beim Click verschwinden zu lassen, halte ich nicht für geschickt. Wenn es 16 Karten sind, braucht Ihr insgesamt 9 Bilder, nämlich 8 für die Paare und 1 für die Kartenrückseite. Beim Spielstart müssen dann alle Images natürlich die Rückseite anzeigen und erst beim Click werden sie "umgedreht", d.h. sie zeigen eins der anderen 8 Bilder an. Diese müssen ihnen erst einmal verteilt werden, und zwar so, dass alle 8 Bilder genau 2 Karten zugewiesen sind. Das wäre meiner Meinung nach der erste Schritt, den es umzusetzen gilt.
|
AW: Memory Programm
Also wir haben uns das so gedacht. Man sucht sich ein Thema aus und eine Schwierigkeit.
So und dann öffnet sich ein Formular Mit den Karten. 8 Paare und über jeden Ist das "Deckblatt". Und wenn man das anklickt ist das weg. So aber es muss ja wieder erscheinen wenn das Pärchen nicht passt. Und das bekommen wir mit unserem Delphi wissen was wir in der schule erlernt haben nicht wirklich hin. .. deswegen dachte ich Wir bekommen hier ein wenig hilfe. Weil ansonsten ist das Programm fertig. Nur das bereitet uns Kopfzerbrechen. Wir wissen zu wenig über Delphi. |
AW: Memory Programm
Zitat:
Dann können wir uns dort einlesen und exakt beantworten, was noch fehlt und wo es hingehört. |
AW: Memory Programm
Und man wechselt die Darstellung eines TImage am Einfachsten, indem man eine andere Grafik hineinlädt.
|
AW: Memory Programm
Zitat:
Da gibt es 8 Paare von irgendwas. Aber wie erkenne ich ein Paar, bzw. wie erkenne ich, wenn ich zwei Irgendwas habe, dass es ein Paar ist, diese also zusammengehören? Nun, ich merke mir das am besten durch eine Zahl. Jedes Irgendwas bekommt eine Zahl. Jede Zahl wird genau zweimal vergeben. Da ich anhand dieser Zahl ein Paar identifizieren kann lege ich mal fest, dass das die PaarID ist. Jedes Irgendwas kann entweder verdeckt (0), aufgedeckt (1) oder weg (2) sein. Das ist wohl der Status, also lege ich auch mal fest, dass das der Status ist.
Über die PaarID kann ich auf Gleichheit prüfen, über den Status kann ich prüfen ob die Karte gezogen werden kann und über den Status und PaarID kann ich das anzuzeigende Bild bestimmen. Das ist doch schon die halbe Miete. Jetzt wieder zurück zu Delphi, wie kann ich das abbilden?
Delphi-Quellcode:
Das mal so als Starthilfe
type
TCard = record PaarID: Integer; Status: Integer; end; TCardArray = array[0..15] of TCard; const CARD_SHOWBACK = 0; CARD_SHOWFRONT = 1; CARD_INVISIBLE = 2; |
AW: Memory Programm
Hi,
geht mal auf ![]() Ich gebe euch kein fertiges Programm, da ihr ja was lernen wollt ;) Aber kleine Codeschnipsel, wie ich dies und jenes umgesetzt habe, kann ich gerne geben. Nicht wundern: Seite wurde das letzte mal 2008 oder so aktualisiert, da ich z.Z. nicht mehr wirklich zum programmieren komme. Apropo: Das Programm keinesfalls "Memory" nennen. "Memory" ist ein geschützter Begriff und der Rechteinhaber klagt da gerne mal ;) |
AW: Memory Programm
Hey, danke erstmal an alle.
erstmal zu dir Badenpower. ich kann dir das leider nicht komplett zeigen da es aus insgesamt aus viel zu vielen Formularen besteht. und es geht mir nicht drum das ihr mir meine Aufgaben erledigt. Ich versuche nur ne Lösung zu finden für das umdrehen von 2 karten. bei gleichem Bild bleiben sie offen bei verschiedenen Bildern müssen sie sich wieder umdrehen. Sir Rufo, den Sinn so als Hintergrund ist uns mittlerweile plausibel. der umsatz fällt und schwer, da ich persönlich sagen muss, unsere Lehrerin selbst nicht wirklich versteht was sie uns erklärt.. was schade ist. Nunja... da es ein einfach Informatikkurs ist, haben wir da nicht alles von Delphi erfahren.. und uns ist jetzt erst bewusst das das doch nicht so einfach ist wie wir dachten. Aber wir lernen ja auch daraus. Aber wir versuchen deine Starthilfe zu nutzen und fortzusetzen. Danke :)))) Catbytes. Ich muss sagen dein Programm ist schon nice & ahnung habt ihr alle. & wir wären überaus glücklich und zu tiefst dankebar wenn du uns ein paar schnipsel geben würdest vll auch mit erklärung damit wir wissen was wir gerade genau schreiben. Wichtig ist uns jetzt erstmal das öffnen von 2 karten und das vergleichen & umdrehen. |
AW: Memory Programm
Also wenn es nur um das Prinzip geht, dann sind Schaltflächen mit Zahlen am einfachsten. Dann fallen die ganzen grafischen Probleme weg. Auf meiner Webseite
![]() |
AW: Memory Programm
Zitat:
Zitat:
Ich würde nur ein TImage pro Karte nehmen und da immer das benötigte Bild reinladen. Die Nummer des Bildes könnte man in der Eigenschaft Tag des TImage speichern. Diese Nummer wäre dann gleichzeitig der Dateiname des Bildes. aufdecken:
Delphi-Quellcode:
Image.Picture.LoadFromFile(IntToStr(Image.Tag)+'.bmp');
verdecken:
Delphi-Quellcode:
Image.Picture.LoadFromFile('deckblatt.bmp');
Erst, wenn ein Pärchen gefunden wurde, werden die beiden Images auf visible:=false gesetzt. |
AW: Memory Programm
Zitat:
Nur absolute Pfade oder alternativ LoadFromResource. |
AW: Memory Programm
Zitat:
|
AW: Memory Programm
Andere Möglichkeit: ein Array oder eine Liste von Grafiken deklarieren und dort die Bilder einmalig beim Programmstart hineinladen. Wechsel der Anzeigegrafik kann dann durch einfache Zuweisung erfolgen, ohne dass erneut von der Festplatte geladen werden muss.
|
AW: Memory Programm
Z.B. mit Hilfe einer Imageliste
|
AW: Memory Programm
Japp, oder TObjectList oder Array of TGraphic oder oder...
|
AW: Memory Programm
Zitat:
Vielleicht sollten wir dann doch mal online Schulungen für Lehrer anbieten... :wall: |
AW: Memory Programm
Zitat:
und eure Ideen sind es zu geil und alles Lösungen nur ich könnte mir in den Arsch beißen das ich die nicht umsetzen kann weil mir die Kenntnisse fehlen. 2 Jahre Delphi und doch nichts ordentliches gelernt. aber echt lieb eure ganzen Ideen. Danke schonmal. Komme mir noch dümmer vor :/ |
AW: Memory Programm
Zitat:
Oder Delphi-Syntax Stand Dx-200x-XEx ? Sobald heutzutage ein Lehrer auffordert den Bleistift und ein Blatt Papier zu nutzen, ist er doch schon unten durch, und als hoffnungsloses Fossil abgestempelt. Gruß K-H Zitat:
Die meisten hier lernen trotzdem immer noch hinzu. |
AW: Memory Programm
[QUOTE=p80286;1293767]
Zitat:
Aber alle Ideen die hier angesprochen werden probieren wir aus und nichts will funktionieren. Wir haben auf dem Formular Schwierigkeit leicht 7 Paare. und schreiben das in die Karten rein (also die TImage) ... und die drehen sich nicht um wenn nicht drin steht: image15.visible:= false; |
AW: Memory Programm
Zitat:
Gruß K-H |
AW: Memory Programm
Zitat:
Und es geht dabei nicht darum das Programm für Euch zu schreiben, sondern um die Stellen zu analysieren, wo es hapert. |
AW: Memory Programm
es kommt keine Fehlermeldung.
wenn wir den Quelltext einschreiben passiert einfach nichts. die karte (deckkarte) verschwindet nicht mehr. das Programm läuft aber. das vergleichen muss ja irgendwie stattfinden ... und unsere Lehrerin meinte ein Zähler ist bei Images nicht möglich. |
AW: Memory Programm
Liste der Anhänge anzeigen (Anzahl: 4)
ich würde euch gern mein Programm zu senden... aber das ich hier leider nicht möglich und Quelltext hab ich eingefügt soweit vorhanden.
passt auf ich zeig euch Screens vom Programm. das ist das Grundgerüst. das ist bei jedem Thema mit leicht mittel schwer. und bei mittel und schwer sind es dann jeweils mehr karten. Quelltext? fast leer, weil nichts funktioniert, aber bitte :
Code:
unit UnitAL;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls; type TFormAL = class(TForm) Button2: TButton; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; Image7: TImage; Image15: TImage; Image16: TImage; Image17: TImage; Image18: TImage; Image19: TImage; Image20: TImage; Image21: TImage; Image8: TImage; Image9: TImage; Image10: TImage; Image11: TImage; Image12: TImage; Image13: TImage; Image14: TImage; Image22: TImage; Image23: TImage; Image24: TImage; Image25: TImage; Image26: TImage; Image27: TImage; Image28: TImage; procedure Button2Click(Sender: TObject); procedure Image15Click(Sender: TObject); procedure Image16Click(Sender: TObject); procedure Image17Click(Sender: TObject); procedure Image18Click(Sender: TObject); procedure Image19Click(Sender: TObject); procedure Image20Click(Sender: TObject); procedure Image21Click(Sender: TObject); procedure Image22Click(Sender: TObject); procedure Image23Click(Sender: TObject); procedure Image24Click(Sender: TObject); procedure Image25Click(Sender: TObject); procedure Image26Click(Sender: TObject); procedure Image27Click(Sender: TObject); procedure Image28Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var FormAL: TFormAL; zaehler: integer; implementation uses UnitStart; {$R *.dfm} procedure TFormAL.Button2Click(Sender: TObject); begin formstart.show; end; procedure TFormAL.Image15Click(Sender: TObject); begin image15.visible:=false; end; procedure TFormAL.Image16Click(Sender: TObject); begin image16.visible:= false; end; procedure TFormAL.Image17Click(Sender: TObject); begin image17.visible:= false; end; procedure TFormAL.Image18Click(Sender: TObject); begin image18.visible:= false; {aufgedeckt:= vergleicher() } end; procedure TFormAL.Image19Click(Sender: TObject); begin image19.visible:= false; end; procedure TFormAL.Image20Click(Sender: TObject); begin image20.visible:= false; end; procedure TFormAL.Image21Click(Sender: TObject); begin image21.visible:= false; end; procedure TFormAL.Image22Click(Sender: TObject); begin image22.visible:= false; end; procedure TFormAL.Image23Click(Sender: TObject); begin image23.visible:= false; end; procedure TFormAL.Image24Click(Sender: TObject); begin image24.visible:= false; end; procedure TFormAL.Image25Click(Sender: TObject); begin image25.visible:= false; end; procedure TFormAL.Image26Click(Sender: TObject); begin image26.visible:= false; end; procedure TFormAL.Image27Click(Sender: TObject); begin image27.visible:= false; end; procedure TFormAL.Image28Click(Sender: TObject); begin image28.visible:= false; end; procedure TFormAL.FormCreate(Sender: TObject); begin If zaehler > 1 then Zaehler := 0; end; end. |
AW: Memory Programm
Du kannst auch die unbedingt benötigten Dateien (namentlich *.pas, *.dfm und *.dpr) des Projekts in ein Zip-Archiv packen und das an Deinen Beitrag anhängen. Und dass nicht vorhandener Quelltext auch nichts tut, sollte klar sein.
|
AW: Memory Programm
Ich würe mal sagen, das ist - gelinde gesagt - gar nichts. Ein paar Images auf einer Form und ein paar Click-Handler.
Das bekommt "jeder" nach 2 Stunden Schulung hin. Vielleicht erläuterst du einmal, was du von Delphi kennst?
|
AW: Memory Programm
in info hatten wir behandelt :
Schleifen (for-to-do, repeat-until) dann records... so dann eig berechnugnen damit Zinssatz Berechnung und das in Tabellen übertragen. arrays sowas wie ne Buchführung wo Daten von einer Person eingegeben werden unter einer nummer gespichert werden und abgerufen werden könnten dieser Nummer. nunja und dann haben wir uns das komplette letzte Halbjahr mit Kryptologie beschäftigt. und zufallszahlen. da haben wir eigentlich nichts mit Delphi gemacht. |
AW: Memory Programm
Ähm, ja... ich dachte, dass Programm sei soweit fertig, ausser dass das Umdrehen und weglegen der Karten nicht funktioniert.
Aber hier fehlt ja die komplette Programmlogik. Wollt Ihr bei der Darstellung der Bilder mit zwei übereinanderliegenden Images bleiben, also Bild und Deckblatt getrennt? |
AW: Memory Programm
wenn das zu umständig ist kann man das noch ändern ._.
das programm ist ja nurnoch der teil mit umdrehen vergleichen und offen lassen oder wieder umdrehen. |
AW: Memory Programm
Naja, dieses "nur noch" ist aber doch eben die komplette Spiellogik.
|
AW: Memory Programm
schon ._. oh mahn
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 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