Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Memory-Spiel: Ideen (https://www.delphipraxis.net/187916-memory-spiel-ideen.html)

nahpets 23. Mär 2016 20:17

AW: Memory-Spiel: Ideen
 
Das ist falsch (wenn auch kompilierbar):
Delphi-Quellcode:
FormSpiel.Image1 := FormSpiel.Image1.Create(FormSpiel);
Weiter oben schrieb ich zweimal, wie es heißen müsste.

Da nach der Freigabe die Images sofort neu erstellt und anschließend die Dateien neu in die Images geladen werden, kannst Du Dir die Freigabe und Neuerstellung auch sparen und die Dateien laden. Dabei wird der vorhandene Inhalt der Images eh überschrieben.

Sir Rufo 23. Mär 2016 20:21

AW: Memory-Spiel: Ideen
 
Zu dem italienischen Code sage ich jetzt mal nichts :mrgreen:

Das mit dem freigeben vom Image und wieder erzeugen, nur um das Bild dort zu entfernen ...

Wenn du einen Bilderrahmen hast und möchtest das Bild tauschen, ist dann auch dein erster Gedanke den Rahmen zu zerschlagen und einen neuen zu kaufen?

Möglich ja, aber sinnvoll?

XardasLP 23. Mär 2016 20:33

AW: Memory-Spiel: Ideen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1333690)
Zu dem italienischen Code sage ich jetzt mal nichts :mrgreen:

Das mit dem freigeben vom Image und wieder erzeugen, nur um das Bild dort zu entfernen ...

Wenn du einen Bilderrahmen hast und möchtest das Bild tauschen, ist dann auch dein erster Gedanke den Rahmen zu zerschlagen und einen neuen zu kaufen?

Möglich ja, aber sinnvoll?

Der Programmierer muss sich zurecht finden, nicht der Anwender ;)

Naja dachte jetzt nicht, dass man das Image überschreiben kann, so wie man eine Textdatei überschreibt.
Dachte da fehlen dann Rechte oder so ^^

Luckie 23. Mär 2016 20:55

AW: Memory-Spiel: Ideen
 
Aber jede Wette in einem Monat findest du dich da auch nicht mehr zu recht.

Überschreiben? Rechte? Du lädst doch nur ein anderes Image in die Komponente. Was dachtest du, was du da für Rechte brauchst.

PS: Und wenn wir dir helfen sollen, sollten wir uns wohl auch in deinem Code zu recht finden. :roll: Und so unübersichtlich wie der ist, ist das fast ein Ding der Unmöglichkeit. Da scheint der maßen viel redundanter Code zu sein. Man könnte den Code wahrscheinlich um 2/3 kürzen mit Subroutinen und Kapselung in einer Klasse. Den Code zum Erstellen und Platzieren der Images kann man in einer Routine auslagern und schon ist er um 50% kürzer und übersichtlicher.

XardasLP 23. Mär 2016 21:00

AW: Memory-Spiel: Ideen
 
Wie schon mal erwähnt kann ich mit Klassen persönlich nicht's anfangen. Und ich habe lieber einen längeren Quelltext und ein funktionierendes Programm als ihn zu kürzen und am Ende geht dann gar nichts mehr.

Programmoptimierung kommt am Schluss und nicht mitten drinne.

Wenn man gut mit Klassen umgehen kann, dann ist klar das man es kürzen kann, ich kann es nicht ;) ^^

Luckie 23. Mär 2016 21:04

AW: Memory-Spiel: Ideen
 
Programmoptimierung fängt beim Konzept, was es bei dir nicht gibt, und der ersten Zeile Code an. Spart Arbeit, beugt Fehler vor und sorgt für sauberen Code.

Dann wäre das doch das perfekte Projekt, um sich mit Klassen zu beschäftigen. Wenn man natürlich kein Interesse hat was dazu zu lernen und sich weiter zu entwickeln...

XardasLP 23. Mär 2016 21:25

AW: Memory-Spiel: Ideen
 
Liste der Anhänge anzeigen (Anzahl: 3)
In der Schule hat man sowas dran:

Siehe Bild_1 / Bild_2 / Bild_3

Dieses nennt man dann Komplexaufgabe und das ist das maximalste was zu Klassen dran kommt. Dort sind Klassendiagramme immer gegeben und daraus entwickelt man dann die Klassen-basierte Programmierung mit eigenen Klassen. Mehr ist es nicht.

Deshalb kann ich noch nicht mit eigenen Klassen arbeiten, weil das viel komplexer ist als das Komplexaufgaben-Projekt.

nahpets 23. Mär 2016 21:27

AW: Memory-Spiel: Ideen
 
Delphi-Quellcode:
if Paar1GELOESCHT = 0 then
Image1.Enabled := False;
lässt sich ändern in
Delphi-Quellcode:
Image1.Enabled := Paar1GELOESCHT <> 0;
Delphi-Quellcode:
if Paar1GELOESCHT = 0 then
Image1.Enabled := True;
-->
Delphi-Quellcode:
Image1.Enabled := Paar1GELOESCHT = 0;
Delphi-Quellcode:
if Paar1GELOESCHT = 0 then
Image1.Enabled := False;

if Paar1GELOESCHT = 0 then
Image1_1.Enabled := False;
-->
Delphi-Quellcode:
Image1.Enabled := Paar1GELOESCHT <> 0;
Image1_1.Enabled := Image1.Enabled;
Aus
Delphi-Quellcode:
if Paar1GELOESCHT = 0 then
Image1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
if Paar1GELOESCHT = 0 then
Image1_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
if Paar1GELOESCHT = 0 then
Image9.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
if Paar1GELOESCHT = 0 then
Image10.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
if Paar1GELOESCHT = 0 then
Image1.Enabled := True;
if Paar1GELOESCHT = 0 then
Image1_1.Enabled := True;
wird
Delphi-Quellcode:
if Paar1GELOESCHT = 0 then begin
  Image1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
  Image1_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
  Image9.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
  Image10.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
  Image1.Enabled := True;
  Image1_1.Enabled := True;
end;
Selbst ohne Klassen spart man gefühlte 1000 (und mehr) Zeilen ;-)

Und da zur Laufzeit der Wechsel von Kartenvorderseite zur Kartenrückseite und umgekehrt funktioniert, sollte das bei der Initialisierung für ein neues Spiel auch funktionieren, so dass dort die Freigabe und Neuerstellung der Images obsolet sein dürfte.

XardasLP 23. Mär 2016 21:41

AW: Memory-Spiel: Ideen
 
Ja stimmt, habe das eine mal schon von 14.000 auf 7000 runtergekürzt :) ^^

Luckie 23. Mär 2016 21:54

AW: Memory-Spiel: Ideen
 
Und jetzt das ganze noch in Routinen packen und mit Parametern aufrufen.

Zu den 14.000 Zeilen für ein Memory sage ich jetzt mal nichts.

XardasLP 23. Mär 2016 22:22

AW: Memory-Spiel: Ideen
 
Der Lehrer ist ein dummy, wenn er die Dokumentation dann nachvollziehen kann, dann ist es ok.

Dem Anwender bleibt der Quelltext ja verborgen. Die Lehrer sagen uns immer das wir trz. noch Schüler sind und keine angestellten Software- Entwickler :P

Luckie 23. Mär 2016 23:16

AW: Memory-Spiel: Ideen
 
Es geht nicht um den Anwender. Es geht um dich.

Und warum soll man es als Schüler nicht gescheit lernen? Es geht ja nicht um hochkomplxe Software die du programmieren sollst. Ein einfaches Memory Spiel, sauber programmiert.

Und glaub mir, eine saubere Programmierung beugt Fehler vor und hilft Fehler zu finden.

Aber wo waren wir jetzt bei deinem Problem stehen geblieben?

XardasLP 23. Mär 2016 23:39

AW: Memory-Spiel: Ideen
 
Was muss man noch alles := nil setzen?

Auch die Variablen, Timer, Label, Edit usw.?

Delphi-Quellcode:
FormSpiel.Image1.Picture := Nil;
FormSpiel.Image1_1.Picture := Nil;
FormSpiel.Image2.Picture := Nil;
FormSpiel.Image2_1.Picture := Nil;
FormSpiel.Image3.Picture := Nil;
FormSpiel.Image3_1.Picture := Nil;
FormSpiel.Image4.Picture := Nil;
FormSpiel.Image4_1.Picture := Nil;
FormSpiel.Image5.Picture := Nil;
FormSpiel.Image5_1.Picture := Nil;
FormSpiel.Image6.Picture := Nil;
FormSpiel.Image6_1.Picture := Nil;
FormSpiel.Image7.Picture := Nil;
FormSpiel.Image7_1.Picture := Nil;
FormSpiel.Image8.Picture := Nil;
FormSpiel.Image8_1.Picture := Nil;
FormSpiel.Image9.Picture := Nil;
FormSpiel.Image10.Picture := Nil;
Wenn man es so hat und vorher durchgespielt hat treten 1000 Fehler auf.

