Jump to content

Deal cards for FreeCell: Difference between revisions

added FreeBASIC
m (added whitespace before the TOC, added other whitespace in the task's preamble.)
(added FreeBASIC)
Line 1,123:
4C QS 9C 9H 7C 6H 2C 2S
4S TS 2H 5D JC 6C JH QH
JD KS KC 4H</pre>
=={{header|FreeBASIC}}==
<lang freebasic>' version 04-11-2016
' compile with: fbc -s console
 
' to seed ms_lcg(seed > -1)
' to get random number ms_lcg(-1) or ms_lcg() or just ms_lcg
Function ms_lcg(seed As Integer = -1) As UInteger
 
Static As UInteger ms_state
 
If seed <> -1 Then
ms_state = seed Mod 2 ^ 31
Else
ms_state = (214013 * ms_state + 2531011) Mod 2 ^ 31
End If
 
Return ms_state Shr 16
 
End Function
 
' ------=< MAIN >=------
 
Dim As UByte card(51)
Dim As String suit = "CDHS", value = "A23456789TJQK"
Dim As Long i, c, s, v, game = 1
Dim As ULong game_nr(1 To 2) = { 1, 617}
 
Do
 
ms_lcg(game_nr(game)) ' seed generator
Print "game #"; game_nr(game)
game = game + 1
 
For i = 0 To 51 ' set up the cards
card(i) = i
Next
 
For i = 51 To 0 Step -1 ' shuffle
c = ms_lcg Mod (i +1)
Swap card(i), card(c)
Next
 
c = 0
Do
For i = 0 To 7
s = card(51 - c) Mod 4
v = card(51 - c) \ 4
Print Chr(value[v]); Chr(suit[s]); " ";
c = c +1
If c > 51 Then Exit Do
Next
Print
Loop
Print : Print
 
Loop Until game > UBound(game_nr)
 
 
' empty keyboard buffer
While Inkey <> "" : Wend
Print : Print "hit any key to end program"
Sleep
End</lang>
{{out}}
<pre>game #1
JD 2D 9H JC 5D 7H 7C 5H
KD KC 9S 5S AD QC KH 3H
2S KS 9D QD JS AS AH 3C
4C 5C TS QH 4H AC 4D 7S
3S TD 4S TH 8H 2C JH 7D
6D 8S 8D QS 6C 3D 8C TC
6S 9C 2H 6H
 
game #617
7D AD 5C 3S 5S 8C 2D AH
TD 7S QD AC 6D 8H AS KH
TH QC 3H 9D 6S 8D 3D TC
KD 5H 9S 3C 8S 7H 4D JS
4C QS 9C 9H 7C 6H 2C 2S
4S TS 2H 5D JC 6C JH QH
JD KS KC 4H</pre>
 
457

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.