![]() |
AW: Memory-Spiel: Ideen
Zitat:
Zitat:
Klar ist die Klasse von Vorteil wenn es dann um bei dem Beispiel evtl. 10 vorhandene Darlehen geht. |
AW: Memory-Spiel: Ideen
Was ich eigentlich meinte: unterteile Dein Projekt erst einmal in kleine Teilprobleme. Diese Teilprobleme unterteilst Du wieder in noch kleinere Teilprobleme. Das Ganze wiederholst Du so lange, bis eine weitere Unterteilung keinen Sinn mehr macht. Das alles aber nicht am Computer, sondern ganz antiquiert mit einem Blatt Papier und einem Stift. Diese zig Teilprobleme sollten nun so übersichtlich sein, dass sie sich relativ leicht in Code formulieren lassen. Ob Du das nun mit Klassen löst oder lieber vorwiegend prozedural, bleibt Dir überlassen.
|
AW: Memory-Spiel: Ideen
Ja das ist schon mal eine gute Idee :)^^
Wir sollen alles machen was wir können. Also einfach da ich ja YT mache ist es kein Problem ein Intro zu gestalten. Oder das man bei der Form die Hintergrundfarben ändern kann. Schriftgrößen, Positionen, Hilfen usw. solche Mini Verbesserungen machen dann höhere Punktzahlen aus. Es gab einen der hat 3D Snake gemacht, also in Delphi eine 3D Engine eingebunden und so :D Naja jedenfalls wusste der Lehrer auch nicht wie sowas geht und hat nur dumm in den Projekten rumgeklickt. Und dann erlaubt der sich am Ende noch Noten zu vergeben. Frechheit.! |
AW: Memory-Spiel: Ideen
Hi, also ich will das ja ohne Klassen machen...
Zwei gleiche Karten aufgedeckt geht schon mal.
Delphi-Quellcode:
procedure TFormSpiel.Image1Click(Sender: TObject);
begin Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1.jpg'); B1_Gefunden := 1; showmessage('B1_Gefunden ist ' + inttostr(b1_Gefunden)); if (B1_Gefunden = 1) and (B1_1_Gefunden = 1) then begin Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg'); Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg'); end; end;
Delphi-Quellcode:
Sieht dann so aus:
procedure TFormSpiel.Image1_1Click(Sender: TObject);
begin Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1.jpg'); B1_1_Gefunden := 1; if (B1_1_Gefunden = 1) and (B1_Gefunden = 1) then begin Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg'); Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_1A.jpg'); end end; ![]() _________________ Wenn zwei Karten nicht gleich sind erkennt er das auch. Nun will ich aber, dass er dann trz. 2 Sekunden die Karten offen hält, damit man sich diese merken kann.
Delphi-Quellcode:
Was stimmt am Timer nicht?
procedure TFormSpiel.Image2Click(Sender: TObject);
begin Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2.jpg'); showmessage('B1_Gefunden ist ' + inttostr(B1_Gefunden)); showmessage('B1_1_Gefunden ist ' + inttostr(B1_1_Gefunden)); showmessage(inttostr(b2_1_Gefunden)); if (B1_Gefunden = 0) and (B1_1_Gefunden = 0) or (B2_1_Gefunden = 0) then begin Timer1.Enabled := True; { showmessage('NEW B1_Gefunden ist ' + inttostr(B1_Gefunden)); showmessage('NEW B1_1_Gefunden ist ' + inttostr(B1_1_Gefunden)); B1_NichtGefunden := 1; showmessage('2x NEW B1_NichtGefunden ist ' + inttostr(B1_NichtGefunden)); B1_1_NichtGefunden := 1; showmessage('2x NEW B1_NichtGefunden ist ' + inttostr(B1_1_NichtGefunden)); if (B1_NichtGefunden = 1) and (B1_1_NichtGefunden = 1) then begin } Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); end else begin // showmessage(inttostr(B2_1_Gefunden)); B2_Gefunden := 2; // showmessage(inttostr(B2_Gefunden)); if (B2_Gefunden = 2) and (B2_1_Gefunden = 2) then begin Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2A.jpg'); Image2_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2A.jpg'); end { Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Spielkarte_2.jpg'); B2 := 2; B1 := 0; showmessage(inttostr(b1)); if (B1 = 0) then begin Image1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); Image1_1.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); end else begin showmessage('B2_1 ist ' + inttostr(b2_1)); end } end; end;
Delphi-Quellcode:
procedure TFormSpiel.Timer1Timer(Sender: TObject);
var i, a: integer; begin if (Timer1.Enabled = True) then begin i := 0; for i := 1000 to 5000 do begin a := i + 1000; end; showmessage(inttostr(a)); if (a = 5000) then begin Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); end else Timer1.Enabled := False; if (Timer1.Enabled = False) then showmessage('Zu'); end; end; Ich frage euch, weil ich sonst meist lange vor dem Quelltext hocke und mehr ausprobiere bis es geht. Versuche Fehler mit (showmessage)'s einzuschränken, aber denke mal das ihr ihn schnell findet. :) Und das ( ![]() |
AW: Memory-Spiel: Ideen
hallo,
ich hab mal versucht deinen Timer-Code zu verstehen:
Delphi-Quellcode:
Wenn du mich jetzt fragst, wie man's besser machen sollte:
procedure TFormSpiel.Timer1Timer(Sender: TObject);
var i, a: integer; begin if (Timer1.Enabled = True) then //Muss du abfragen ob der Timer.enabled ist? Wenn er nicht enabled wäre, würde das programm hier doch gar nicht hinkommen; Die Diskussion ob es besser wäre, zu schreiben : 'If Timer1.enabled then begin', spar ich mir hier begin i := 0; //Die Schleifenvariabel vorher auf null zu setzen, macht keinen Sinn!!! for i := 1000 to 5000 do begin //Du setzt i hier doch sowieso auf 1000 a := i + 1000; // Ich zähle für i von 1000 bis 5000 und a ist gleich i+ 1000????Sinnvoll? end; showmessage(inttostr(a));//Der Wert wird hier wohl immer gleich 6000 sein if (a = 5000) then //Wenn a=5000 (also i=4000) dann wird die Rückseite geladen, da a aber nach der Schleife immer 6000 ist, wird die Rückseite wohl nicht geladen begin Image2.Picture.LoadFromFile('\MEMORY\Memory Spiel_Version 2\Spielkarten\Rueckseite.jpg'); end else //Ansonsten wird der Timer disabled; da nur der Else-Block erreicht wird, wird der Timer disabled aber die Rückseite wurde nicht geladen Timer1.Enabled := False; if (Timer1.Enabled = False) then showmessage('Zu'); end; end; Ich würde es komplett anders programmieren. mfg |
AW: Memory-Spiel: Ideen
Zitat:
Ein Timer "feuert" wenn die voreingestellte Zeit abgelaufen ist. Für Dich könnte das heißen, das Dein Programm eine Karte aufdeckt, den Timer einstellt und dann nichts mehr tut. Wenn der Timer "feuert" wird die Karte wieder verdeckt und das Programm läuft weiter. Übrigens solltest Du Dich vllt. einmal mit dem ![]() Gruß K-H P.S. Wenn der Timer "enabled" ist
Delphi-Quellcode:
, dann feuert er nach der eingestellten Zeitspanne. Nach
if Timer1.Enabled then
Delphi-Quellcode:
, tut sich da nichts mehr!
Timer1.Enabled:=false;
|
AW: Memory-Spiel: Ideen
Zitat:
Also Ob Karte 1 und Karte 1 oder Karte 1 und Karte 2 die Image-Datei, in der es aufgedeckt ist 2 Sekunden offen halten. |
AW: Memory-Spiel: Ideen
Zitat:
|
AW: Memory-Spiel: Ideen
Zitat:
Und natürlich immer den coolen langen Pfad mit übernehmen. Selbstverständlich den Dateinamen Fix vorgeben... Will man ja sowieso nicht ändern. Arrays sind sowieso schlecht... Genau wie Klassen. Wenn Du hier Fragen stellst, warum liest Du den nicht die Antworten und befolgst die Empfehlungen? |
AW: Memory-Spiel: Ideen
Zitat:
Haben bisher nur einmal mit Arrays gearbeitet. Für eine Person reicht es aus, wenn das Spielfeld sich nicht zufällig gestaltet sondern ich 10 Formen vorgebe von der eine zufällig aufgerufen wird. Klassen sind nicht schlecht, nur ist es bei mir so das ich nur schlechte Punktzahlen durch diese Klassen bekommen habe, weil ich diese nicht verstehe umzusetzen :P Meinen Timer habe ich z.B. überarbeitet. Ich passe mich auch nur an alle anderen im Jahrgang an, da zeichnet auch keiner ein Struktogramm. :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 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 by Thomas Breitkreuz