nahpets 23. Mär 2016 23:50

AW: Memory-Spiel: Ideen
 
Du muss überhauptnichts auf Nil setzen.

Einfach überall die Werte zuweisen, die für den Beginn eines Spieles erforderlich sind und gut is.

Ggfls. weist Du die Werte zu, die Du im Objektinspektor zugewiesen hast, sofern Du dort andere Werte vorgegeben hast, als die von Delphi vergebenen Vorgaben.

XardasLP 24. Mär 2016 00:11

AW: Memory-Spiel: Ideen
 
Delphi-Quellcode:
FormSpiel.Image1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image1_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image2.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image2_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image3.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image3_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image4.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image4_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image5.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image5_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image6.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image6_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image7.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image7_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image8.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image8_1.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image9.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Image10.Picture.LoadFromFile('\Spielkarten\Rueckseite.jpg');
FormSpiel.Label_Information.Caption := '';
FormSpiel.ProgressBar_Spielfortschritt.Position := 0;
FormSpiel.Label_Paare_Gefunden.Caption := '0 / 8';
FormSpiel.Label_PKZ_1.Caption := '0 von 16';
FormSpiel.Label_PKZ_2.Caption := '';
FormSpiel.Image1.Enabled := True;
FormSpiel.Image1_1.Enabled := True;
FormSpiel.Image2.Enabled := True;
FormSpiel.Image2_1.Enabled := True;
FormSpiel.Image3.Enabled := True;
FormSpiel.Image3_1.Enabled := True;
FormSpiel.Image4.Enabled := True;
FormSpiel.Image4_1.Enabled := True;
FormSpiel.Image5.Enabled := True;
FormSpiel.Image5_1.Enabled := True;
FormSpiel.Image6.Enabled := True;
FormSpiel.Image6_1.Enabled := True;
FormSpiel.Image7.Enabled := True;
FormSpiel.Image7_1.Enabled := True;
FormSpiel.Image8.Enabled := True;
FormSpiel.Image8_1.Enabled := True;
FormSpiel.Timer_FALSCH.Enabled := False;
FormSpiel.Timer_UNAUFGEDECKT.Enabled := False;
FormSpiel.Timer_LOESCHEN.Enabled := False;
end;
Habe ja alle auf Standard zurückgesetzt.
Treten aber dann solche Fehler auf:
https://gyazo.com/70112159a8422face04d14a14d36aff2

Die Timer setzen eigentlich alle Variablen zurück. Weiß net woran das liegen soll.

Luckie 24. Mär 2016 00:24

AW: Memory-Spiel: Ideen
 
Wo sind da jetzt die Fehler? ich sehe da nur ein Rumgeklicke.

Und die Pfade sind auch sehr bedenklich. Das sind absolute Pfade vom aktuellen Arbeitsverzeichnis. Nur was das Arbeitsverzeichnis ist, ist so ziemlich ein Glücksspiel, dass es das Verzeichnis von deiner Anwendung ist.

Luckie 24. Mär 2016 00:26

AW: Memory-Spiel: Ideen
 
Nachtrag. Man könnte auch alle Grafiken zur Entwicklungszeit in eine Imageliste packen. Dann werden sie in die Exe als Ressource einkompiliert.

Mavarik 24. Mär 2016 00:29

AW: Memory-Spiel: Ideen
 
Zitat:

Zitat von XardasLP (Beitrag 1333697)
Ja stimmt, habe das eine mal schon von 14.000 auf 7000 runtergekürzt :) ^^

OMG... Mein 3D Memory inkl. Bildeditor hat 800 Zeilen... Davon wahrscheinlich 350 Zeilen von Compiler generiert...

Du solltest Dich echt mal mit Array's und Schleifen beschäftigen...

Luckie 24. Mär 2016 01:31

AW: Memory-Spiel: Ideen
 
Ich glaube selbst mein NonVCL Memory hat weniger.

Neutral General 24. Mär 2016 08:37

AW: Memory-Spiel: Ideen
 
Das hat jetzt noch niemand vorgeschlagen soweit ich gelesen habe, aber man kann sich das ganze neu Erzeugen/Zuweisen der Images doch größtenteils sparen wenn man einfach das alte Spielformular freigibt und neuerstellt. Dann hat man ein komplett frisches Spielformular das genauso funktioniert wie beim ersten Spiel.

Zitat:

Zitat von XardasLP (Beitrag 1333693)
Wie schon mal erwähnt kann ich mit Klassen persönlich nicht's anfangen. Und ich habe lieber einen längeren Quelltext und ein funktionierendes Programm als ihn zu kürzen und am Ende geht dann gar nichts mehr.

Programmoptimierung kommt am Schluss und nicht mitten drinne.

Wenn man gut mit Klassen umgehen kann, dann ist klar das man es kürzen kann, ich kann es nicht ;) ^^

Zitat:

Zitat von XardasLP (Beitrag 1333700)
Der Lehrer ist ein dummy, wenn er die Dokumentation dann nachvollziehen kann, dann ist es ok.

Dem Anwender bleibt der Quelltext ja verborgen. Die Lehrer sagen uns immer das wir trz. noch Schüler sind und keine angestellten Software- Entwickler :P

Solltest du in Zukunft entweder hobbymäßig oder beruflich weiter Programmieren wirst du wenn du dann mehr Erfahrung hast dein heutiges ich als "dummy" bezeichnen ;) :P
Ich hatte damals als ich angefangen habe mit Delphi ähnliche Ansichten, aber heute schäme ich mich fast für meinen alten Quelltext :mrgreen:
Aufgeräumter und übersichtlicher Quelltext ist einer der wichtigsten Dinge beim Programmieren. Und das hat nichts mit Anwendern oder Kunden zu tun sondern sowas gönnt man sich selbst.
Es ist so viel einfacher sich im Quelltext zurechtzufinden und er ist auch deutlich lesbarer. Dadurch (wie schon von anderen erwähnt) macht man weniger Fehler und es ist auch deutlich einfacher Fehler zu finden und zu beheben wenn sich doch mal einer eingeschlichen hat.
Und was Klassen angehen: Du willst Klassen verstehen und benutzen, du weißt es scheinbar nur noch nicht ;)
Es macht den Code so viel übersichtlicher und schöner zu lesen (s.o.) und es macht es deutlich einfach später irgendein Feature hinzuzufügen oder etwas zu ändern und je nach Anwendungsfall wirst du hunderte/tausende Zeilen Code sparen können gegenüber reiner prozeduraler Programmierung.
Dass du mit Klassen nichts anfangen kannst liegt nur daran, dass du sie nicht verstanden hast bzw. es dir zu anstrengend war Objektorientierung (Klassen) zu lernen ;)
Als Programmierer hat man nie ausgelernt. Man kann und muss/sollte immer was Neues lernen, egal wie erfahren man bereits ist. Das gilt gerade dann wenn man so wie du noch am Anfang steht :)

XardasLP 24. Mär 2016 17:04

AW: Memory-Spiel: Ideen
 
Zitat:

Zitat von Neutral General (Beitrag 1333722)
Das hat jetzt noch niemand vorgeschlagen soweit ich gelesen habe, aber man kann sich das ganze neu Erzeugen/Zuweisen der Images doch größtenteils sparen wenn man einfach das alte Spielformular freigibt und neuerstellt. Dann hat man ein komplett frisches Spielformular das genauso funktioniert wie beim ersten Spiel.

Solltest du in Zukunft entweder hobbymäßig oder beruflich weiter Programmieren wirst du wenn du dann mehr Erfahrung hast dein heutiges ich als "dummy" bezeichnen ;) :P
Ich hatte damals als ich angefangen habe mit Delphi ähnliche Ansichten, aber heute schäme ich mich fast für meinen alten Quelltext :mrgreen:
Aufgeräumter und übersichtlicher Quelltext ist einer der wichtigsten Dinge beim Programmieren. Und das hat nichts mit Anwendern oder Kunden zu tun sondern sowas gönnt man sich selbst.
Es ist so viel einfacher sich im Quelltext zurechtzufinden und er ist auch deutlich lesbarer. Dadurch (wie schon von anderen erwähnt) macht man weniger Fehler und es ist auch deutlich einfacher Fehler zu finden und zu beheben wenn sich doch mal einer eingeschlichen hat.
Und was Klassen angehen: Du willst Klassen verstehen und benutzen, du weißt es scheinbar nur noch nicht ;)
Es macht den Code so viel übersichtlicher und schöner zu lesen (s.o.) und es macht es deutlich einfach später irgendein Feature hinzuzufügen oder etwas zu ändern und je nach Anwendungsfall wirst du hunderte/tausende Zeilen Code sparen können gegenüber reiner prozeduraler Programmierung.
Dass du mit Klassen nichts anfangen kannst liegt nur daran, dass du sie nicht verstanden hast bzw. es dir zu anstrengend war Objektorientierung (Klassen) zu lernen ;)
Als Programmierer hat man nie ausgelernt. Man kann und muss/sollte immer was Neues lernen, egal wie erfahren man bereits ist. Das gilt gerade dann wenn man so wie du noch am Anfang steht :)


