Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Record ducheinander würfeln mit Hilfe von Array
bocky3 - So 04.09.05 13:40
Titel: Record ducheinander würfeln mit Hilfe von Array
hi allerseits.
ich hab nen record und nen array. mit hilfe des arrayssoll der record nen durheinander gewürfelt werden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| type Tklasse = record drache : string[20]; mensch : string[20]; untoter : string[20]; zwerg : string[20]; daemon : string[20]; elf : string[20]; ork : string[20]; end;
var Form1: TForm1; k: Array[1..7] of Integer; x : integer; klasse : Tklasse;
...
procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin for i := 1 to max do begin klasse.drache := (edit1.text); end;
procedure TForm1.Button2Click(Sender: TObject); var z,j :integer; label jump; begin randomize; for x := 1 to 7 do begin jump: z:=random(7)+1; for j:=1 to x-1 do if z = k[j] then goto jump; k[x]:=z; end; for x := 1 to max do begin edit2.text := (klasse.drache); listbox1.items.add(IntToStr(k[x])); end; |
wie ihr seht hab ich nen record mit 7 kategorien und nen zufalsgenerator, der die zahlen von 1 bis 7 erzeugt und sicherstellt diese nicht doppelt auszugeben.
in der listbox werden diese zahlen angezeigt.
drache wird aus edit1.text gelesen (nur als beispiel, ist beliebig fortzusetzen). bei den übrigen klasse will ich das auch so machen, sodass zum schluss alles in der listbox durcheinander steht.
mfg bocky
Moderiert von
raziel: Topic aus Datenbanken verschoben am So 04.09.2005 um 20:13Moderiert von
Klabautermann: Topic aus Sonstiges verschoben am Mo 05.09.2005 um 11:37
jasocul - So 04.09.05 20:04
Und was ist jetzt deine Frage? :gruebel:
Versuche doch mal zu formulieren, was du eigentlich wissen willst.
btw: Was hat das mit Datenbanken zu tun?
bocky3 - So 04.09.05 20:53
ich war mir nich so wirlich sicher ob es zu datenbanken gehört. :oops:
mich würde es interessieren ob man die unterkategorien des records "sortieren bzw untereinander vermischen" kann und ob das mit einer simplen würfelprozedur möglich ist.
bsp.:
klasse.drache
klasse.mensch
klasse.untoter
klasse.elf
soll zu
klasse.untoter
klasse.drache
klasse.elf
klasse.mensch
werden
die einzelnen klassen sollen ihren wert noch von dem jeweiligen editfenstern bekommen.
es ist ähnich als wenn man einen kartenstapel hat die 4 farben trennt und dann mischt.
Amateur - So 04.09.05 21:08
nur ma so: was soll das überhaupt bringen? die werte bleiben gleich und die typen auch... irgendwie versteh ich dein problem überhaupt net...
adfontes - So 04.09.05 21:14
Amateur hat folgendes geschrieben: |
| nur ma so: was soll das überhaupt bringen? die werte bleiben gleich und die typen auch... irgendwie versteh ich dein problem überhaupt net... |
jasocul hat folgendes geschrieben: |
| btw: Was hat das mit Datenbanken zu tun? |
.... :gruebel: :gruebel: ....
irgendwie blick ich da auch nicht wirklich durch
.... :gruebel: :gruebel: ....
bocky3 - So 04.09.05 21:16
genauso kann ich fragen was zahlensortien bringt oder erst zufallsszahlen zu würfeln.
oder was bringt es karten zu mischen? was das bringt ist eine andere reihenfolge. das ist e s was zählt.
wenn ihr ne andere idee anstelle eines records habt immer zu. bedingung ist nur das klassenweise ordnen. record ist da gut geeignet. und darum hab ich es damit versucht.
Amateur - So 04.09.05 21:28
versteh ich immernoch net.... tut mir wirklich leid.... ich blick net durch was du machen willst aber wenn es das is was ich denke dann dürfte es net so schwer sein.... aber wirklich blicken tu ich das alles net..
naja viell hat ja jemand anders nen geistesblitz
bocky3 - So 04.09.05 21:57
dann sagt doch einfach was ihr nich versteht.
delfiphan - So 04.09.05 22:07
bocky3 hat folgendes geschrieben: |
klasse.drache
klasse.mensch
klasse.untoter
klasse.elf
soll zu
klasse.untoter
klasse.drache
klasse.elf
klasse.mensch
werden
|
Die Definition eines records kannst du zur Laufzeit nicht ändern.
bocky3 - So 04.09.05 22:09
hm
also ist es nicht möglich einen record so umzugestalten?
gibt es denn ne ähnliche variante wie ein record, aber wo ich das eben kann?
(immerhin versteht mich zumindest einer :D )
thx erstmal
delfiphan - So 04.09.05 22:10
bocky3 hat folgendes geschrieben: |
| ich will ihn ja nich neu definieren, nur etwas umsortieren |
Wenn du es umsortieren könntest, hättest du ihn neu definiert. Die Definition bleibt fix. Man kann weder die Felder umbenennen noch umsortieren.
bocky3 - So 04.09.05 22:14
sry war grad dabei den beitrag zu ändern...
delfiphan - So 04.09.05 22:14
Du kannst jedoch die Inhalte umsortieren, falls das reicht...
Wenn du ein assoziatives Array wie in PHP willst, musst du's selbst programmieren oder indirekt über TStringList (o.ä) arbeiten.
bocky3 - So 04.09.05 22:18
das mit den inhalten is mir scho klar; die sollen aber später eventuell fixiert werden.
und wie kann ich so ein array machen? kenn mich mit php fast nich aus. :?
delfiphan - So 04.09.05 22:23
Wieso musst du die Reihenfolge der Felder umsortieren können? Kann dir doch ziemlich egal sein, in welcher Reihenfolge die Strings gespeichert sind.
Vor dem Sortieren sprichst du das Feld "Mensch" mit .Mensch an, und nach dem Umsortieren ebenfalls. Wo bleibt da der Sinn?
bocky3 - So 04.09.05 22:31
bube bleibt auch bube egal ob er nach ner dame oder nach ner 5 blatt kommt. verstehst du?
bei nem kartenspiel zählt die reihenfolge nich unbedingt der wert. das mit mensch, ork und co is mir nur so eingefallen.^^
delfiphan - So 04.09.05 22:44
... Speichere doch die Reihenfolge separat ab; bastle dir selbst eine Klasse, die das kann. Delphi hat keine solche Funktionalität eingebaut.
Wenn du eine konkrete Anwendung schildern würdest, könnte ich dir auch genau sagen, wie du es am gescheitesten Anstellen könntest.
Klabautermann - Mo 05.09.05 02:26
Hallo,
ich muss gestehen, ich habe den Sinn auch noch nicht wirklich verstanden, aber reicht es dir nicht einfach ein Record of Record zu erzeugen? Also so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| type tWesen = record Name : string[8]; Wert : string[20]; end;
Tklasse = record Wesen1 : tWesen; Wesen2 : tWesen; Wesen3 : tWesen; Wesen4 : tWesen; Wesen5 : tWesen; Wesen6 : tWesen; Wesen7 : tWesen; end; |
Dann hast du die Bezeichnung mit in den Daten und kannst sie bequem mit sortieren.
Gruß
Klabautermann
jasocul - Mo 05.09.05 08:36
Es würde relativ einfach mit einem Array of record gehen.
dabei würdest du Klassen im Array speichern. Also erstes element ist "Drache", zweites ist "Elf" u.s.w.
Ein Array zu "würfeln" ist dann kein Problem mehr.
Klabautermann - Mo 05.09.05 11:37
Hi,
jasocul hat folgendes geschrieben: |
| Es würde relativ einfach mit einem Array of record gehen. |
ja, bei der Klassen struktur ist das natürlich noch einfacher.
Gruß
Klabautermann
bocky3 - Mo 05.09.05 19:28
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
const max = 7;
type TForm1 = class(TForm) Edit1: TEdit; Button2: TButton; ListBox1: TListBox; Edit2: TEdit; Button3: TButton; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end;
type Tklasse = record drache : string[20]; mensch : string[20]; untoter : string[20]; zwerg : string[20]; daemon : string[20]; elf : string[20]; ork : string[20]; end;
var Form1: TForm1; k: Array[1..7] of Integer; x : integer; klasse : array[1..7] of Tklasse; implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject); var i : integer; begin for i := 1 to max do begin klasse.drache := (edit1.text); end; end;
procedure TForm1.Button2Click(Sender: TObject); var z,j :integer; label jump; begin randomize; for x := 1 to max do begin jump: z:=random(7)+1; for j:=1 to x-1 do if z = k[j] then goto jump; k[x]:=z;
edit2.text := (klasse.drache); listbox1.items.add(IntToStr(k[x])); end; end;
end. |
wie kann ich die 2 arrays miteinander verbinden, sodass ich jedem type ne nummer zugewiesen hab und ihn so in der position verändern kann, soweit das möglich ist?
Klabautermann - Mo 05.09.05 20:09
Bitte mache für eine neue Frage ein neues Thema auf.
Gruß
Klabautermann
bocky3 - Mo 05.09.05 21:29
dachte mr, dassso was kommt.^^
kk, ich machne neuen thread.^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!