![]() |
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 |
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? |
AW: Memory-Spiel: Ideen
Was muss man noch alles := nil setzen?
Auch die Variablen, Timer, Label, Edit usw.?
Delphi-Quellcode:
Wenn man es so hat und vorher durchgespielt hat treten 1000 Fehler auf.
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; |
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. |
AW: Memory-Spiel: Ideen
Delphi-Quellcode:
Habe ja alle auf Standard zurückgesetzt.
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; Treten aber dann solche Fehler auf: ![]() Die Timer setzen eigentlich alle Variablen zurück. Weiß net woran das liegen soll. |
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. |
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.
|
AW: Memory-Spiel: Ideen
Zitat:
Du solltest Dich echt mal mit Array's und Schleifen beschäftigen... |
AW: Memory-Spiel: Ideen
Ich glaube selbst mein NonVCL Memory hat weniger.
|
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:
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 :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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