Ja, aber ich habe mir erstmal kleine Ziele gesetzt. Anfangs dachte ich zum Beispiel nie, dass ich eine zufällige Verteilung der Karten hin bekomme.

Wir sind 25 Schüler und niemand hat mit Klassen gearbeitet bei seinem Projekt. Wir haben auch noch andere Sachen zu tun kurz vor den Prüfungen als nur dieses eine Projekt zu programmieren.

Programmierer helfen sich aber bei komplexen Sachen gegenseitig, wenn sie an eine Grenze stoßen (z.B. die Beseitigung von Bugs in Spielen)

XardasLP 24. Mär 2016 17:12

AW: Memory-Spiel: Ideen
 
Zitat:

Das hat jetzt noch niemand vorgeschlagen soweit ich gelesen habe, aber man kann sich das ganze neu Erzeugen/Zuweisen der Images doch größtenteils sparen wenn man einfach das alte Spielformular freigibt und neuerstellt. Dann hat man ein komplett frisches Spielformular das genauso funktioniert wie beim ersten Spiel.
FormSpiel.Free;

und dann

FormSpiel.Create(x???)

DeddyH 24. Mär 2016 17:31

AW: Memory-Spiel: Ideen
 
Nee.
Delphi-Quellcode:
FormSpiel := TFormSpiel.Create(Application);

XardasLP 24. Mär 2016 17:45

AW: Memory-Spiel: Ideen
 
Ok danke, Grobkonzept habe ich ja immer. Scheitert nur dann am Feinkonzept :S

also nicht die Klasse TFormSpiel angesprochen oder (Application) nicht verwendet.
Sowas hat man aber auch nie im Unterricht dran, weil man unsere Programme nie neu starten muss.

DeddyH 24. Mär 2016 18:04

AW: Memory-Spiel: Ideen
 
FormSpiel ist die Instanzvariable (die also die erzeugte Klasseninstanz aufnimmt), TFormSpiel ist die Klasse, die zu erzeugen ist, Create heißt der Konstruktor (also die Methode, die eine neue Instanz zurückgibt) und Application ist der sog. Owner, d.h. das Objekt, das sich um den Speicher der erzeugten Klasse kümmern soll.

Mavarik 24. Mär 2016 21:34

AW: Memory-Spiel: Ideen
 
Zitat:

Zitat von XardasLP (Beitrag 1333776)
Ok danke, Grobkonzept habe ich ja immer. Scheitert nur dann am Feinkonzept :S

- Antwort gelöscht -

XardasLP 31. Mär 2016 00:24

AW: Memory-Spiel: Ideen
 
1) Wie kann ich die Image/s aus der Imagelist rausholen?

2) Ist es egal auf welcher Form die Imagelist ist?

3) Ja oder Nein? Wenn es die dann richtig zam setzt kann man ja "ja" machen...?

---------------------------
Confirm
---------------------------
Die Dimensionen für Bitmap Benutzername_1.bmp sind größer als die der Bilderliste. In 23 verschiedene Bitmaps aufteilen?
---------------------------
Yes No
---------------------------

Neutral General 31. Mär 2016 09:00

AW: Memory-Spiel: Ideen
 
Zitat:

Zitat von XardasLP (Beitrag 1334274)
1) Wie kann ich die Image/s aus der Imagelist rausholen?

ImageList.GetBitmap

Zitat:

Zitat von XardasLP (Beitrag 1334274)
2) Ist es egal auf welcher Form die Imagelist ist?

Prinzipiell schon. Du musst nur schauen dass du in anderen Formularen Zugriff auf die Imagelist hast,
z.B. indem du die ImageList übergibst oder anderweitig Zugriff auf das Formular mit der ImageList hast.

Zitat:

Zitat von XardasLP (Beitrag 1334274)
3) Ja oder Nein? Wenn es die dann richtig zam setzt kann man ja "ja" machen...?

Nein. Änder die Width und Height der ImageList auf die Höhe und Breite der Bilder die drin gespeichert werden sollen.
(Alle Bilder in einer Imagelist müssen gleich groß sein)

XardasLP 31. Mär 2016 17:00

AW: Memory-Spiel: Ideen
 
Beim Hinzufügen der .bmp wird Clcream eingestellt (so soll es auch sein).

Wenn ich das Fesnter zu mache und wieder öffne dann ist CLNone eingestellt. Wie kann ich Clcream beibehalten?

XardasLP 31. Mär 2016 17:10

AW: Memory-Spiel: Ideen
 
Jetzt habe ich 2 ImageListen auf meiner Form und beim Speichern hängt sich Delphi auf ?!

XardasLP 31. Mär 2016 17:38

AW: Memory-Spiel: Ideen
 
Liste der Anhänge anzeigen (Anzahl: 1)
der Post hier hat sich erledigt. geht nur noch um die ImageListen.

Luckie 31. Mär 2016 17:57

AW: Memory-Spiel: Ideen
 
Und was soll uns der Screenshot sagen?

Neutral General 31. Mär 2016 17:58

AW: Memory-Spiel: Ideen
 
Ich glaube Delphi hängt sich nicht auf. Du brauchst nur sehr viel Geduld schätze ich.
Wenn du viele oder/und große Bilder in ImageListen lädst geht Delphi etwas in die Knie.
Da kannst du nichts machen außer damit Leben oder die Bilder zur Laufzeit aus Dateien lesen statt aus der Imagelist.

XardasLP 2. Apr 2016 19:43

AW: Memory-Spiel: Ideen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Er scheitert an diesem Bild in .bmp Form.

XardasLP 4. Apr 2016 12:26

AW: Memory-Spiel: Ideen
 
Delphi-Quellcode:
if OpenDialog1.Execute then
TimerMusik.Enabled := False;
MediaPlayer1.Close;
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPlayer1.Open;
TimerMusik.Enabled := True;
TrackBarMusik.Max := MediaPlayer1.Length;
TrackBarMusik.Position := MediaPlayer1.Position;
Wie macht er die Position der TrackBar nicht? Diese bleibt bei 0 stehen.

DeddyH 4. Apr 2016 12:40

AW: Memory-Spiel: Ideen
 
Nach dem MediaPlayer1.Open steht MediaPlayer1.Position auf 0, folglich auch die Trackbar. Was ist daran verwunderlich? BTW: bist Du sicher, dass der gesamte Code ab der 2. Zeile nicht in einen begin-end-Block gehört?

XardasLP 4. Apr 2016 12:57

AW: Memory-Spiel: Ideen
 
Jo stimmt, man klickt danach ja noch bei dem MediaPlayer auf Play ;) ^^

Delphi-Quellcode:
procedure TFormSpiel.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
TimerMusik.Enabled := False;
MediaPlayer1.Close;
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPlayer1.Open;
TimerMusik.Enabled := True;
TrackBarMusik.Max := MediaPlayer1.Length;
TrackBarMusik.Position := MediaPlayer1.Position;
end;
end;

Bei der Trackbar Bewegung habe ich jetzt im 1. Moment an einen Timer gedacht.

Delphi-Quellcode:
procedure TFormSpiel.TimerMusik2Timer(Sender: TObject);
var i: integer;
begin
TrackBarMusik.Max := MediaPlayer1.Length;
for i := 1 to MediaPlayer1.Length do begin
TrackBarMusik.Position := MediaPlayer1.Position+1;
end;
end;

XardasLP 4. Apr 2016 13:03

AW: Memory-Spiel: Ideen
 
Delphi-Quellcode:
private
  StartTime: TTime;


procedure TFormSpiel.TimerZeitTimer(Sender: TObject);
begin
  LabelZeit.Caption := FormatDateTime('hh:nn:ss',StartTime);
end;
Es erscheint 00:00:00, der Timer läuft ja dann weiter. Wieso zählt es bei einem Interval von 1 die Zahl nicht rauf ?

DeddyH 4. Apr 2016 13:51

AW: Memory-Spiel: Ideen
 
Ändert sich denn StartTime?

XardasLP 4. Apr 2016 13:59

AW: Memory-Spiel: Ideen
 
Habe erst den Code von Luckie genommen, der geht aber auch nicht.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    StartTime: TTime;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := True;
  StartTime := Time;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := TimeToStr(Time - StartTime);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
Seite 3 von 4     123 4      

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