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/)
-   -   Schulprojekt: Spiel "Domino" programmieren! (https://www.delphipraxis.net/146695-schulprojekt-spiel-domino-programmieren.html)

hugo1990 28. Jan 2010 12:46

Re: Schulprojekt: Spiel "Domino" programmieren!
 
Zitat:

Zitat von Blup
... Wer allerdings mit Records arbeiten will, muss zwangsläufig auch mit Pointern arbeiten ...

Dem will ich mal widersprechen. Denn wenn ich mir so meine alten Projekte anschaue, wo ich noch nicht mit der OOP vertraut war, habe ich ständig mit Records gearbeitet, aber ich habe dort nie mit Pointern arbeiten müssen, weil ich zu dem Zeitpunkt noch nicht mal wusste was Pointer sind.
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.

He4dnut 28. Jan 2010 14:48

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:
type TDominostein = class
       private
         FWert1 : integer;
         FWert2 : integer;
       public
end;
Könntest du mir sagen, was das für ein Vorteil hätte im Gegensatz zum Record?

Gruß! :-)

DeddyH 28. Jan 2010 14:51

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 ;)

hugo1990 28. Jan 2010 18:12

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:
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;
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.
Falls du dazu Fragen haben solltest, dann frag gern. Aber ich denke eigentlich, dass es recht selbsterklärend sein sollte.

Sir Rufo 28. Jan 2010 20:56

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:
procedure TForm1.DerSuperSpezialButton1OnClick( Sender : TObject );
begin
  TuWas( GanzTolles );
end;

procedure TForm1.DerSuperSpezialButton2OnClick( Sender : TObject );
begin
  TuWas( GanzDoofes );
end;
Vorteil:

- Trennung der GUI von der Logik
- Der Code bleibt übersichtlicher

Wolfgang Mix 28. Jan 2010 21:06

Re: Schulprojekt: Spiel "Domino" programmieren!
 
:)

hugo1990 28. Jan 2010 21:21

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:

Zitat von Sir Rufo
Delphi-Quellcode:
procedure TuWas( Parameter : TIrgendwas );
begin
  // Code zur Übernahme der Weltherrschaft
end;

wäre jetzt aber schon mal interessant. :mrgreen:

He4dnut 31. Jan 2010 21:58

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:

http://www.dominoopen.64g.ru/images/sxde.gif

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!

He4dnut 1. Feb 2010 10:28

Re: Schulprojekt: Spiel "Domino" programmieren!
 
Mein aktuelles Programm einmal für euch...
natürlich alles provisorisch. könnt ihr hier runterladen:
http://www.file-upload.net/download-...ject1.exe.html

hugo1990 8. Feb 2010 09:14

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.
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