iShot

Lua Slot machine

Apr 20th, 2014
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.90 KB | None | 0 0
  1. local Letters = {"@","&","?","@","&","$","@","&","?","@","$","&","@","?","7"}
  2. local Data = {}
  3. local TSize = table.getn(Letters)
  4. local MinNumbersOfSpin = 15
  5. local MaxNumbersOfSpin = 20
  6.  
  7. mon = peripheral.wrap( "back" )
  8. mon.clear()
  9.  
  10. function writeString(String,X,Y)
  11.     mon.setCursorPos(X,Y)
  12.     mon.write(String)
  13. end
  14.  
  15. function spinSlot(Slot)
  16.     Data[Slot][4] =  Data[Slot][4] > 1 and Data[Slot][4] - 1 or TSize
  17.    
  18.     local ID = Data[Slot][4]
  19.     local X = 3+6*(Slot-1)
  20.    
  21.     Data[Slot][1] = Letters[ID > 1 and ID-1 or TSize]
  22.     Data[Slot][2] = Letters[ID]
  23.     Data[Slot][3] = Letters[ID < TSize and ID+1 or 1]
  24.    
  25.     writeString(Data[Slot][1],X,2)
  26.     writeString(Data[Slot][2],X,3)
  27.     writeString(Data[Slot][3],X,4)
  28. end
  29.  
  30. writeString("+---+ +---+ +---+",1,1)
  31. writeString("|   | |   | |   |",1,2)
  32. writeString("|[ ]| |[ ]| |[ ]|",1,3)
  33. writeString("|   | |   | |   |",1,4)
  34. writeString("+---+ +---+ +---+",1,5)
  35.  
  36. for i = 1,3 do
  37.     table.insert(Data,{})
  38.     Data[i][4] = math.random(1,TSize)
  39.     spinSlot(i)
  40. end
  41.  
  42. function roll()
  43.     writeString("                 ",1,8)
  44.     writeString("                 ",1,9)
  45.    
  46.     MaxTurns1 = math.random(MinNumbersOfSpin ,MaxNumbersOfSpin)
  47.     MaxTurns2 = math.random(MaxTurns1+MinNumbersOfSpin-6 ,MaxTurns1+MaxNumbersOfSpin-6)
  48.     MaxTurns3 = math.random(MaxTurns2+MinNumbersOfSpin-10 ,MaxTurns2+MaxNumbersOfSpin-10)
  49.    
  50.     for NumberOfTurn=1, MaxTurns3 do
  51.         if NumberOfTurn <= MaxTurns1 then spinSlot(1) end
  52.         if NumberOfTurn <= MaxTurns2 then spinSlot(2) end
  53.         if NumberOfTurn <= MaxTurns3 then spinSlot(3) end
  54.         os.sleep(0.03+NumberOfTurn/250)
  55.     end
  56.    
  57.     if Data[1][2] == Data[2][2] and Data[2][2] == Data[3][2] then
  58.         writeString("!Congratulations!",1,8)
  59.         writeString("You won",6,9)
  60.     else
  61.         writeString("Sorry :(",6,8)
  62.         writeString("You lose",6,9)
  63.     end
  64. end
  65.  
  66. while true do
  67.     local event, p1, p2 = os.pullEvent()
  68.     if event == "redstone" then
  69.         if rs.getInput("right") then
  70.             roll()
  71.         end
  72.     end
  73. end
Advertisement
Add Comment
Please, Sign In to add comment