Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Smallish Games
#14
lotto


again inspired by carlos

Code: (Select All)
_Title "lotto for carlos" ' b+ 2024-05-30
Randomize Timer
Width 80, 40 ' <<< 30 so can fit 25 rows on screen 0
Dim a$(1 To 3)
a$(1) = "02 03 05 06 09 10 11 13 14 16 18 20 23 24 25"
a$(2) = "01 04 05 06 07 09 11 12 13 15 16 19 20 23 24"
a$(3) = "01 04 06 07 08 09 10 11 12 14 16 17 20 23 24"
Locate 4
Print CountDigits$(a$(), 25)
Print "    press any for TicketMaker Demo of 7 tickets of 3 numbers from 1 to 100..."
Sleep
Cls
Dim As Long n, numbers, i, top
n = 7: numbers = 3: top = 100
Dim tickets$(1 To n)
Print n; " tickets,"; numbers; " numbers from 1 to"; top; ":"
For i = 1 To n
    tickets$(i) = TicketMaker$(numbers, top)
    Print i, tickets$(i)
Next
Print: Print "Number Counts:"
Print CountDigits$(tickets$(), top)
Print: Print "   press any to input your own specs for a multiple ticket purchase..."
Sleep
Cls
Print
Print "      Multiple tickets purchase:"
Input "Limit 25 for space               Please enter Top number limit "; top
Input "Limit 10 for space  Please enter number of numbers on a ticket "; numbers
Input "Limit  5 for space  Please enter number of tickets to purchase "; n
Cls
If top > 25 Then top = 25
If numbers > 10 Then numbers = 10
If n > 5 Then n = 5
Dim lotto$(1 To n)
Print: Print n; " tickets,"; numbers; " numbers from 1 to"; top; ":"
For i = 1 To n
    lotto$(i) = TicketMaker$(numbers, top)
    Print i, lotto$(i)
Next
Print: Print "Number Counts:"
Print CountDigits$(lotto$(), top)

Function CountDigits$ (digits$(), highest As Long)
    Dim As Long i, j, num, count(1 To highest) '      variables to process digits strings

    Dim rtn$ ' <<<  prepare to set function to return this string when done

    For i = LBound(digits$) To UBound(digits$) ' count the whole array of digit strings
        For j = 1 To Len(digits$(i)) Step 3 '        one digit string break down to 3 digit parts
            num = Val(Mid$(digits$(i), j, 3)) '  convert string to number
            count(num) = count(num) + 1 '        add to count of that number
        Next
    Next
    For i = 1 To highest ' if not 0, lines of counts put into one l o n g string
        If count(i) Then
            rtn$ = rtn$ + S2$(i) + " = " + TS2$(count(i)) + Chr$(10)
        End If
    Next
    CountDigits$ = rtn$ ' <<< returns 25 rows of print in one string
End Function

Function TicketMaker$ (number As Long, highest As Long)
    ' number = number of 2 digit numbers you want
    ' lowest number allowed is always 1
    ' highest number allowed

    ' because no repeats digits, number can not exceed highest

    ' please return the numbers sorted from low to high

    'example:
    ' dim a$(1 to 3)
    ' for i = 1 to 3
    '   a$(i) = TicketMaker$(15, 25)
    ' next
    ' returns:
    'a$(1) = "02 03 05 06 09 10 11 13 14 16 18 20 23 24 25"
    'a$(2) = "01 04 05 06 07 09 11 12 13 15 16 19 20 23 24"
    'a$(3) = "01 04 06 07 08 09 10 11 12 14 16 17 20 23 24"

    Dim As Long shuffle(1 To highest), sort(1 To number), i
    Dim rtn$

    For i = 1 To highest
        shuffle(i) = i
    Next
    For i = highest To 2 Step -1
        Swap shuffle(i), shuffle(Int(Rnd * i) + 1)
    Next
    For i = 1 To number
        sort(i) = shuffle(i)
    Next
    QuickSort 1, number, sort()
    For i = 1 To number
        If Len(rtn$) Then rtn$ = rtn$ + " " + S2$(sort(i)) Else rtn$ = S2$(sort(i))
    Next
    TicketMaker$ = rtn$
End Function

Sub QuickSort (start As Long, finish As Long, array() As Long)
    Dim Hi As Long, Lo As Long, Middle As Long
    Hi = finish: Lo = start
    Middle = array((Lo + Hi) / 2) 'find middle of array
    Do
        Do While array(Lo) < Middle: Lo = Lo + 1: Loop
        Do While array(Hi) > Middle: Hi = Hi - 1: Loop
        If Lo <= Hi Then
            Swap array(Lo), array(Hi)
            Lo = Lo + 1: Hi = Hi - 1
        End If
    Loop Until Lo > Hi
    If Hi > start Then Call QuickSort(start, Hi, array())
    If Lo < finish Then Call QuickSort(Lo, finish, array())
End Sub

Function TS$ (n As Long) ' Trim String for Long Type but integers should work as well
    TS$ = _Trim$(Str$(n))
End Function

Function TS2$ (n As Long) ' Trim String for Long Type but integers should work as well
    TS2$ = Right$("  " + TS$(n), 2)
End Function

Function S2$ (n As Long)
    S2$ = Right$("00" + TS$(n), 2)
End Function

   
   
b = b + ...
Reply


Messages In This Thread
Smallish Games - by bplus - 04-25-2022, 10:55 PM
Smallish Games - by bplus - 06-12-2022, 12:01 AM
RE: Smallish Games - by johnno56 - 06-12-2022, 07:43 AM
RE: Smallish Games - by bplus - 01-12-2023, 11:48 PM
RE: Smallish Games - by PhilOfPerth - 01-13-2023, 01:25 AM
RE: Smallish Games - by bplus - 01-13-2023, 03:08 AM
RE: Smallish Games - by bplus - 03-01-2023, 05:19 AM
RE: Smallish Games - by PhilOfPerth - 03-01-2023, 06:49 AM
RE: Smallish Games - by bplus - 03-01-2023, 03:54 PM
RE: Smallish Games - by bplus - 07-14-2023, 08:11 PM
RE: Smallish Games - by bplus - 07-14-2023, 08:27 PM
RE: Smallish Games - by mnrvovrfc - 07-14-2023, 09:47 PM
RE: Smallish Games - by bplus - 05-03-2024, 06:35 PM
RE: Smallish Games - by bplus - 05-30-2024, 12:57 PM
RE: Smallish Games - by JRace - 05-31-2024, 03:44 AM
RE: Smallish Games - by bplus - 05-31-2024, 10:07 AM
RE: Smallish Games - by bplus - 07-17-2024, 05:24 PM
RE: Smallish Games - by Pete - 07-17-2024, 06:51 PM
RE: Smallish Games - by bplus - 09-12-2024, 07:09 PM
RE: Smallish Games - by bplus - 09-13-2024, 09:47 AM



Users browsing this thread: 4 Guest(s)