Delphi-PRAXiS
Seite 9 von 13   « Erste     789 1011     Letzte »    

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 21: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 21: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 21: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 21: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 22: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 22: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 22: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 22: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 22:41

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

Luckie 23. Mär 2016 22: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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 Uhr.
Seite 9 von 13   « Erste     789 1011     Letzte »    

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