AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spiel des Lebens

Ein Thema von Stillmatic · begonnen am 7. Mai 2007 · letzter Beitrag vom 14. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
Stillmatic

Registriert seit: 25. Apr 2007
110 Beiträge
 
#1

Spiel des Lebens

  Alt 7. Mai 2007, 16:30
Gibt es hier einen user der sich mit der Programmierung eines Spiels namens 'Spiel des Lebens' gut auskennt und dem ich ein paar fragen stellen könnte(am liebsten über PN)???

Zum Programm::::

Erstellt werden soll ein StringGrid mit einer bestimmten Größe(Konstanten--> sollen aber veränderbar sein),Buttons zum vergrößern und verkleinern des Stringgrids. Es gibt mehrer Ausgangssituationen die über eine comboBox ausgewählt werden und natürlich den Next Generation button!!

Angelegt hab ich mehrer Units.
Einmal die HauptUnit mit dem Formular,eine Typen Unit wo die Typen + Ausgangssituationen deklariert werden und eine SpielLogik Unit
indem ich ein Array vom Typ Boolean deklariert habe!!!

Ich bräuchte nur ein paar Tips zu umsetzung!!
Schreibt mir eine PN wenn ich mir helfen wollt!

*THX*
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Spiel des Lebens

  Alt 7. Mai 2007, 16:38
Zitat von Stillmatic:
Schreibt mir eine PN wenn ich mir helfen wollt!
Oder doch bitte direkt hier, eventuell hilft es auch mal anderen und das ist die Idee eines Forums!

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
7. Mai 2007, 16:39
Dieses Thema wurde von "sakura" von "Multimedia" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist keine Multimediafrage im Sinne der Sparte
Stillmatic

Registriert seit: 25. Apr 2007
110 Beiträge
 
#4

Re: Spiel des Lebens

  Alt 7. Mai 2007, 18:42
Ich verstehe noch nicht ganz wie ich die Rechnung umsetzen könnte???

1. Eine Zelle mit drei Nachbarn wird belegt!

Da muss ja zunächsteinmal der Komplette Array durchlaufen werden und dann für jedes Feld überprüft werden ob es drei Lebende(also True) nachbarn hat aber wie könnte man das umsetzen???
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Spiel des Lebens

  Alt 7. Mai 2007, 18:53
Du braucht zwei Arrays der Grösse [x,y].
Array A enthält das aktuelle Bild; Array B die errechnete nächste Generation.
Array B wird dann auf das Stringgrid visualisiert.
Man könnte nun Array B -> A kopieren und eine neue Generation berechnen; schlaue Programmierer verwenden die beiden Arrays aber im Wechsel.
Andreas
  Mit Zitat antworten Zitat
Stillmatic

Registriert seit: 25. Apr 2007
110 Beiträge
 
#6

Re: Spiel des Lebens

  Alt 7. Mai 2007, 18:59
Das hab ich mir genauso gedacht, doch weiß ich leider net wie ich die Rechnung umsetzen kann??
Hab mir gedacht das ich eine Hilfsfunktion schreibe die errechnet wieviele nachbarn ein bestimmtes Feld hat und das Ergebnis(Nachbar : Integer) zurrückliefert !

Nur wie könnte man das machen???
  Mit Zitat antworten Zitat
track

Registriert seit: 30. Okt 2005
25 Beiträge
 
#7

Re: Spiel des Lebens

  Alt 7. Mai 2007, 19:23
na du musst einfach die achn nachbarn ansprechen!

x, y; x+1,y, x+1, y+1

uns so weiter
  Mit Zitat antworten Zitat
Stillmatic

Registriert seit: 25. Apr 2007
110 Beiträge
 
#8

Re: Spiel des Lebens

  Alt 7. Mai 2007, 19:29
Das hab ich so umgesetzt

Delphi-Quellcode:
Function FnkNachbarn(i,j:integer):integer;
var Nachbarn :integer;
Begin
Nachbarn:= 0;
  if curGen[i,j+1] = True then //unten
  Nachbarn:= Nachbarn + 1;
  if curGen[i,j-1] = True then //oben
  Nachbarn:= Nachbarn + 1;
  if curGen[i-1,j-1] = True then //links
  Nachbarn:= Nachbarn + 1;
  if curGen[i-1,j] = True then //links
  Nachbarn:= Nachbarn + 1;
  if curGen[i-1,j+1] = True then //links
  Nachbarn:= Nachbarn + 1;
  if curGen[i+1,j-1] = True then //rechts
  Nachbarn:= Nachbarn + 1;
  if curGen[i+1,j] = True then //rechts
  Nachbarn:= Nachbarn + 1;
  if curGen[i+1,j+1] = True then //rechts
  Nachbarn:= Nachbarn + 1;

  FnkNachbarn:=Nachbarn;


end;
Doch dabei tritt ja das Problem auf das wenn z.B. das Spielfeld auf die Größe 1x1 geändert wird das es ein Range Check Error gibt!
Doch ich wüßte jetzt nicht wie man das anders Programmieren könnte, vielleicht mit einer Bedingung die per getHoehe oder getBreite herausfindet wie groß das Spielfeld ist somit auch nur die wirklich existierenden Nachbarn überprüft(aber wie)???
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Spiel des Lebens

  Alt 8. Mai 2007, 09:54
In deiner Funktion hast du ja die Terme i+1, i-1, j+1, j-1.
Stell dir vor, du berechnest diese Werte vorab und speicherst sie in Zwischenvariablen a,b,c,d.
Bis jetzt wurde effektiv noch nichts geändert (ausser Verwendung von Zwischenvariablen)
Sollte a,b,c oder d das Spielfeld verlassen, dann sollte es an der gegenüberliegenden Seite wieder auftauchen:
Delphi-Quellcode:
a := i+1;
if a > MAX_X then // MAX_X ist die höchste erlaubte X-Position
   a := MIN_X;
b := i-1;
if b < MIN_X then
   b := MAX_X;
C := ...
Andreas
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#10

Re: Spiel des Lebens

  Alt 8. Mai 2007, 10:45
.. oder statt x+1 (x+1+SIZE_X) Mod SIZE_X für den rechten und (x-1+SIZE_X) Mod SIZE_X für den linken Nachbarn. Das +SIZE_X muss leider sein, da -1 mod SIZE_X = -1 und damit haste ja nix gewonnen. SIZE_X wäre dann aber die Anzehl der Felder in x-Richtung, nicht der höchste Index.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz