Autor |
Beitrag |
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 17.06.03 17:40
Hallo,
wie kann ich am besten eine funktion schreiben, die folgens macht:
ich habe 3 verschieden karten + ein dekblatt.
Nun will ich meine 2d arry füllen, und zwar alle 3 verschiedne kartentypen müssen drin vorkommen aber dürfen maximal nur 2 mal drinen vorkommen, so wie es halt in memoy üblich ist.
wie geht das ?
jemmad eine idee ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
PheliX
      
Beiträge: 59
|
Verfasst: Di 17.06.03 18:12
Hmm... Ich bin ein ziemlicher NewBe und hab deine Frage vielleicht nit richtig verstanden aber wenn ich sie richtig verstanden hab dann hab ich ne Idee  :
SAg dem Programm doch einfach, dass es sich merken soll, welche Bilder er schon benutzt hat und streich das Bild von deiner Liste, wenn es zweimla benutzt wurde... nur mal so ne idee...
warscheinlich kannst du damit nichts anfangen, aber ich habs versucht 
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 17.06.03 19:51
doch du hast die frage richtig verstaden
so wollte ich es auch machen.
das problem ist folgendes:
1. ich brauche eine liste mit zahlen an unterschiedlichen positionen im 2d array aber jede zahl muss 2 mal vorkommen.
mein array sieht so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| type map = record tex,tex2,typ:Integer; end;
var map = array of array of TMap; |
und nun kommt es auf tex2 an.
da sollen die werte drinen stehen, weil tex ist das deblatt.
könnte mir da jemmand weiter helfen ?
ich will es mit random machen, aber ich weiß nicht wie das geht 
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
FriFra
      
Beiträge: 557
Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
|
Verfasst: Do 19.06.03 18:02
 Aber denk dran, dass der Begriff Memory eine eingetragene Marke der Ravensburger AG ist. Die haben in der letzten Zeit schon einige Leute abgemahnt, weil die Ihr Spiel Memory genannt haben...
Aktuelles Urteil:
Zitat: | 21.05.2003 "Memory" LG-München Az.: 33 O 3824/03
.
Die Antragstellerin, eine bekannte Herstellerin von Spielen, ist Inhaberin der deutschen Wortmarke "Memory".
Die Antragsgegnerin, die Herausgeberin eines bekannten internationalen Frauenmagazins, bot im Februar 2003 im Internet unter der Bezeichnung "Fashion Memory" bzw. "Memory" ein virtuelles Legekartengewinnspiel an, bei dem virtuelle Karten mit paarweise vorhandenen Darstellungen von Modeartikeln verdeckt aufliegen und durch Aufklicken zweier Karten die zusammengehörigen Motive gefunden werden sollten. Als Gewinn wurde Designerschmuck im Wert von 230,-- Euro verlost.
Über den Antrag, der Antragsgegnerin die Verwendung der Bezeichnung "Memory" im Weg der einstweiligen Verfügung zu untersagen, hat die für den gewerblichen Rechtsschutz zuständige 33. Zivilkammer nach Durchführung einer mündlichen Verhandlung durch Urteil entschieden.
Das Gericht kam zu dem Schluss, dass entgegen der Ansicht der Antragsgegnerin das Wort "Memory" sich nicht zu einer beschreibenden Gattungsbezeichnung , wie z.B. "Puzzle", entwickelt hat.
Die Bezeichnung "Memory" weise eine gewisse Originalität auf; durch intensive und jahrelange Benutzung sei die Kennzeichnungskraft des seit 1959 vertriebenen Legekartenspiels gestärkt worden. Legespiele anderer Hersteller werden mit anderen Bezeichnungen wie z.B. "Memo-Spiel" gehandelt. Da die Antragstellerin auch belegen konnte, dass sie den Markt beobachtet und Kennzeichenverletzungen regelmäßig rügt, wurde ihrem Antrag stattgegeben. |
(Quelle: www.justiz.bayern.de )
Moderiert von Tino: Quote-Tags hinzugefügt.
_________________ Michael
(principal certified lotus professional - developer)
Zuletzt bearbeitet von FriFra am Do 19.06.03 18:09, insgesamt 2-mal bearbeitet
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Do 19.06.03 18:08
dann ändere ich den namen einfach und fertig schreiben ihn z.b. mit i oder so:
der name ist mir ersteinmal egal, das problem geht davon auch nicht weg 
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Simon Joker
      
