Added MiniScript version of 75_Roulette.

This commit is contained in:
JoeStrout
2023-10-02 09:40:53 -07:00
parent 22e011349c
commit bd23c4778b
3 changed files with 219 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
Original source downloaded from [Vintage Basic](http://www.vintage-basic.net/games.html).
Conversion to [MiniScript](https://miniscript.org).
Ways to play:
1. Command-Line MiniScript:
Download for your system from https://miniscript.org/cmdline/, install, and then run the program with a command such as:
```
miniscript roulette.ms
```
2. Mini Micro:
Download Mini Micro from https://miniscript.org/MiniMicro/, launch, and then click the top disk slot and chose "Mount Folder..." Select the folder containing the MiniScript program and this README file. Then, at the Mini Micro command prompt, enter:
```
load "roulette"
run
```

View File

@@ -0,0 +1,200 @@
print " "*32 + "Roulette"
print " "*15 + "Creative Computing Morristown New Jersey"
print; print; print
if version.hostName == "Mini Micro" then
import "dateTime"
globals.date = dateTime.str(dateTime.now, "MMM d, yyyy")
else
globals.date = input("Enter the current date (as in 'Jan 23, 1979') - ")
end if
yn = input("Do you want instructions? ").lower + " "
if yn[0] != "n" then
print
print "This is the betting layout"
print " (*=Red)"
print
print " 1* 2 3*"
print " 4 5* 6 "
print " 7* 8 9*"
print "10 11 12*"
print "---------------"
print "13 14* 15 "
print "16* 17 18*"
print "19* 20 21*"
print "22 23* 24 "
print "---------------"
print "25* 26 27*"
print "28 29 30*"
print "31 32* 33 "
print "34* 35 36*"
print "---------------"
print " 00 0 "
print
input "(Press Return at each pause.)"
print
print "Types of Bets"
print
print "The numbers 1 to 36 signify a straight bet"
print "on that number."
print "These pay off 35:1"
print
print "The 2:1 bets are:"
print " 37) 1-12 40) first column"
print " 38) 13-24 41) second column"
print " 39) 25-36 42) third column"
print
print "The even money bets are:"
print " 43) 1-18 46) odd"
print " 44) 19-36 47) red"
print " 45) even 48) black"
print
print " 49)0 and 50)00 pay off 35:1"
print " NOTE: 0 and 00 do not count under any"
print " bets except their own."
input
print "When I ask for each bet, type the number"
print "and the amount, separated by a comma."
print "For example: to bet $500 on black, type 48,500"
print "when I ask for a bet."
print
print "The minimum bet is $5, the maximum is $500."
print
end if
redNumbers = [1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]
// function to convert a number 1-38 to a number/description, like "00"
// or "7 RED"
numDesc = function(number)
if number == 37 then return "0"
if number == 38 then return "00"
s = str(number)
if redNumbers.indexOf(number) == null then
return s + " BLACK"
else
return s + " RED"
end if
end function
// function to calculate the payout factor (positive if player wins,
// or -1 if player loses) for the given bet and actual spin.
payoutFactor = function(bet, spin)
if bet <= 36 then // straight bet, pays 35:1
if bet == spin then return 35 else return -1
else if bet == 49 then // 0, pays 35:1
if spin == 37 then return 35 else return -1
else if bet == 50 then // 00, pays 35:1
if spin == 38 then return 35 else return -1
else if bet == 37 then // 1-12, pays 2:1
if 1 <= spin <= 12 then return 2 else return -1
else if bet == 38 then // 13-24, pays 2:1
if 13 <= spin <= 24 then return 2 else return -1
else if bet == 39 then // 25-36, pays 2:1
if 25 <= spin <= 36 then return 2 else return -1
else if bet == 40 then // first column, pays 2:1
if spin % 3 == 1 then return 2 else return -1
else if bet == 41 then // second column, pays 2:1
if spin % 3 == 2 then return 2 else return -1
else if bet == 42 then // third column, pays 2:1
if spin % 3 == 0 then return 2 else return -1
else if bet == 43 then // 1-18, even money
if 1 <= spin <= 18 then return 1 else return -1
else if bet == 44 then // 19-36, even money
if 19 <= spin <= 36 then return 1 else return -1
else if bet == 45 then // even number, even money
if spin % 2 == 0 then return 1 else return -1
else if bet == 46 then // odd number, even money
if spin % 2 == 1 then return 1 else return -1
else if bet == 47 then // red, even money
if redNumbers.indexOf(spin) != null then return 1 else return -1
else if bet == 48 then // black, even money
if redNumbers.indexOf(spin) == null then return 1 else return -1
end if
print "Invalid bet " + bet + " in payoutFactor"
end function
playerCash = 1000
houseCash = 100000
x = [0] * 38 // (keeps track of how often each number comes up)
while playerCash > 0
// Get the player's bets
numBets = input("How many bets? ").val
if numBets < 1 then continue
bets = []; amounts = []
for i in range(1, numBets)
while true
s = input("Number " + i + "? ").replace(",", " ").replace(" ", " ").split
if s.len != 2 then continue
bet = s[0].val; amount = s[1].val
if bets.indexOf(bet) != null then
print "You made that bet once already,dum-dum"
continue
end if
if 1 <= bet <= 50 and 5 <= amount <= 500 then
bets.push bet
amounts.push amount
break
end if
end while
end for
// Spin the wheel!
print "Spinning"
print
print
spin = floor(38 * rnd + 1)
x[spin] += 1
print numDesc(spin)
print
// Now, pay out the bets
for i in bets.indexes
f = payoutFactor(bets[i], spin)
if f > 0 then
print "You win " + f*amounts[i] + " on bet " + i
else
print "You lose " + (-f)*amounts[i] + " on bet " + i
end if
playerCash += f * amounts[i]
houseCash -= f * amounts[i]
end for
print
print "Totals: ME YOU"
print " " + (houseCash+" "*12)[:12] + playerCash
if playerCash > 0 and houseCash > 0 then
yn = input("Again? ").lower + " "
if yn[0] != "y" then break
end if
end while
if houseCash < 1 then
print "You broke the house!"
playerCash = 101000
end if
if playerCash < 1 then
print "Oops! You just spent your last dollar!"
print "Thanks for your money."
print "I'll use it to buy a solid gold roulette wheel"
print
else
name = input("To whom shall I make the check? ")
print
print "-"*68
print " "*55 + "Check No. " + floor(rnd*100)
print
print " "*(67 - date.len) + date
print
print
print "Pay to the order of-----" + name + "-----$ " + playerCash
print
print
print " "*10 + "The Memory Bank of New York"
print
print " "*35 + "The Computer"
print " "*35 + "----------X-----"
print
print "-"*68
print "Come back soon!"
end if

View File

@@ -17,4 +17,4 @@ http://www.vintage-basic.net/games.html
#### Porting Notes
(please note any difficulties or challenges in porting here)
- The program keeps a count of how often each number comes up in array `X`, but never makes use of this information.