Variablen zuordnen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

DAK

Betreff: Variablen zuordnen

BeitragSo, Sep 04, 2005 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will da ein Kartenspiel machen. Am Anfang zieht man 10 zufällige Karten mit den Werten von 1 - 7, die ich als bild dateien hab. wie mach ich das am besten?
Gewinner der 6. und der 68. BlitzCodeCompo

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Sep 05, 2005 2:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo DAK, erstmal herzlich Willkommen in diesem BlitzForum... Da sich die Anzahl der Karten im Spiel ja nicht ändert. würde ich es mit einem (zwei/drei)dimensionalem Array (Dim) machen.

Beispiel 1: Dim karten(31,1) ... die erste Zahl gibt an welche Karte es ist, die zweite Zahl gibt an welcher Zugehörigkeit (Stapel, Spieler 1, Spieler 2, etc.) sie hat.

Beispiel 2: Dim karten(7,3,1) ... die erste Zahl gibt an welche Karte es ist, die zweite Zahl gibt an welche Kartenart (Kreuz, Herz, Pick, Karo) es ist, die dritte Zahl welcher Zugehörigkeit...

Du kannst natürlich auch mehrere Dims benutzen. Beispiel ein Dim für Kartenstapel, ein Dim für Spieler 1,...

Wenn du zB das erste Beispiel nimmst, dann kannst du die Zugehörigkeit der 10 per Zufall ausgewählten Karten dem Spieler 1 zuweisen. In der Spielerrunde gehst du dann alle 32 Karten durch und Zeigst ihm nur die Karten die zu ihm gehören.

Alfadur

BeitragMo, Sep 05, 2005 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab das mal im projektblitz forum gepostet, ist ein blackjack spiel, vielleicht hilfts dir ja... ob nun 2 karten gezogen werden oder nur 10 ist ja irrelevant ...

BlitzBasic: [AUSKLAPPEN]

;blackjack von mir, der chillkröte, weil smokie so nett fragte...

SeedRnd MilliSecs() ;zufallsgenerator, der freund eines jeden programmierers

;konstanten für die einzelnen farben und bank und spieler

Const farbe_pik=0
Const farbe_herz=1
Const farbe_karo=2
Const farbe_blatt=3
Const bank=1
Const spieler=2

;typ für die karte, selectedby gibt an ob von bank oder spieler gezogen
Type Tkarte
Field farbe
Field wert
Field name$
Field Selectedby
End Type

;ne funktion um die karten zu erstellen
Function create_karte.Tkarte(farbe,wert,name$)
Vkarte.Tkarte=New Tkarte
Vkarte\farbe=farbe
Vkarte\wert=wert
Vkarte\name$=name$
Vkarte\Selectedby=0
Return Vkarte
End Function

;alle karten erstellen
create_karte(farbe_pik,7,\"Pik 7\")
create_karte(farbe_pik,8,\"Pik 8\")
create_karte(farbe_pik,9,\"Pik 9\")
create_karte(farbe_pik,10,\"Pik 10\")
create_karte(farbe_pik,2,\"Pik Bube\")
create_karte(farbe_pik,3,\"Pik Dame\")
create_karte(farbe_pik,4,\"Pik König\")
create_karte(farbe_pik,11,\"Pik Ass\")

create_karte(farbe_herz,7,\"Herz 7\")
create_karte(farbe_herz,8,\"Herz 8\")
create_karte(farbe_herz,9,\"Herz 9\")
create_karte(farbe_herz,10,\"Herz 10\")
create_karte(farbe_herz,2,\"Herz Bube\")
create_karte(farbe_herz,3,\"Herz Dame\")
create_karte(farbe_herz,4,\"Herz König\")
create_karte(farbe_herz,11,\"Herz Ass\")

create_karte(farbe_karo,7,\"Karo 7\")
create_karte(farbe_karo,8,\"Karo 8\")
create_karte(farbe_karo,9,\"Karo 9\")
create_karte(farbe_karo,10,\"Karo 10\")
create_karte(farbe_karo,2,\"Karo Bube\")
create_karte(farbe_karo,3,\"Karo Dame\")
create_karte(farbe_karo,4,\"Karo König\")
create_karte(farbe_karo,11,\"Karo Ass\")

create_karte(farbe_blatt,7,\"Blatt 7\")
create_karte(farbe_blatt,8,\"Blatt 8\")
create_karte(farbe_blatt,9,\"Blatt 9\")
create_karte(farbe_blatt,10,\"Blatt 10\")
create_karte(farbe_blatt,2,\"Blatt Bube\")
create_karte(farbe_blatt,3,\"Blatt Dame\")
create_karte(farbe_blatt,4,\"Blatt König\")
create_karte(farbe_blatt,11,\"Blatt Ass\")

;so, ab jetzt haben wir also nen riesen stapel mit karten

;get_karte holt irgendeine karte aus dem stapel raus, id muß zwischen 1 und 32 liegen, mehr karten gibts ja auch nicht
Function get_karte.Tkarte(id)
count=1
For Vkarte.Tkarte=Each Tkarte
If count=id Then Return Vkarte
count=count+1
Next
Return Null
End Function

;gibt eine karte für die bank
Function add_card_bank()
Repeat
x=Rand(1,32)
karte.Tkarte=get_karte(x)
Until karte\Selectedby=0
karte\Selectedby=bank
DebugLog \"Karte für die Bank\"
End Function

;gibt die karten welche die bank hat aus ...
Function Print_bank_cards()
Print \"Bank\"
For Vkarte.Tkarte=Each Tkarte
If Vkarte\Selectedby=bank Then Print Vkarte\name$
Next
Print
End Function

;gibt ne karte für den spieler
Function add_card_player()
Repeat
x=Rand(1,32)
karte.Tkarte=get_karte(x)
Until karte\Selectedby=0
karte\Selectedby=spieler
DebugLog \"Karte für den Spieler\"
End Function

;gibt die spielerkarten aus ...
Function Print_player_cards()
Print \"Spieler\"
For Vkarte.Tkarte=Each Tkarte
If Vkarte\Selectedby=spieler Then Print Vkarte\name$
Next
Print
End Function

;zählt die punkte vom spieler
Function count_points_player()
points=0
For Vkarte.Tkarte=Each Tkarte
If Vkarte\Selectedby=spieler Then points=points+Vkarte\wert
Next
Return points
End Function

;zählt die punkte der bank
Function count_points_bank()
points=0
For Vkarte.Tkarte=Each Tkarte
If Vkarte\Selectedby=bank Then points=points+Vkarte\wert
Next
Return points
End Function

;anfangszustand, 2 karten spieler, 2 karten für die bank
Function init()
add_card_player()
add_card_player()
add_card_bank()
add_card_bank()
End Function

;setzt alles auf den ausgangszustand zurück
Function clear()
For Vkarte.Tkarte=Each Tkarte
Vkarte\Selectedby=0
Next
End Function

init()

Endgame=False ;gibt an ob spiel zu ende
While Not KeyHit(1)

Cls
Locate 0,0
Print_bank_cards()
Print \"Punkte : \"+count_points_bank()
Print
Print_player_cards()
Print \"Punkte : \"+count_points_player()
Print
If Endgame=False Then
Print \"Space für noch ne Karte, Return wenn fertig\"
FlushKeys()
WaitKey()
If KeyHit(57) Then add_card_player() ;bei space geben wir dem player noch ne karte
If KeyHit(28) Then ;bei return gibt die bank sich solange karten bis sie verliert,
Endgame=True ;spiel wird auf ende gesetzt ...
If count_points_player()<=21 Then ;falls der spieler nich schon verloren hat
While count_points_bank()<count_points_player()
add_card_bank()
Wend
End If
End If
Else ;wenn spiel zu ende, dann abrechnung machen, schauen wer gewonnen hat, pi pa po
If count_points_player()>21 Then
Print \"Du hast leider verloren - Taste drücken, dann gehts wieder los \"
Else If count_points_player()<=count_points_bank() And count_points_bank()<=21 Then
Print \"Die Bank macht das Rennen- Taste drücken, dann gehts wieder los \"
Else
Print \"$$$ Yeah, you did it ... You win $$$ - Taste drücken, dann gehts wieder los \"
End If
WaitKey()
clear()
init()
endgame=False
End If

Wend

End

A Cray is the only computer that runs an endless loop in less than four hours.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group