Beiträge: 236
Erhaltene Danke: 1
|
Verfasst: Fr 20.06.03 10:07
Hi Mimi
ich mach das jetzt mal freifliegend:
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:
| type map = record tex,tex2,typ:Integer; end; TMapArray = array of array of TMap;
var map : TMapArray;
function TForm1.FillArray(var MA:TMapArray):integer; var IntArr:array of integer; i,M,Ind,J:integer; begin SetLength(IntArr,Length(Ma)*Length(MA[1])); for i:=0 to High(IntArr) do begin IntArr[i]:=i div 2; end; Randomize; for i:=0 to High(IntArr) do begin Ind:=Random(Length(IntArr)); M:=IntArr[i]; IntArr[i]:=IntArr[Ind]; IntArr[Ind]:=M; end; ind:=0; for i:=0 to High(Ma) do for j:=0 to High(MA[1]) do begin MA[i,j].tex2:=IntArr[Ind]; inc(ind); end; end; |
Ich habe jetzt keinerlei prüfung auf Fehler rein gemacht. Kannst du aber noch tun und den Rückgabewert dafür verwenden.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 11:22
Danke werde ich in ca. 3-4 stunden testen:)
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 14:23
fehler im procedure kopf.
da ist nur ein 1d array aber es muss ein 2D array sein.
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 14:29
es funktioniert nicht
das steht im array drin
edit:
werde jetzt ein 1D array verwenden. und fertig, dann kann ich auch deine funktion verwenden:)
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Simon Joker
      
Beiträge: 236
Erhaltene Danke: 1
|
Verfasst: Fr 20.06.03 14:41
Hi Mimi
keine Ahnung was da nicht passt, denn bei mir funktioniert es.
@Array im Funktions-Kopf
Der TypTMapArray ist zweidimmensional!!
Mein kommpletter Code:
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:
| type Tmap = record tex,tex2,typ:Integer; end; TMapArray = array of array of TMap;
....
var Form1: TForm1; map : TMapArray;
procedure TForm1.FormCreate(Sender: TObject); var i,j:integer; begin SetLength(map,4); for i:=0 to 3 do SetLength(map[i],5); FillArray(map); for i:=0 to 3 do for j:=0 to 4 do StringGrid1.Cells[i,j]:=IntToStr(map[i,j].tex2); end;
function TForm1.FillArray(var MA:TMapArray):integer; var IntArr:array of integer; i,M,Ind,J:integer; begin SetLength(IntArr,Length(Ma)*Length(MA[1])); for i:=0 to High(IntArr) do begin IntArr[i]:=i div 2; end; Randomize; for i:=0 to High(IntArr) do begin Ind:=Random(Length(IntArr)); M:=IntArr[i]; IntArr[i]:=IntArr[Ind]; IntArr[Ind]:=M; end; ind:=0; for i:=0 to High(Ma) do for j:=0 to High(MA[1]) do begin MA[i,j].tex2:=IntArr[Ind]; inc(ind); end; end; |
Das StringGrig dieht der Anzeige
EDIT: Kannst hier saugen: www.simonjoker.de/Trans/DemoForMimi.rar
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 15:35
teste ich gleich nocheinmal aus. glaube aber nicht das ich es so hinbekommen.
ich denke für ein memory spiel sollte ein 1D array reichen oder ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Fr 20.06.03 18:34
mimi hat folgendes geschrieben: | ich denke für ein memory spiel sollte ein 1D array reichen oder ? |
Wenn du die Karten in einer Teihe anordnen willst, dann schon
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
Aber eigentlich gehört es ja so:
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
[ ¯][ ¯][ ¯][ ¯][ ¯][ ¯]
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 19:39
schon, aber die karten sind 150 mal 150 pixel breit und der 2D array ist genauso breit, fält dir ne besserelösung ein ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Fr 20.06.03 19:41
Hmm ich dachte eigentlich das du ein Array[x,y] meinst, d.h. zur bestimmung der Karten. Hab ich wohl falsch verstanden
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 19:53
Delphi-Quelltext 1:
| Hmm ich dachte eigentlich das du ein Array[x,y] meinst, d.h. zur bestimmung der Karten. Hab ich wohl falsch verstanden |
nein du hast es schon richtig verstanden:)
nur ich verwende z.z. ein 2D array von der größe: 150 mal 150 Pixel, und das ist wohl etwas zu groß da muss ich wohl ein 1D array nehmen, oder ?
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Fr 20.06.03 20:11
150 x 150 Stück???
ich meine z.B. für das brauchst du 5 x 5 2D Array:
[¯][¯][¯][¯][¯]
[¯][¯][¯][¯][¯]
[¯][¯][¯][¯][¯]
[¯][¯][¯][¯][¯]
[¯][¯][¯][¯][¯]
und das jeweils ein record mit den Infos über die Karte
Und da du von Pixels sprichst, meine ich du sprichst über das Bitmap der Memory-Karte?
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Fr 20.06.03 20:52
nein so groß ist eine grafik ich habe nur 4 stück unten und oben
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mi 25.06.03 14:50
@Mimi: Wenn du magst, kann ich dir mal den Quellcode zu meinem Memory schicken. Ist entwickelt mit meinem I-Lehrer und funktioniert. Schickst mir einfach eine PN..
_________________ Hasta La Victoria Siempre
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mi 02.07.03 14:17
habe den fehler gefunden:)
deine procendure funktionierte einbandfrei....
danke für deine hilfe.....
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mi 02.07.03 17:27
Wessen Prozedur? Hast du den Quellcode eigentlich bekommen, sprich, wurde die Mail korrekt verschickt?
_________________ Hasta La Victoria Siempre
|
|