Advertisement
oGoOgO

game_More_less.lua

Jun 3rd, 2024
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.69 KB | None | 0 0
  1. local component = require("component")
  2. local event = require("event")
  3. local term = require("term")
  4. local casino = require("casino")
  5. local gpu = component.gpu
  6.  
  7. local login, value, players_card, dealer_card, time_sleep, time_sleep_end = false, 1, {}, {}, 0.2, 1.5
  8. local first_win = false
  9. local deck
  10.  
  11. local consoleLines = {}
  12. for i = 1, 13 do
  13. consoleLines[i] = ""
  14. end
  15.  
  16. local function drawRightMenu()
  17. gpu.setBackground(login and 0x613C3C or 0x990000)
  18. gpu.setForeground(0xFFFFFF)
  19. gpu.fill(41, 17, 28, 3, " ")
  20. gpu.set(52, 18, "Выход")
  21.  
  22. gpu.setBackground(0x000000)
  23. gpu.setForeground(0xAAAAAA)
  24. gpu.fill(41, 2, 28, 14, " ")
  25. gpu.set(42, 2, "Вывод:")
  26. for i = 1, #consoleLines do
  27. gpu.setForeground((15 - #consoleLines + i) * 0x111111)
  28. gpu.set(42, 16 - i, consoleLines[i])
  29. end
  30. end
  31.  
  32. local function message(msg)
  33. table.remove(consoleLines, 1)
  34. table.insert(consoleLines, msg)
  35. drawRightMenu()
  36. end
  37.  
  38. local Deck = {}
  39.  
  40. function Deck:new()
  41. local obj = {}
  42. obj.cards = { { card = "2", suit = "♥" }, { card = "2", suit = "♦" }, { card = "2", suit = "♣" }, { card = "2", suit = "♠" },
  43. { card = "3", suit = "♥" }, { card = "3", suit = "♦" }, { card = "3", suit = "♣" }, { card = "3", suit = "♠" },
  44. { card = "4", suit = "♥" }, { card = "4", suit = "♦" }, { card = "4", suit = "♣" }, { card = "4", suit = "♠" },
  45. { card = "5", suit = "♥" }, { card = "5", suit = "♦" }, { card = "5", suit = "♣" }, { card = "5", suit = "♠" },
  46. { card = "6", suit = "♥" }, { card = "6", suit = "♦" }, { card = "6", suit = "♣" }, { card = "6", suit = "♠" },
  47. { card = "7", suit = "♥" }, { card = "7", suit = "♦" }, { card = "7", suit = "♣" }, { card = "7", suit = "♠" },
  48. { card = "8", suit = "♥" }, { card = "8", suit = "♦" }, { card = "8", suit = "♣" }, { card = "8", suit = "♠" },
  49. { card = "9", suit = "♥" }, { card = "9", suit = "♦" }, { card = "9", suit = "♣" }, { card = "9", suit = "♠" },
  50. { card = "10", suit = "♥" }, { card = "10", suit = "♦" }, { card = "10", suit = "♣" }, { card = "10", suit = "♠" },
  51. { card = "J", suit = "♥" }, { card = "J", suit = "♦" }, { card = "J", suit = "♣" }, { card = "J", suit = "♠" },
  52. { card = "Q", suit = "♥" }, { card = "Q", suit = "♦" }, { card = "Q", suit = "♣" }, { card = "Q", suit = "♠" },
  53. { card = "K", suit = "♥" }, { card = "K", suit = "♦" }, { card = "K", suit = "♣" }, { card = "K", suit = "♠" },
  54. { card = "T", suit = "♥" }, { card = "T", suit = "♦" }, { card = "T", suit = "♣" }, { card = "T", suit = "♠" }
  55. }
  56.  
  57. obj.index = 1
  58. obj.pod = true
  59.  
  60. function obj:get()
  61. local temp = self.cards[self.index]
  62. self.index = self.index + 1
  63. return temp
  64. end
  65.  
  66. function obj:hinder()
  67. for first = 1, 52 do
  68. local second, firstCard = math.random(1, 52), self.cards[first]
  69. self.cards[first] = self.cards[second]
  70. self.cards[second] = firstCard
  71. end
  72. self.index = 1
  73. end
  74.  
  75. setmetatable(obj, self)
  76. self.__index = self;
  77. return obj
  78. end
  79.  
  80. local function mathRound(num, idp)
  81. local mlt = 10 ^ (idp or 0)
  82. return math.floor(num * mlt + 0.5) / mlt
  83. end
  84.  
  85. local function drawDisplayForOneHand()
  86. gpu.setBackground(0x006400)
  87. term.clear()
  88. drawRightMenu()
  89. gpu.setBackground(0x00aa00)
  90. gpu.fill(3, 2, 36, 18, " ")
  91.  
  92. gpu.setBackground(0x229922)
  93.  
  94. gpu.fill(9, 9, 6, 6, ' ')
  95. gpu.fill(27, 9, 6, 6, ' ')
  96.  
  97. gpu.setBackground(0x20B2AA)
  98. gpu.set(17, 10, ' Больше ')
  99.  
  100. gpu.set(17, 13, ' Меньше ')
  101.  
  102. gpu.set(13, 6, " Забрать ставку ")
  103. gpu.setBackground(0x00aa00)
  104. gpu.setForeground(0xffffff)
  105. gpu.set(16, 4, "Ставка: " .. value)
  106. gpu.set(10, 16, "Следующая ставка: " .. value * 2)
  107.  
  108. end
  109.  
  110. local function giveCardPlayer(card)
  111. gpu.setBackground(0xffffff)
  112. if card.suit == '♥' or card.suit == '♦' then
  113. gpu.setForeground(0xaa0000)
  114. else
  115. gpu.setForeground(0x000000)
  116. end
  117.  
  118. players_card = card
  119.  
  120. gpu.fill(9, 9, 6, 6, ' ')
  121.  
  122. os.sleep(time_sleep)
  123. gpu.fill(27, 9, 6, 6, ' ')
  124. os.sleep(time_sleep)
  125. gpu.set(9, 9, card.card)
  126. gpu.set(10, 10, card.suit)
  127. gpu.set(13, 13, card.suit)
  128. if card.card == '10' then
  129. gpu.set(13, 14, card.card)
  130. else
  131. gpu.set(14, 14, card.card)
  132. end
  133. os.sleep(time_sleep)
  134. end
  135.  
  136. local function startGame()
  137. value = value / 2
  138. drawDisplayForOneHand()
  139. deck:hinder()
  140. local card = deck:get()
  141. giveCardPlayer(card)
  142. end
  143.  
  144. local function giveCardCasino()
  145. local card = deck:get()
  146. gpu.setBackground(0xffffff)
  147. if card.suit == '♥' or card.suit == '♦' then
  148. gpu.setForeground(0xaa0000)
  149. else
  150. gpu.setForeground(0x000000)
  151. end
  152.  
  153. dealer_card = card
  154.  
  155. os.sleep(time_sleep)
  156. gpu.set(27, 9, card.card)
  157. gpu.set(28, 10, card.suit)
  158. gpu.set(29, 13, card.suit)
  159. if card.card == '10' then
  160. gpu.set(31, 14, card.card)
  161. else
  162. gpu.set(32, 14, card.card)
  163. end
  164. os.sleep(time_sleep)
  165. end
  166.  
  167. --setDefaultColor(22,5,10)
  168. local function setDefaultColor(left, top, bet)
  169. gpu.setForeground(0xffffff)
  170. gpu.setBackground(0x888888)
  171. gpu.set(20, 5, '1')
  172. gpu.set(20, 7, '5')
  173. gpu.set(22, 5, '10')
  174. gpu.set(22, 7, '25')
  175. gpu.set(25, 5, '50')
  176. gpu.set(25, 7, '75')
  177. gpu.set(28, 5, '100')
  178. gpu.set(28, 7, '250')
  179. gpu.setBackground(0x00aa00)
  180. gpu.set(left, top, tostring(bet))
  181. return bet
  182. end
  183.  
  184. local function drawDisplay()
  185. gpu.setBackground(0xe0e0e0)
  186. term.clear()
  187. drawRightMenu()
  188. gpu.setBackground(0x00aa00)
  189. gpu.fill(3, 2, 14, 7, ' ')
  190. gpu.setBackground(0xffffff)
  191. gpu.setForeground(0xaa0000)
  192.  
  193. gpu.fill(5, 3, 4, 4, ' ')
  194. gpu.set(5, 3, 'J')
  195. gpu.set(6, 4, '♥')
  196. gpu.set(7, 5, '♥')
  197. gpu.set(8, 6, 'J')
  198.  
  199. gpu.setForeground(0x000000)
  200. gpu.fill(11, 4, 4, 4, ' ')
  201. gpu.set(11, 4, 'T')
  202. gpu.set(12, 5, '♠')
  203. gpu.set(13, 6, '♠')
  204. gpu.set(14, 7, 'T')
  205.  
  206. gpu.fill(3, 10, 36, 10, ' ')
  207. gpu.fill(19, 2, 20, 7, ' ')
  208. gpu.setForeground(0xffffff)
  209. setDefaultColor(20, 5, 1)
  210.  
  211. gpu.setBackground(0x00aa00)
  212. gpu.fill(32, 5, 6, 3, ' ')
  213. gpu.set(20, 5, '1')
  214. value = 1
  215. gpu.set(32, 6, 'Начать')
  216. gpu.setForeground(0x000000)
  217. gpu.setBackground(0xffffff)
  218.  
  219. gpu.set(21, 3, 'Выберите ставку')
  220.  
  221. end
  222.  
  223. local function getCardValue(card)
  224. if (card.card == '2') then
  225. return 2
  226. elseif (card.card == '3') then
  227. return 3
  228. elseif (card.card == '4') then
  229. return 4
  230. elseif (card.card == '5') then
  231. return 5
  232. elseif (card.card == '6') then
  233. return 6
  234. elseif (card.card == '7') then
  235. return 7
  236. elseif (card.card == '8') then
  237. return 8
  238. elseif (card.card == '9') then
  239. return 9
  240. elseif (card.card == '10') then
  241. return 10
  242. elseif (card.card == 'J') then
  243. return 11
  244. elseif (card.card == 'Q') then
  245. return 12
  246. elseif (card.card == 'K') then
  247. return 13
  248. elseif (card.card == 'T') then
  249. return 14
  250. end
  251. end
  252.  
  253. local function win()
  254. if (first_win) then
  255. value = mathRound(value * 1.2, 2)
  256. else
  257. value = value * 2
  258. first_win = true
  259. end
  260.  
  261. gpu.setBackground(0x00aa00)
  262. gpu.setForeground(0xffffff)
  263. gpu.fill(16, 4, 18, 1, " ")
  264. gpu.set(16, 4, "Ставка: " .. value)
  265. gpu.fill(10, 16, 25, 1, " ")
  266. gpu.set(10, 16, "Следующая ставка: " .. mathRound(value * 1.2, 2))
  267. end
  268.  
  269. local function lose()
  270. login = false
  271. first_win = false
  272. message("Вы проиграли!")
  273. os.sleep(1)
  274. drawDisplay()
  275. casino.gameIsOver()
  276. end
  277.  
  278. local function casinoPlay(type_of_game)
  279. giveCardCasino()
  280. if (type_of_game == 'less') then
  281. if (getCardValue(players_card) >= getCardValue(dealer_card)) then
  282. win()
  283. giveCardPlayer(dealer_card)
  284. else
  285. lose()
  286. end
  287. else
  288. if (getCardValue(players_card) <= getCardValue(dealer_card)) then
  289. win()
  290. giveCardPlayer(dealer_card)
  291. else
  292. lose()
  293. end
  294. end
  295. end
  296.  
  297. local function rewardPlayer(reward, msg)
  298. message(msg)
  299. local money = mathRound(reward, 2)
  300. message("Вы выиграли " .. money)
  301. casino.reward(money)
  302. os.sleep(time_sleep_end)
  303. login = false
  304. first_win = false
  305. drawDisplay()
  306. end
  307.  
  308. deck = Deck:new()
  309. gpu.setResolution(70, 20)
  310. drawDisplay()
  311. while true do
  312. local e, _, x, y = event.pull(3, "touch")
  313. if e and login then
  314. if (x >= 13 and y == 6 and x <= 28) then
  315. rewardPlayer(value, "Вы забрали ставку.")
  316. login = false
  317. os.sleep(1)
  318. drawDisplay()
  319. casino.gameIsOver()
  320. elseif (x >= 17 and y == 10 and x <= 24) then
  321. casinoPlay('more')
  322. elseif (x >= 17 and y == 13 and x <= 24) then
  323. casinoPlay('less')
  324. elseif x >= 41 and x <= 69 and y >= 17 and y <= 19 then
  325. message("Сначала закончите игру.")
  326. end
  327. elseif e and not login then
  328. if x == 20 and y == 5 then
  329. value = setDefaultColor(20, 5, 1)
  330. elseif x == 20 and y == 7 then
  331. value = setDefaultColor(20, 7, 5)
  332. elseif (x == 22 or x == 23) and y == 5 then
  333. value = setDefaultColor(22, 5, 10)
  334. elseif (x == 22 or x == 23) and y == 7 then
  335. value = setDefaultColor(22, 7, 25)
  336. elseif (x == 25 or x == 26) and y == 5 then
  337. value = setDefaultColor(25, 5, 50)
  338. elseif (x == 25 or x == 26) and y == 7 then
  339. value = setDefaultColor(25, 7, 75)
  340. elseif (x == 28 or x == 29 or x == 30) and y == 5 then
  341. value = setDefaultColor(28, 5, 100)
  342. elseif (x == 28 or x == 29 or x == 30) and y == 7 then
  343. value = setDefaultColor(28, 7, 250)
  344. elseif x >= 41 and x <= 69 and y >= 17 and y <= 19 then
  345. error("Exit by request")
  346. elseif (x >= 32 and x <= 37 and y >= 5 and y <= 7) then
  347. local payed, reason = casino.takeMoney(value)
  348. if payed then
  349. login = true
  350. startGame()
  351. else
  352. message(reason)
  353. end
  354. end
  355. end
  356. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement