KAARTEN & kansen

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

KAARTEN & kansen

Berichtdoor bluatigro » di apr 27, 2010 2:23 pm

versie 28-apr-2010
dit is het begin van n kaarten systeem
te gebruiken voor kaart spellen
de volgende kaartfuncties zijn aanwezig
createDeck
shufleDeck
a$ = face$( no )
en ook wat kansberekeningsfuncties :
i = pand( a , b )
i = por( a , b )
i = pxor( a , b )
i = pnot( a )
i = frac( a )
i = over( geheel , deel )

voorbeelden die just blijken te zijn :
- totaal handen
- club or ace
- club xor ace
- 5 suit
- 4 of a kind
- 5 in n rij

over de graphics denk ik nog na
ik wil geen DLL's gebrtuiken behalve opengl

poker is gewoon maar een voorbeeld als kaartspel
en omdat het populer is
niet omdat ik het wil leren
en het kaartspel als voorbeeld van een kansspel
en het kansspel om kansberekeningen te introduceren
kansberekeningen kunnen in meer kansspellen
gebruikt worden : dobbelspellen muntspellen
en zelfs bij : verzekeringen , gokken en mischien zelfs op de beurs

ik krijg nu alleen een dim error . oorzaak ?

Code: Selecteer alles
dim card( 52 ), hand( 7 , 5 ) , value( 7 ) , ry( 7 )
global heart , club , spade , daimont
heart   = 000
club    = 100
spade   = 200
daimont = 300
for i = 0 to 7
  ry( i ) = i
next i
call createDeck
call shufleDeck
for h = 0 to 7
  for i = 0 to 4
    hand( h , i ) = card( h * 5 + i )
  next i
next h
for h = 0 to 7
   value( h ) = poker(  _
     hand( h , 0 ) _
   , hand( h , 1 ) _
   , hand( h , 2 ) _
   , hand( h , 3 ) _
   , hand( h , 4 ) )
next h
for h = 1 to 7
  for l = 0 to h
    if value( ry( h ) ) < value( ry( l ) ) then
      h = ry( h )
      ry( h ) = ry( l )
      ry( l ) = h
    end if
  next l
next h
print "Hand spots calculated"
print "only whit cardsvalue not chance ."
for h = 0 to 7
  print "Hand " ; chr$( h + asc( "A" ) ) ; " = " ;
  for i = 0 to 4
    print face$( card( h * 5 + i ) ) ;
  next i
  print "= "; value( h ) ; " spot = " ; ry( h )
next h
print "Tot number of posible hands = " _
  ; over( 52 , 5 )
print "Chance on 1 card is Clubs or Ace = 1:" _
  ; 1 / por( 1 / 13 , 1 / 4 )
print "Chance on 1 card is Clubs xor Ace = 1:" _
  ; 1 / pxor( 1 / 13 , 1 / 4 )
print "Chance on 1 card is Clubs and Ace = 1:" _
  ; 1 / pand( 1 / 13 , 1 / 4 )
print "Chance on 5 same suits = 1:" _
  ; over( 52 , 5 ) / over( 13 , 5 )
print "Chance on 4 of a kind = 1:" _
  ; 13 ^ 4 / 5
print "Chance on 5 in a row = 1:" _
  ; ( 13 - 4 ) ^ 5 / frac( 5 )
end
''============================= card stuf
sub createDeck
    for suit = 0 to 3
      for fase = 0 to 12
        card( suit * 13 + fase ) _
        = suit * 100 + fase + 2
      next fase
    next suit
end sub
sub shufleDeck
  for i = 0 to 51
    d = int( rnd( 0 ) * 52 )
    h = card( i )
    card( i ) = card( d )
    card( d ) = h
  next i
end sub
function poker( a , b , c , d , e )
  poker = cardvalue( a ) _
  + cardvalue( b ) _
  + cardvalue( c ) _
  + cardvalue( d ) _
  + cardvalue( e )
end function
function cardvalue( no )
''calculation of cards
''is different by every game
''exaple  : poker
  h = int( card( no ) / 100 ) * 100
  l = card( no ) - h
  cardvalue = l
end function
function face$( no )
  h = int( no / 100 ) * 100
  l = no - h
  select case h
    case heart   : a$ = "h"
    case club    : a$ = "c"
    case spade   : a$ = "s"
    case daimont : a$ = "d"
  end select
  select case l
    case 14   : b$ = "A"
    case 13   : b$ = "K"
    case 12   : b$ = "Q"
    case 11   : b$ = "J"
    case 10   : b$ = "X"
    case else : b$ = str$( l )
  end select
  face$ = a$ + b$ + " "
end function
''========================= chance stuf
function over( n , i )
  over = frac( n ) _
  / frac( i ) / frac( n - i )
end function
function frac( no )
  if no < 1 or no > 63 then frac = 0
  sum = 1
  for i = 1 to no
    sum = sum * i
  next i
  frac = sum
end function
function pnot( x )
  pnot = 1 - x
end function
function por( a , b )
  por = a + b - pand( a , b )
end function
function pand( a , b )
  pand = a * b
end function
function pxor( a , b )
  pxor = a + b - pand( a , b ) * 2
end function
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm

Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron