Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Blackjack
- disk = peripheral.wrap("bottom")
- cardName = {"Ace of Spades", "Ace Of Clubs", "Ace Of Hearts", "Ace Of Diamonds", "2 of Spades", "2 of Clubs", "2 of Hearts", "2 of Diamonds", "3 of Spades", "3 of Clubs", "3 of Hearts", "3 of Diamonds", "4 of Spades", "4 of Clubs", "4 of Hearts", "4 of Diamonds", "5 of Spades", "5 of Clubs", "5 of Hearts", "5 of Diamonds", "6 of Spades", "6 of Clubs", "6 of Hearts", "6 of Diamonds", "7 of Spades", "7 of Clubs", "7 of Hearts", "7 of Diamonds", "8 of Spades", "8 of Clubs", "8 of Hearts", "8 of Diamonds", "9 of Spades", "9 of Clubs", "9 of Hearts", "9 of Diamonds", "10 of Clubs", "10 of Spades", "10 of Hearts", "10 of Diamonds", "Jack of Clubs", "Jack of Spades", "Jack of Hearts", "Jack of Diamonds", "Queen of Clubs", "Queen of Spades", "Queen of Hearts", "Queen of Diamonds", "King of Clubs", "King of Spades", "King of Hearts", "King of Diamonds"}
- cardValue = {11, 11, 11, 11, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}
- playerCards = {}
- dealerVisibleCards = {}
- dealerHiddenCards = {}
- restricted = {}
- minCards = 1
- maxCards = 52
- stayPlayer = false
- stayDealer = false
- stay = false
- doubleDown = 0
- playerValue = 0
- dealerValue = 0
- y = 0
- pot = 0
- deleteTable = table
- function activate()
- os.pullEvent("disk")
- end
- function waitClick()
- event, side, x, y = os.pullEvent("mouse_click")
- end
- function mWrite(message, x, y)
- term.setCursorPos(x,y)
- write(message)
- end
- function getCredits()
- f = fs.open("/disk/credits", "r")
- credits = f.readLine()
- f.close()
- f = fs.open("startCredits", "w")
- f.write(credits)
- f.close()
- credits = tonumber(credits)
- end
- function startingCredits()
- f = fs.open("startCredits", "r")
- startCredits = f.readLine()
- f.close()
- startCredits = tonumber(startCredits)
- end
- function generateNumber()
- randomNum = math.random(1, 52)
- end
- function restrictCard()
- restricted = {}
- for i = 1, #playerCards do
- table.insert(restricted, playerCards[i])
- end
- for i = 1, #dealerHiddenCards do
- table.insert(restricted, dealerHiddenCards[i])
- end
- for i = 1, #dealerVisibleCards do
- table.insert(restricted,dealerVisibleCards[i])
- end
- end
- function checkRestrict()
- isRestricted = true
- for key, value in ipairs(restricted) do
- if randomNum ~= tonumber(value) then
- isRestricted = false
- break
- end
- end
- end
- function drawCard()
- generateNumber()
- checkRestrict()
- return randomNum
- end
- function playerCard()
- drawCard()
- playerValue = playerValue + cardValue[randomNum]
- playerCard1 = cardName[randomNum]
- table.insert(playerCards, playerCard1)
- restrictCard()
- drawCard()
- playerValue = playerValue + cardValue[randomNum]
- playerCard2 = cardName[randomNum]
- table.insert(playerCards, playerCard2)
- restrictCard()
- end
- function dealerCard()
- drawCard()
- dealerValue = dealerValue + cardValue[randomNum]
- dealerVisibleCard1 = cardName[randomNum]
- table.insert(dealerVisibleCards, dealerVisibleCard1)
- restrictCard()
- drawCard()
- dealerValue = dealerValue + cardValue[randomNum]
- dealerHiddenCard = cardName[randomNum]
- table.insert(dealerHiddenCards, dealerHiddenCard)
- restrictCard()
- end
- function hitCard(receiver)
- drawCard()
- card = cardName[randomNum]
- table.insert(receiver, card)
- restrictCard()
- end
- function hitPlayer()
- hitCard(playerCards)
- playerValue = playerValue + cardValue[randomNum]
- normalScreen()
- end
- function hitDealer()
- hitCard(dealerVisibleCards)
- dealerValue = dealerValue + cardValue[randomNum]
- normalScreen()
- sleep(0.5)
- end
- function doubleDownMove()
- pot = pot * 2
- hitPlayer()
- stayPlayer = true
- if stayDealer == true then
- stay = true
- else
- while stayDealer == false do
- dealerMove()
- end
- end
- sleep(0.5)
- end
- function dealerMove()
- if dealerValue < 17 then
- hitDealer()
- elseif dealerValue >= 17 then
- stayDealer = true
- if stayPlayer == true then
- stay = true
- end
- end
- sleep(0.5)
- end
- function hitOrStay()
- waitClick() -- venter på stay, hit eller double down
- if x >2 and x < 16 and y > 14 and y < 18 then -- hit
- doubleDown = 1
- hitPlayer()
- --if stayDealer == false then
- --dealerMove()
- -- end
- elseif x >20 and x < 33 and y > 14 and y < 18 and doubleDown == 0 then -- double down
- doubleDownMove()
- while stayDealer == false do
- dealerMove()
- end
- doubleDown = 1
- elseif x >37 and x < 50 and y > 14 and y < 18 then -- stay
- stayPlayer = true
- doubleDown = 1
- while stayDealer == false do
- dealerMove()
- end
- end
- end
- function checkBust()
- if playerValue > 21 then
- playerBust()
- elseif dealerValue > 21 then
- dealerBust()
- end
- end
- function playerBust()
- isPlayerBust = true
- messageScreen("You busted!")
- dealerWin()
- end
- function dealerBust()
- isDealerBust = true
- messageScreen("Dealer busted!", 6,15)
- playerWin()
- end
- function resolve()
- --if playerValue > 21 then
- --playerBust()
- --elseif dealerValue > 21 then
- --dealerBust()
- if isPlayerBust or isDealerBust == true then
- isPlayerBust = false
- isDealerBust = false
- elseif dealerValue == 21 then
- dealerBlackjack()
- elseif dealerValue > playerValue then
- dealerWin()
- elseif dealerValue == playerValue then
- draw()
- elseif playerValue == 21 and dealerValue ~= 21 then
- playerBlackjack()
- elseif dealerValue < playerValue then
- playerWin()
- end
- checkBroke()
- end
- function draw()
- messageScreen("Draw")
- stay = true
- end
- function dealerWin()
- messageScreen("Dealer wins")
- stay = true
- end
- function playerWin()
- credits = credits + pot
- messageScreen("You win!") -- player vinder
- stay = true
- end
- function dealerBlackjack()
- sleep(1)
- messageScreen("Dealer got Blackjack!")
- stay = true
- end
- function playerBlackjack()
- credits = credits + (math.floor(pot * 2))
- messageScreen("You got Blackjack!")
- stay = true
- end
- function checkBroke()
- if credits < 1 then
- broke()
- end
- end
- function broke()
- messageScreen("No more credits")
- writeCredits()
- sleep(10)
- os.reboot()
- end
- function checkCredit()
- if credits < 1 then
- setColor(colors.black, colors.lime)
- mWrite("No credits", 21,16)
- credits = 0
- pot = startCredits
- sleep(2)
- end
- if credits > startCredits then
- setColor(colors.black, colors.lime)
- --mWrite(startCredits, 24,16)
- credits = startCredits
- pot = 0
- end
- setColor(colors.white, colors.black)
- end
- function placeBet()
- pot = 0
- while true do
- waitClick()
- if x >15 and x < 20 and y == 15 then -- +1
- pot = pot +1
- credits = credits - 1
- checkCredit()
- betScreen()
- elseif x >15 and x < 20 and y == 16 then -- +10
- pot = pot +10
- credits = credits - 10
- checkCredit()
- betScreen()
- elseif x >15 and x < 20 and y == 17 then -- +100
- pot = pot +100
- credits = credits - 100
- checkCredit()
- betScreen()
- elseif x >32 and x < 37 and y == 15 then -- -1
- pot = pot -1
- credits = credits + 1
- checkCredit()
- betScreen()
- elseif x >32 and x < 37 and y == 16 then -- -10
- pot = pot -10
- credits = credits + 10
- checkCredit()
- betScreen()
- elseif x >32 and x < 37 and y == 17 then -- -100
- pot = pot -100
- credits = credits + 100
- checkCredit()
- betScreen()
- elseif x >23 and x < 29 and y == 17 then
- pot = pot * 2
- break
- end
- end
- end
- function writeCredits()
- file = fs.open("/disk/credits", "w")
- file.write(credits)
- end
- function playAgain()
- waitClick()
- if x >6 and x < 20 and y > 6 and y < 12 then -- new game
- newGame()
- elseif x >32 and x < 46 and y > 6 and y < 12 then -- Cash out
- cashOut()
- end
- end
- function deleteLine(table, line)
- deleteTable.remove(table, line)
- end
- function newGame()
- stay = false
- stayDealer = false
- satyPlayer = false
- playerCards = 0
- dealerVisibleCards = 0
- dealerHiddenCards = 0
- doubleDown = 0
- playerValue = 0
- dealerValue = 0
- y = 0
- pot = 0
- isPlayerBust = false
- isDealerBust = false
- startCredits = credits
- end
- function cashOut()
- writeCredits()
- sleep(10)
- os.reboot()
- end
- function setColor(text, background)
- term.setTextColor(text)
- term.setBackgroundColor(background)
- end
- function drawImage(image)
- myImage = paintutils.loadImage(image)
- paintutils.drawImage(myImage, 1, 1)
- end
- function writePlayerHand()
- y = 7
- for i = 1, #playerCards do
- mWrite(playerCards[i], 4,y)
- y = y+1
- end
- end
- function writeDealerHand()
- y = 8
- for i = 1, #dealerVisibleCards do
- mWrite(dealerVisibleCards[i], 29,y)
- y = y+1
- end
- end
- function normalScreen()
- term.clear()
- drawImage("normalScreen")
- setColor(colors.black, colors.lightGray)
- mWrite("Your hand", 4,2)
- mWrite("Dealer hand", 39,2)
- mWrite("Credits", 16,2)
- mWrite("Pot", 31,2)
- setColor(colors.black, colors.white)
- mWrite(credits, 17,3)
- mWrite(pot, 30,3)
- mWrite("Hit", 8,16)
- mWrite("DoubleDown", 22,16)
- mWrite("Stay", 42,16)
- setColor(colors.white, colors.gray)
- mWrite(playerValue, 6,4)
- mWrite(dealerValue, 41,4)
- writePlayerHand()
- mWrite("Hidden", 29,7)
- writeDealerHand()
- setColor(colors.white, colors.black)
- end
- function betScreen()
- term.clear()
- drawImage("betScreen")
- setColor(colors.black, colors.green)
- mWrite("Place bet", 21,15)
- mWrite("place", 24,17)
- setColor(colors.black, colors.lime)
- mWrite(pot, 24,16)
- setColor(colors.black, colors.lightGray)
- mWrite("+1", 16,15)
- mWrite("+10", 16,16)
- mWrite("+100", 16,17)
- mWrite("-1", 33,15)
- mWrite("-10", 33,16)
- mWrite("-100", 33,17)
- mWrite("Credits", 16,2)
- setColor(colors.black, colors.white)
- mWrite(credits, 17,3)
- setColor(colors.white, colors.black)
- end
- function messageScreen(message)
- term.clear()
- drawImage("messageScreen")
- setColor(colors.black, colors.white)
- mWrite(message, 21,16)
- setColor(colors.black, colors.lightGray)
- mWrite("Your hand", 4,2)
- mWrite("Dealer hand", 39,2)
- mWrite("Credits", 16,2)
- mWrite("Pot", 31,2)
- setColor(colors.black, colors.white)
- mWrite(credits, 17,3)
- mWrite(pot, 30,3)
- setColor(colors.white, colors.gray)
- mWrite(playerValue, 6,4)
- mWrite(dealerValue, 41,4)
- mWrite(dealerHiddenCards[1], 29,7)
- writePlayerHand()
- writeDealerHand()
- setColor(colors.white, colors.black)
- sleep(3)
- end
- function newGameScreen()
- term.clear()
- drawImage("newGameScreen")
- setColor(colors.white, colors.black)
- mWrite("New game?", 22,9)
- setColor(colors.black, colors.white)
- mWrite("New game", 9,9)
- mWrite("Cash out", 35,9)
- setColor(colors.white, colors.black)
- end
- function startScreen()
- term.clear()
- startScreen = paintutils.loadImage("startScreenBlack")
- paintutils.drawImage(startScreen, 4, 2)
- setColor(colors.white, colors.black)
- mWrite("Insert Credit Disk to play", 13, 19)
- end
- --################Loop##############
- while true do
- startScreen()
- activate()
- getCredits()
- startingCredits()
- while true do
- playerCards = {}
- dealerVisibleCards = {}
- dealerHiddenCards = {}
- betScreen()
- placeBet()
- normalScreen()
- sleep(0.5)
- playerCard()
- sleep(0.5)
- dealerCard()
- sleep(0.5)
- normalScreen()
- while stay == false do
- hitOrStay()
- checkBust()
- end
- resolve()
- newGameScreen()
- playAgain()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement