![]() |
Re: Schulprojekt: Spiel "Domino" programmieren!
Zitat:
Und ich würde mal behaupten das diese Projekt hier auch mit Records und ohne die Verwendung von Pointern zu realisieren ist. Ich wüsste jetzt nicht wirklich wo du hier direkt mit Pointern arbeiten willst. |
Re: Schulprojekt: Spiel "Domino" programmieren!
Danke euch beiden, dass ihr mir die Vor- und Nachteile einmal geschildert habt! Also Ich denke ich werde das mit diesen Records machen. Da habe ich mich bereits gut eingelesen und habe auch eine Vorstellung davon, wie ich es realisieren kann, bzw DASS ich es ÜBERHAUPT realisieren kann :mrgreen:
Der Begriff Pointer ist mir auch öfter schon über den Weg gelaufen. Ich werde mich mal damit beschäftigen. Ansonsten könnte jemand mal zu meinem letzten Post was sagen? Da bin ich nämlich ziemlich stolz drauf :mrgreen: Zu mkinzler: Also müsste ich das dann so schreiben?:
Delphi-Quellcode:
Könntest du mir sagen, was das für ein Vorteil hätte im Gegensatz zum Record?
type TDominostein = class
private FWert1 : integer; FWert2 : integer; public end; Gruß! :-) |
Re: Schulprojekt: Spiel "Domino" programmieren!
Du weißt aber schon, dass lokale Variablen nur innerhalb der Routine bekannt sind, in der sie deklariert werden? Soll heißen: außerhalb Deiner Button1Click-Methode kannst Du nicht auf Dom zugreifen. Ob das in diesem Fall gewollt ist, musst Du selbst wissen ;)
|
Re: Schulprojekt: Spiel "Domino" programmieren!
Also ich würde dir empfehlen noch sprechendere Variablennamen zu verwenden, als du dies jetzt tuts. Mit Dom kann man zwar schon etwas anfangen, wenn man weiß, worum es geht. Wenn du es DominoSteine nennst, dann weiß man sofort, was damit gemeint ist. Falls du das ganze nur so kurz machst, weil du schreibfaul bist und nicht jedes Mal die langen Namen schreiben willst, da gibt es was gegen STRG + LEER und die Autovervollständigung wird aktiviert. Und dann könnte man deinen Code ohne hin noch verkürzen, was wieder weniger Schreibarbeit bedeutet. Beispielsweise so:
Delphi-Quellcode:
Das Wert1FürStein(I) und Wert2FürStein(I) muss dann noch durch eine geeignete Routine von dir ersetzt werden. Je nach dem wie du es bei deinem Post gemacht hattest. Wenn du nach einem bestimmten Schema vorgegangen bist für die Werte, dann versuche einen geeigneten Alogorithmus dafür zu finden, der das wie in deinem Schema macht. Dafür könnten evtl. die ganzzählige Division (div) und die Restdivision (mod) interessant sein. Falls du das ganze einfach per Zufall gemacht hast dann solltest du dir dafür mal Random anschauen.
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; begin for I := Low(DominoSteine) to High(DominoSteine) do with DominoSteine[I] do begin Wert1 := Wert1FürStein(I); Wert2 := Wert2FürStein(I); end; {...} end; Falls du dazu Fragen haben solltest, dann frag gern. Aber ich denke eigentlich, dass es recht selbsterklärend sein sollte. |
Re: Schulprojekt: Spiel "Domino" programmieren!
Ich würde auch dringend empfehlen so eine Routine nicht im "ButtonxxOnClick" zu schreiben.
Delphi-Quellcode:
procedure TuWas( Parameter : TIrgendwas );
begin // Code zur Übernahme der Weltherrschaft end;
Delphi-Quellcode:
Vorteil:
procedure TForm1.DerSuperSpezialButton1OnClick( Sender : TObject );
begin TuWas( GanzTolles ); end; procedure TForm1.DerSuperSpezialButton2OnClick( Sender : TObject ); begin TuWas( GanzDoofes ); end; - Trennung der GUI von der Logik - Der Code bleibt übersichtlicher |
Re: Schulprojekt: Spiel "Domino" programmieren!
:)
|
Re: Schulprojekt: Spiel "Domino" programmieren!
Ja stimmt, Sir Rufo. Bei meinem Beispiel war das Button1Click auch nur noch eines der wenigen Überbleibsel vom Copy&Paste. Weil ich zu faul war das ganze zu schreiben, hatte ich kurzer Hand einfach mal den Quellcode von He4dnut kopiert. Allerdings ist davon dann im Endeffekt nicht mehr wirklich was übrig geblieben. Da hätte ich der Routine dann eigentlich auch noch einen gescheiten Namen geben können.
Offtopic: Der genaue Code für die Routine: Zitat:
|
Re: Schulprojekt: Spiel "Domino" programmieren!
Hmm ja sieht gut aus bisher alles... Das mit den Namen hängt nur mit meiner Faulheit zusammen... Aber ich denke mir immer, dass ERSTMAL ja nur ich das verstehen muss. In der Schule muss ich eh alles, was ich zu Hause programmiere nochmal neu schreiben, dann wird alles ganz ordentlich gemacht ;)
Bei Hugos "Wert1FürStein[I]" sagtest du, dass ich dieses Durch einen geeigneten Algorithmus ersetzen muss. Ja, verstehe ich. Allerdings habe ich jetzt einige Zeit gegrübelt wie ich das anstellen soll... Also ich habe da diese Grafik im Kopf: ![]() Ich persönlich finde die sehr gelungen. Durch das zweidimensionale Array habe ich doch bildlich gesprochen so eine Tabelle erstellt. Also am Anfang sagte ich ja werde ich das ganze Spiel so programmieren, dass der Stein [3,3] der höchste ist, ein 3er-Domino sozusagen. Das heißt, ich habe 10 Steine. Diese Steine könnte man jetzt z.B. so nummerieren, dass man von links nach rechts, und von oben nach unten liest. Also Stein1: [0,0] ; Stein2: [0,1] ; Stein3: [1,1] ; usw. Aber beim besten Willen fällt mir keine schlaue Rechnung ein, mitder man jedem Stein seinen passenden Wert automatisch zuordnet. Zur Not würde ich auch einfach an einer Stelle der Unit manuell jedem Stein seine Werte zuordnen. Das ist halt einmal viel Arbeit, aber dann hat mans wenigstens einmal richtig ;-) Soweit erstmal. Danke nochmal! |
Re: Schulprojekt: Spiel "Domino" programmieren!
Mein aktuelles Programm einmal für euch...
natürlich alles provisorisch. könnt ihr hier runterladen: ![]() |
Re: Schulprojekt: Spiel "Domino" programmieren!
Die Grafik verstehe ich irgendwie nicht so ganz. Vielleicht kannst du mal erklären, was sie darstellen soll, dann kann ich dir beim Finden eines Algorithmus' vielleicht ein wenig auf die Sprünge helfen. Und mit deinem Programm kann ich auch nicht so wirklich was anfangen, weil es irgendwie noch nicht wirklich etwas tut.
Außerdem sollten Dateien immer direkt an den Thread an gehangen werden, damit sie, wenn sich jemand das Thema später noch einmal ansieht immer noch vorhanden sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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