Zufällig Karten geben?
Übersicht

fliegeBetreff: Zufällig Karten geben? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich möchte in meinem Spiel die Möglichkeit geben, Karten zufällig neu zu verteilen. Ich habe den Code eigentlich schon fast fertig gehabt, nur als ich ihn getestet habe, lief er über 15 min und war immer noch nicht fertig ![]() Also wollte ich bitten, das mir jemand einen kleinen Code schreibt, denn ich habe keine Ideen mehr. Es sind zwanzig Karten. Von Herz, Treff, Pik, Karo jeweils 10, Bube, Dame, König, Ass. Dabei wurden die Kartencodes folgendermasen vergeben: Ass: 1 Bube: 2 Dame: 3 König: 4 10: 5 _______________ Treff:1x Karo:2x Pik:3x Karo:4x Also hat das Treff Ass die Nummer 11 und die Karo 10 die Nummer 45. Es darf aber keine Karte doppelt vorkommen. Die Kartennummern werden all im Arry Kartencodes(19) gespeichert. Ich freue mich über jeden Code, der schneller als 5 min ist. DANKE im Voraus Fliege |
||
Wer weiß was kommt.. ? |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du hast einen Fehler in deiner Überlegung!
Denn so wäre der Kreuz ( Treff ) Bube das selbe, wie das Karo Ass! Ich bastel dir ma fix was... nur einen Moment Geduld. walski |
||
buh! |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey warte mal, ich glaube, du hast da was falsch aufgenommen!
Kartencode(0) = Kartencode_1 * 10 + Kartencode_2 Dabe ist Kartencode_1 die Angabe ob Herz,... und Kartencode_2 die Zahl! Entschuldige, ich habe mich schlecht ausgedrückt. Fliege |
||
Wer weiß was kommt.. ? |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und vor allem habe ich zu ungenau gelsen, mein Fehler!
Dafür aber hier eine kleine Entschädigung: Code: [AUSKLAPPEN] ; card colors ;Herz Const colorHeart = 1 ; Karo Const colorDiamonds = 2 ; Pik Const colorSpades = 3 ; Kreuz Const colorClubs = 4 ; card values ; Zehn Const cardValueTen = 1 ; Bube Const cardValueJack = 2 ; Dame Const cardValueDame = 3 ; König Const cardValueKing = 4 ; Ass Const cardValueAce = 5 Type card Field colorType Field value End Type Local currentCard.card Local i Local j SeedRnd MilliSecs() For i = 1 To 4 For j = 1 To 5 currentCard.card = New card currentCard\colorType = i currentCard\value = j Next Next For i = 1 To 20 Print cardName$( picCard( i ) ) Next Print "Tastendruck mischt die Karten..." WaitKey() FlushKeys() Delay(10) Cls() Locate 1,1 mixCards() For i = 1 To 20 Print cardName$( picCard( i ) ) Next Print "Tastendruck beendet das Programm." WaitKey() Function cardName$( tCard.card ) Local tString$ Select tCard\colorType Case colorHeart tString$ = "Herz " Case colorDiamonds tString$ = "Karo " Case colorSpades tString$ = "Pik " Case colorClubs tString$ = "Kreuz " Default tSring$ = "DEF COLOR: " + Str( tCard\colorType ) + " " End Select Select tCard\value Case cardValueTen tString$ = tString$ + "10" Case cardValueJack tString$ = tString$ + "Bube" Case cardValueDame tString$ = tString$ + "Dame" Case cardValueKing tString$ = tString$ + "König" Case cardValueAce tString$ = tString$ + "Ass" Default tString$ = tString$ + "DEF VALUE: " + Str( tCard\value ) End Select Return tString$ End Function Function picCard.card( No ) Local tCard.card tCard = First card For i = 2 To No tCard = After tCard Next Return tCard End Function Function mixCards() Local tCard.card Local tMixCount Local tPushFactor Local i Local j tMixCount = Rand( 30,50 ) For i = 0 To tMixCount tCard = picCard( Rand( 1,20 ) ) tPushFactor = Rand( 3, 19 ) For j = 1 To tPushFactor If tCard = Last card Then Insert tCard Before First card Else Insert tCard After After tCard EndIf Next Next End Function Ich habe statt Arrays direkt Types verwendet, aber Arrays mit Type-Instanzen zu füllen ist auch ohne Probleme möglich, daran soll es also nicht scheitern, ich habe nur gerade einfach keine Zeit mehr dafür. Genauso wenig habe ich leider Zeit das ganze angemessen zu kommentieren, ich hoffe es geht auch so einigermaßen. walski |
||
buh! |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, ich brauche nur noch ein bisschen um aus deinem Code zu lernen. Dafür sollten aber meine Kentnisse reichen.
Danke noch einmal Fliege |
||
Wer weiß was kommt.. ? |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay, wie ich sehe, reichen sie doch noch nicht! Ich sah mir den Code genauer an, und verstand schon einiges nicht...zb:
Code: [AUSKLAPPEN] Function picCard.card( No ) Local tCard.card tCard = First card For i = 2 To No tCard = After tCard Next Return tCard End Function Function mixCards() Local tCard.card Local tMixCount Local tPushFactor Local i Local j tMixCount = Rand( 30,50 ) For i = 0 To tMixCount tCard = picCard( Rand( 1,20 ) ) tPushFactor = Rand( 3, 19 ) For j = 1 To tPushFactor If tCard = Last card Then Insert tCard Before First card Else Insert tCard After After tCard EndIf Next Next End Function Ich weis, das das der Hauptteil des Programms ist, aber ich versteh ihn nicht... Kann ihn vielleicht jemand kommentieren? Wäre echt toll, ich glaube, dann tu ich mir leichter das alles in einen Arry reinzupacken! Danke schon mal im Vorraus Fliege |
||
Wer weiß was kommt.. ? |
![]() |
soli |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] For y=1 to 1000
a=rnd(0,19) b=rnd(0,19) c=kartencodes(a) kartencodes(a)=kartencodes(b) kartencodes(b)=c next |
||
solitaire |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, habe mein Problem schon gelöst! Danke Danke Danke | ||
Wer weiß was kommt.. ? |
walskiEhemaliger Admin |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also brauchst du keinen Kommentar mehr?
Ich hatte nur gestern Abend keine Zeit mehr, dir einen zu schreiben... aber nagut, so erledigen sich Probleme halt von selbst ![]() walski |
||
buh! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group