oldnewbie

Guess_the_Word_v0.9

Mar 22nd, 2016
127
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local term = require("term")
  2. local event = require("event")
  3. local computer = require("computer")
  4. local component = require("component")
  5. local unicode = require("unicode")
  6. local fs = require("filesystem")
  7. local gpu = component.gpu
  8. local serialization = require("serialization")
  9. local xSize, ySize = gpu.getResolution()
  10. local width = 63
  11. local height = 25
  12. local xPosCells
  13. local tempXPosCells
  14. local xPosTitle
  15. local tempXPosTitle
  16. local yPosTitle = 8
  17. local yPosCells = 10
  18. local cellsXPos = {}
  19. local title
  20. local words = {}
  21. local word1 = {}
  22. local word2 = {'_','_','_','_','_','_','_','_','_'}
  23. local score = 0
  24. local point = 0
  25. local heard = 5
  26. local sameLetter = false
  27. local noWords = false
  28. local nicknames
  29. local records
  30. local name
  31. local count
  32. local heardPlus
  33. local tempRandom
  34. local haveIteration = true
  35. local lastWord = false
  36. local record = 0
  37. local useIndex = {}
  38. local play = true
  39. local colors = {
  40.     background = 0x7A8B8B,
  41.     button = 0x00688B,
  42.     textButton = 0xE0FFFF,
  43.     input = 0xBBFFFF,
  44.     cell = 0x2F4F4F,
  45.     text = 0x000000,
  46.     heard = 0xFF0000,
  47.     correctLetter = 0x7CFC00,
  48.     incorrectLetter = 0xB22222,
  49.     defBg = 0x000000,
  50.     defText = 0xFFFFFF
  51. }
  52. --Наша клавиатура где (x,y,символ, надпись на клавиатуре)
  53. local keyboard = {
  54.     {8, 16,"й"," Й "},
  55.     {12, 16, "ц", " Ц "},
  56.     {16, 16, "у", " У "},
  57.     {20, 16 , "к", " К "},
  58.     {24, 16, "е", " Е "},
  59.     {28, 16, "н", " Н "},
  60.     {32, 16, "г", " Г "},
  61.     {36, 16, "ш", " Ш "},
  62.     {40, 16, "щ", " Щ "},
  63.     {44, 16, "з", " З "},
  64.     {48, 16, "х", " Х "},
  65.     {52, 16, "ъ", " Ъ "},
  66.     {10, 18, "ф", " Ф "},
  67.     {14, 18, "ы", " Ы "},
  68.     {18, 18, "в", " В "},
  69.     {22, 18, "а", " А "},
  70.     {26, 18, "п", " П "},
  71.     {30, 18, "р", " Р "},
  72.     {34, 18, "о", " О "},
  73.     {38, 18, "л", " Л "},
  74.     {42, 18, "д", " Д "},
  75.     {46, 18, "ж", " Ж "},
  76.     {50, 18, "э", " Э "},
  77.     {14, 20, "я", " Я "},
  78.     {18, 20, "ч", " Ч "},
  79.     {22, 20, "с", " С "},
  80.     {26, 20, "м", " М "},
  81.     {30, 20, "и", " И "},
  82.     {34, 20, "т", " Т "},
  83.     {38, 20, "ь", " Ь "},
  84.     {42, 20, "б", " Б "},
  85.     {46, 20, "ю", " Ю "}
  86. }
  87.  
  88. local selectKey
  89. --Лого
  90. local colorsLogo = {
  91.     background = 0xEEE9E9,
  92.     black = 0x000000,
  93.     green = 0x006400,
  94.     brown = 0x7b4006,
  95.     white = 0xffffff
  96. }
  97. function logo()
  98.     gpu.setResolution(126, 50)
  99.     gpu.setBackground(colorsLogo.background)
  100.     term.clear()
  101.     gpu.fill(1,1,126,50," ")
  102.  
  103.     local brown = {
  104.     {98,11,16,6,},{ 90,22,8,8,},{114,22,8,8},{16,18,2,4},{24,19,2,3},{28,19,10,1},{28,20,2,1},{30,21,8,1},{70,21,8,1},
  105.     {40,18,2,3},{42,21,8,1},{44,20,2,1},{48,18,2,3},{52,18,2,3},{52,21,8,1},{60,19,2,2},{64,18,2,4},{68,19,10,1},{68,20,2,1},
  106.     }
  107.     local green = {
  108.     {98,9,16,2},{98,11,4,1},{106,11,4,1},{112,11,2,1},{98,12,2,1},{16,17,8,1},{24,18,2,1},{28,18,2,1},{30,17,6,1},{36,18,2,1},{40,17,2,1},
  109.     {44,19,2,1},{48,17,2,1},{52,14,2,4},{54,18,2,1},{56,17,4,1},{60,18,2,1},{64,15,2,1},{64,17,2,1},{68,18,2,1},{70,17,6,1},{76,18,2,1}
  110.     }
  111.     local black = {
  112.     {90,17,32,4},{98,21,16,21},{10,33,2,8},{12,34,2,1},{14,33,4,1},{12,37,6,1},{18,34,2,3},{22,33,2,5},{24,34,2,1},{26,33,4,1},{30,34,2,1},
  113.     {34,34,2,3},{36,33,6,1},{36,35,8,1},{36,37,8,1},{42,34,2,1},{48,33,8,1},{46,34,2,1},{48,35,6,1},{54,36,2,1},{46,37,8,1},{58,34,2,3},
  114.     {60,33,6,1},{60,35,8,1},{60,37,8,1},{66,34,2,1},{70,33,2,5},{72,33,6,1},{78,34,2,4},{84,31,2,6},{82,32,6,1},{84,37,2,1}
  115.     }
  116.     local white = {
  117.     {90,21,8,1},{114,21,8,1},{98,28,16,2}
  118.     }
  119.     gpu.setBackground(colorsLogo.brown)
  120.     for i=1, #brown do
  121.         gpu.fill(brown[i][1],brown[i][2],brown[i][3],brown[i][4]," ")
  122.     end
  123.     gpu.setBackground(colorsLogo.green)
  124.     for i=1, #green do
  125.         gpu.fill(green[i][1],green[i][2],green[i][3],green[i][4]," ")
  126.     end
  127.     gpu.setBackground(colorsLogo.black)
  128.     for i=1, #black do
  129.         gpu.fill(black[i][1],black[i][2],black[i][3],black[i][4]," ")
  130.     end
  131.     gpu.setBackground(colorsLogo.white)
  132.     for i=1, #white do
  133.         gpu.fill(white[i][1],white[i][2],white[i][3],white[i][4]," ")
  134.     end
  135.     gpu.setForeground(colorsLogo.black)
  136.     gpu.setBackground(colorsLogo.background)
  137.     gpu.set(100,49,"for www.computercraft.ru")
  138.     os.sleep(5)
  139. end
  140. logo()
  141. gpu.setBackground(colors.background)
  142. term.clear()
  143. gpu.setResolution(width, height)
  144.  
  145. local pathToWords = "words.txt"
  146. local function loadWords() --Загружаем слова
  147.     local bool = true
  148.     gpu.setBackground(colors.background)
  149.     if fs.exists(pathToWords) then
  150.         local array = {}
  151.         local file = io.open(pathToWords, "r")
  152.         local str = file:read("*a")
  153.         array = serialization.unserialize(str)
  154.         file:close()
  155.         words = array
  156.     else
  157.         if component.isAvailable("internet") then
  158.         os.execute("wget -f http://pastebin.com/raw/rc7qrrHA words.txt -q")
  159.         term.clear()
  160.         gpu.set(18, 12, "Загружен файл со словами!")
  161.         os.sleep(5)
  162.         term.clear()
  163.         loadWords()
  164.         else
  165.             term.clear()
  166.             gpu.set(4,12, "Вставьте Интернет карту или скачайте words.txt вручную.")
  167.             gpu.set(10,13,"По ссылке http://pastebin.com/rc7qrrHA")
  168.             gpu.setBackground(colors.button)
  169.             gpu.setForeground(colors.textButton)
  170.             gpu.set(4,24,"[<<Назад]")
  171.             gpu.setBackground(colors.background)
  172.             gpu.setForeground(colors.text)
  173.             while bool do
  174.                 local e = {event.pull("touch")}
  175.                 if e[4] == 24 then
  176.                     if e[3]>3 and e[3]<14 then
  177.                         play = false
  178.                         noWords = true
  179.                         bool = false   
  180.                     end
  181.                 end
  182.             end
  183.         end
  184.     end
  185. end
  186. --Берем рандомное слово
  187. local function getRandomWord()
  188.     local randomN = math.modf(math.random(1,#words))
  189.     local bool = true
  190.     if haveIteration then
  191.         if tempRandom ~= randomN then --Проверка чтоб небыло 2 подряд
  192.         title = words[randomN].title
  193.         word1 = words[randomN].word
  194.         tempRandom = randomN
  195.         else
  196.             getRandomWord()
  197.         end
  198.     else
  199.         for i=1, #useIndex do
  200.             if useIndex[i] == randomN then
  201.                 bool = false
  202.                 getRandomWord()
  203.             end
  204.         end
  205.        
  206.         if bool then
  207.         table.insert(useIndex, randomN)
  208.         title = words[randomN].title
  209.         word1 = words[randomN].word
  210.         end
  211.  
  212.         if #words <= #useIndex then
  213.             lastWord = true
  214.         end
  215.        
  216.     end
  217. end
  218.  
  219. local pathToRecords = "recordsGtW.txt" --путь к файлу с рекордами
  220. local function saveRecord() --Сохраняем рекорды
  221.     local file = io.open(pathToRecords, "w")
  222.     local array = {["nicknames"] = nicknames, ["records"] = records}
  223.     file:write(serialization.serialize(array))
  224.     file:close()
  225. end
  226. local function saveScore() --сохраняем наши заработанные очки
  227.     for i = 1, #nicknames do
  228.         if name == nicknames[i] then
  229.             if score >= record then
  230.                 records[i] = score
  231.             end
  232.         end
  233.     end
  234.     saveRecord()
  235. end
  236. local function loadRecord()  --Загружаем рекорды
  237.     if fs.exists(pathToRecords) then
  238.         local array = {}
  239.         local file = io.open(pathToRecords, "r")
  240.         local str = file:read("*a")
  241.         array = serialization.unserialize(str)
  242.         file:close()
  243.         nicknames = array.nicknames
  244.         records = array.records
  245.     else --или создаем новые дефолтные пустые таблицы
  246.         fs.makeDirectory(fs.path(pathToRecords))
  247.             nicknames = {}
  248.             records = {}
  249.             saveRecord()
  250.     end
  251. end
  252. local function checkName(name)  --Проверка на наличие имени в базе
  253.     for i =1, #nicknames do
  254.         if name == nicknames[i] then
  255.             record = records[i]
  256.             return false
  257.         end
  258.     end
  259.     return true
  260. end
  261. local function addPlayer()  --Создаем учетку пользователю если его нет в базе
  262.     if checkName(name) then
  263.         table.insert(nicknames, name)
  264.         table.insert(records, record)
  265.         saveRecord()
  266.     end
  267. end
  268. local function getXPosTitle() --Получаем х позицию вопроса
  269.     tempXPosTitle = unicode.len(title)
  270.     tempXPosTitle = width - tempXPosTitle
  271.     xPosTitle = math.modf(tempXPosTitle/2)
  272.     tempXPosTitle = xPosTitle
  273. end
  274.  
  275. local function getXPosCells() --Получаем х позицию ячеек
  276.     tempXPosCells = #word1
  277.     tempXPosCells = tempXPosCells*5 - 1
  278.     tempXPosCells = width - tempXPosCells
  279.     xPosCells = tempXPosCells/2
  280.     tempXPosCells = xPosCells
  281. end
  282.  
  283. getXPosCells()
  284.  
  285. local function paintMenu() --Отрисовываем меню
  286.     gpu.setResolution(width, height)
  287.     gpu.setBackground(colors.background)
  288.     term.clear()
  289.     gpu.setForeground(colors.text)
  290.    
  291.     gpu.set(27, 3, "Угадай-Ка")
  292.     gpu.setForeground(colors.textButton)
  293.     gpu.setBackground(colors.button)
  294.     gpu.set(25, 13, "[Начать игру]")
  295.     gpu.set(25, 15, "[Топ Лидеров]")
  296.     gpu.set(26, 17, "[Настройки]")
  297.     gpu.set(27, 19,"[Правила]")
  298.     gpu.set(28, 21, "[Выход]")
  299.     gpu.setBackground(colors.background)
  300.     gpu.set(2,25,"guess_the_word v0.9                  for www.computercraft.ru")
  301.     gpu.setForeground(colors.text)
  302.    
  303. end
  304.  
  305. local function paintScene() --Отрисовываем игровой экран
  306.     getXPosCells()
  307.     getXPosTitle()
  308.     gpu.setBackground(colors.background)
  309.     term.clear()
  310.     gpu.set(xPosTitle, yPosTitle, title)
  311.     for i=1, #word1 do
  312.         table.insert(cellsXPos, tempXPosCells)
  313.         gpu.setBackground(colors.cell)
  314.         gpu.setForeground(colors.text)
  315.         gpu.set(tempXPosCells, yPosCells, "   ")
  316.         tempXPosCells = tempXPosCells + 5
  317.         gpu.setBackground(colors.background)
  318.     end
  319.  
  320.     for i=1, #keyboard do
  321.         gpu.setBackground(colors.button)
  322.         gpu.set(keyboard[i][1], keyboard[i][2], keyboard[i][4])
  323.         gpu.setBackground(colors.background)
  324.     end
  325.     local tempN = unicode.len(name)
  326.     tempN = width - (tempN + 17)
  327.     gpu.set(tempN,2,name.." :Текущий игрок")
  328.     gpu.set(2,2,"Ваш рекорд: "..record)
  329.     gpu.set(49,3, " :Ваши жизни")
  330.     gpu.setForeground(colors.heard)
  331.     gpu.set(44,3, "❤x"..heard)
  332.     gpu.setForeground(colors.text)
  333.     gpu.set(2,3,"Текущий счет: "..score)
  334.  
  335. end
  336.  
  337. function gameOver()
  338.     local bool = true
  339.     gpu.setBackground(colors.background)
  340.     gpu.setForeground(colors.text)
  341.     term.clear()
  342.     gpu.set(13,11,"Игра окончена!!! " .. name ..", Ваш счет: "..tostring(score))
  343.     score = 0
  344.     play = false
  345.     lastWord = false
  346.     useIndex = {}
  347.     gpu.setBackground(colors.button)
  348.     gpu.setForeground(colors.textButton)
  349.     gpu.set(4,24,"[<<Назад]")
  350.     while bool do
  351.         local e = {event.pull("touch")}
  352.         if e[4] == 24 then
  353.             if e[3]>3 and e[3]<14 then
  354.                 bool = false
  355.                 noWords = false
  356.                 guessTW()
  357.             end
  358.         end
  359.     end
  360. end
  361.  
  362. local function paintRules() --Отрисовываем правила
  363.     local bool = true
  364.     gpu.setBackground(colors.background)
  365.     term.clear()
  366.     gpu.setForeground(colors.text)
  367.     gpu.set(25,7,"Правила игры!")
  368.     gpu.set(4,11,"        Доброго времени суток, уважаемый игрок!")
  369.     gpu.set(4,12,"   Правила <<Угадай-Ки>> очень просты, перед вами будет")
  370.     gpu.set(4,13,"n-количество   ячеек    за   которыми   буквы.   Сверху")
  371.     gpu.set(4,14,"подсказка. Чтоб  выбрать букву  нажмите  ее на экранной")
  372.     gpu.set(4,15,"клавиатуре.  Если  угадаете она  появится  в поле и  на")
  373.     gpu.set(4,16,"ЭК станет зеленной, не угадаете - красной. Есть 4  режима.")
  374.     gpu.set(4,17,"Если не угадали букву - минус жизнь. Каждое угаданное слово")
  375.     gpu.set(4,18,"дает свое количество очков в зависимости от режима игры.")
  376.     gpu.set(4,19,"Каждая  угаданая  подряд буква умножает очки на  кол-во")
  377.     gpu.set(4,20,"угаданых букв подряд. Удачи в игре!!")
  378.     gpu.setBackground(colors.button)
  379.     gpu.setForeground(colors.textButton)
  380.     gpu.set(4,24,"[<<Назад]")
  381.     gpu.setBackground(colors.background)
  382.     gpu.setForeground(colors.text)
  383.     while bool do
  384.         local e = {event.pull("touch")}
  385.         if e[4] == 24 then
  386.             if e[3]>3 and e[3]<14 then
  387.                 bool = false   
  388.                 guessTW()
  389.             end
  390.         end
  391.     end
  392. end
  393.  
  394. local function clearLine(a) --Просто отчиистка линии для сокращения кода
  395.     term.setCursor(1,a)
  396.     term.clearLine()
  397. end
  398.  
  399. local function guessTheWord() --Наш алгоритм для сранения букв и работа с нимм
  400.     local goodLetter = false
  401.     local haveSpace = false
  402.     local key = selectKey
  403.     local letter = key[3]
  404.     local tempScore
  405.     local bool = true
  406.  
  407.     for i = 1, #word1 do
  408.         if word1[i] == letter then
  409.             if word1[i] ~= word2[i] then
  410.                 point = point + 1
  411.                 tempScore = point*count
  412.                 score = score + tempScore
  413.                 gpu.set(16,3, tostring(score))
  414.                 if record>=score then
  415.                     gpu.set(14,2, tostring(record))
  416.                 else
  417.                     record = score
  418.                     gpu.set(14,2, tostring(record))
  419.                 end
  420.                 goodLetter = true
  421.                 gpu.set(25,12,"Верная буква!")
  422.             elseif word1[i] == word2[i] then
  423.                 sameLetter = true
  424.             end
  425.             word2[i] = letter
  426.             gpu.setBackground(colors.cell)
  427.             gpu.setForeground(colors.textButton)
  428.             gpu.set(cellsXPos[i],10, key[4])
  429.             gpu.setForeground(colors.text)
  430.             gpu.setBackground(colors.correctLetter)
  431.             gpu.set(key[1],key[2],key[4])
  432.             gpu.setBackground(colors.background)
  433.             gpu.setForeground(colors.text)
  434.             clearLine(12)
  435.             gpu.set(25,12,"Верная буква!")
  436.         end
  437.         if word2[i] == "_" then
  438.             haveSpace = true
  439.         end
  440.     end
  441.  
  442.     if goodLetter then
  443.         if not haveSpace then
  444.             heard = heard + heardPlus
  445.             gpu.setForeground(colors.heard)
  446.             gpu.set(47,3,"   ")
  447.             gpu.set(47,3, tostring(heard))
  448.             gpu.setForeground(colors.text)
  449.             clearLine(12)
  450.             if heardPlus == 0 then
  451.                 gpu.set(18, 12,"Слово отгадано, продолжим?")
  452.             elseif heardPlus == 2 then
  453.                 gpu.set(7, 12,"Слово отгадано, вы получили две жизни, продолжим?")
  454.             else
  455.                 gpu.set(6, 12,"Слово отгадано, вы получили одну жизнь, продолжим?")
  456.             end
  457.             gpu.setForeground(colors.textButton)
  458.             gpu.setBackground(colors.button)
  459.             if not lastWord then
  460.                 gpu.set(50,24,"[Далее >>]")
  461.             else
  462.                 gpu.setBackground(colors.background)
  463.                 gpu.setForeground(colors.text)
  464.                 clearLine(12)
  465.                 gpu.set(15, 12,"Вы угадали все слова, поздравляю!")
  466.             end
  467.             gpu.setForeground(colors.text)
  468.             while bool do
  469.                 local e = {event.pull("touch")}
  470.                 if not lastWord then
  471.                     if e[4] == 24 then
  472.                         if e[3]>3 and e[3]<21 then
  473.                             play = false
  474.                             bool = false
  475.                             heardScore = heard * count * point
  476.                             score = score + heardScore
  477.                             saveScore()
  478.                             gameOver()
  479.                         elseif e[3]>49 and e[3]<60 then
  480.                             bool = false
  481.                             saveScore()
  482.                             game()
  483.                         end
  484.                     end
  485.                 else
  486.                     if e[4] == 24 then
  487.                         if e[3]>3 and e[3]<21 then
  488.                             play = false
  489.                             bool = false
  490.                             heardScore = heard * count * point
  491.                             score = score + heardScore
  492.                             saveScore()
  493.                             gameOver()
  494.                         end
  495.                     end
  496.                 end
  497.             end
  498.         end
  499.     elseif sameLetter then
  500.         clearLine(12)
  501.         gpu.set(21,12,"Эта буква уже введена")
  502.         sameLetter = false
  503.     else
  504.         point = 0
  505.         clearLine(12)
  506.         gpu.set(24,12,"Неверная буква!")
  507.         gpu.setBackground(colors.incorrectLetter)
  508.         gpu.set(key[1],key[2],key[4])
  509.         gpu.setBackground(colors.background)
  510.         heard = heard - 1
  511.         if heard ~= 0 then
  512.             gpu.setForeground(colors.heard)
  513.             gpu.set(47,3,"   ")
  514.             gpu.set(47,3, tostring(heard))
  515.             gpu.setForeground(colors.text)
  516.         else
  517.             play = false
  518.             gameOver()
  519.         end
  520.     end
  521.    
  522. end
  523.  
  524.  
  525. local function sortTop() --Сортируем Топ игроков
  526.     for i=1, #records do
  527.       for j=1, #records-1 do
  528.         if records[j] < records[j+1] then
  529.           local r = records[j+1]
  530.           local n = nicknames[j+1]
  531.           records[j+1] = records[j]
  532.           nicknames[j+1] = nicknames[j]
  533.           records[j] = r
  534.           nicknames[j] = n
  535.         end
  536.       end
  537.     end
  538.     saveRecord()
  539. end
  540. function printRecords()  --Выводим рекорды на экран
  541.     local bool = true
  542.     sortTop()
  543.     gpu.setBackground(colors.background)
  544.     term.clear()
  545.     local xPosName = 15
  546.     local xPosRecord = 40
  547.     local yPos = 2
  548.     loadRecord()
  549.         gpu.setForeground(colors.text)
  550.         gpu.set(25,2,"Toп Лидеров")
  551.         gpu.setForeground(colors.textButton)
  552.     if #nicknames <= 15 then
  553.     for i = 1, #nicknames do
  554.         yPos= yPos+1
  555.         gpu.set(xPosName, yPos, nicknames[i] )
  556.         gpu.set(xPosRecord, yPos, tostring(records[i]))
  557.     end
  558.     else
  559.         for i = 1, 15 do
  560.         yPos= yPos+1
  561.         gpu.set(xPosName, yPos, nicknames[i] )
  562.         gpu.set(xPosRecord, yPos, tostring(records[i]))
  563.         end
  564.     end
  565.     gpu.setBackground(colors.button)
  566.     gpu.set(4,24,"[<<Назад]")
  567.     gpu.setBackground(colors.background)
  568.     while bool do
  569.         local e = {event.pull("touch")}
  570.         if e[4] == 24 then
  571.             if e[3]>3 and e[3]<14 then
  572.                 bool = false   
  573.                 guessTW()
  574.             end
  575.         end
  576.     end
  577. end
  578.  
  579. function game() --Наша игра
  580.     cellsXPos = {}
  581.     word2 = {'_','_','_','_','_','_','_','_','_'}
  582.     term.clear()
  583.     getRandomWord()
  584.     paintScene()
  585.     gpu.setBackground(colors.button)
  586.     gpu.setForeground(colors.textButton)
  587.     gpu.set(4,24,"[Завершить игру]")
  588.     gpu.setBackground(colors.background)
  589.     gpu.setForeground(colors.text)
  590.     while play do
  591.         local e = {event.pull("touch")}
  592.         for i=1, #keyboard do
  593.             if e[4] == keyboard[i][2] then
  594.                 if e[3] > keyboard[i][1]-1 and e[3] < keyboard[i][1]+3 then
  595.                     selectKey = keyboard[i]
  596.                     guessTheWord()
  597.                 end
  598.             end
  599.         end
  600.         if e[4] == 24 then
  601.             if e[3]>3 and e[3]<21 then
  602.                 play = false
  603.                 bool = false
  604.                 heardScore = heard * count * point
  605.                 score = score + heardScore
  606.                 saveScore()
  607.                 gameOver()
  608.             end
  609.         end
  610.     end
  611. end
  612.  
  613. local function selectComplexity() --Выбор уровня сложности
  614.     local bool = true
  615.     gpu.setBackground(colors.background)
  616.     term.clear()
  617.     gpu.setBackground(colors.button)
  618.     gpu.setForeground(colors.textButton)
  619.     gpu.set(27,7,"[Рандом]")
  620.     gpu.set(27,10,"[Хардкор]")
  621.     gpu.set(27,13,"[Сложная]")
  622.     gpu.set(27,16,"[Средняя]")
  623.     gpu.set(28,19,"[Легко]")
  624.     gpu.set(4,24,"[<<Назад]")
  625.     gpu.setBackground(colors.background)
  626.     gpu.setForeground(colors.text)
  627.     gpu.set(22,5,"Выберите сложность:")
  628.     gpu.set(6,8,"Случайное количество жизней, очков и добавочных жизней!")
  629.     gpu.set(9,11,"Всего 10 жизней на игру и за букву 100 очков!")
  630.     gpu.set(6,14,"2 жизни в начале и за букву 50 очков, за слово жизнь!")
  631.     gpu.set(6,17,"5 жизней в начале и за букву 10 очков, за слово жизнь!")
  632.     gpu.set(6,20,"10 жизней в начале и за букву 2 очка, за слово 2 жизни!")
  633.  
  634.     while bool do
  635.         local e = {event.pull("touch")}
  636.         if e[4] == 7 then
  637.             if e[3]>26 and e[3]<36 then
  638.                 bool = false
  639.                 heard = math.modf(math.random(2,10))
  640.                 heardPlus = math.modf(math.random(0,2))
  641.                 count = math.modf(math.random(2,100))
  642.                 game()
  643.             end
  644.         elseif e[4] == 10 then
  645.             if e[3]>26 and e[3]<36 then
  646.                 bool = false
  647.                 heard = 10
  648.                 heardPlus = 0
  649.                 count = 100
  650.                 game()
  651.             end
  652.         elseif e[4] == 13 then
  653.             if e[3]>26 and e[3]<36 then
  654.                 bool = false
  655.                 heard = 2
  656.                 heardPlus = 1
  657.                 count = 50
  658.                 game()
  659.             end
  660.         elseif e[4] == 16 then
  661.             if e[3]>26 and e[3]<36 then
  662.                 bool = false
  663.                 heard = 5
  664.                 heardPlus = 1
  665.                 count = 10
  666.                 game()
  667.             end
  668.         elseif e[4] == 19 then
  669.             if e[3]>27 and e[3]<35 then
  670.                 bool = false
  671.                 heard = 10
  672.                 heardPlus = 2
  673.                 count = 2
  674.                 game()
  675.             end
  676.         elseif e[4] == 24 then
  677.             if e[3]>3 and e[3]<14 then
  678.                 bool = false
  679.  
  680.                 guessTW()
  681.             end
  682.         end
  683.     end
  684. end
  685.  
  686. function  settingsSelection()
  687.     local bool = true
  688.     gpu.setBackground(colors.background)
  689.     gpu.setForeground(colors.text)
  690.     term.clear()
  691.     gpu.set(27,8,"Настройки")
  692.     gpu.set(26,10,"Режимы игры")
  693.     gpu.set(16,12,"С повторами     Без повторов")
  694.     gpu.setBackground(colors.button)
  695.     gpu.setForeground(colors.textButton)
  696.     if haveIteration then
  697.         gpu.set(28,12,"[X]")
  698.         gpu.set(45,12,"[ ]")
  699.     else
  700.         gpu.set(28,12,"[ ]")
  701.         gpu.set(45,12,"[X]")
  702.     end
  703.     gpu.set(4,24,"[<<Назад]")
  704.  
  705.     while bool do
  706.         local e = {event.pull(1,"touch")}
  707.         if e[4] == 12 then
  708.             if e[3] > 27 and e[3] < 31 then
  709.                 haveIteration = true
  710.                 gpu.set(28,12,"[X]")
  711.                 gpu.set(45,12,"[ ]")
  712.             elseif e[3] > 44 and e[3] < 48 then
  713.                 haveIteration = false
  714.                 gpu.set(28,12,"[ ]")
  715.                 gpu.set(45,12,"[X]")
  716.             end
  717.         elseif e[4] == 24 then
  718.             if e[3]>3 and e[3]<14 then
  719.                 bool = false
  720.                 guessTW()
  721.             end
  722.         end
  723.     end
  724. end
  725.  
  726. function guessTW() -- Запуск нашей игры
  727.     record = 0
  728.     loadRecord()
  729.     loadWords()
  730.     paintMenu()
  731.     while true do
  732.         local e = {event.pull("touch")}
  733.         if e[4] == 13 then
  734.             if e[3]>24 and e[3]<33 then
  735.                 if not noWords then
  736.                     name = e[6]
  737.                     addPlayer(name)
  738.                     for i = 1, #nicknames do
  739.                         if name == nicknames[i] then
  740.                             record = records[i]
  741.                         end
  742.                     end
  743.                     play = true
  744.                     point = 0
  745.                     selectComplexity()
  746.                 end
  747.             end
  748.         elseif e[4] == 15 then
  749.             if e[3]>24 and e[3]<37 then
  750.                 sortTop()
  751.                 printRecords()
  752.             end
  753.         elseif e[4] == 17 then
  754.             if e[3]>25 and e[3]<36 then
  755.                 settingsSelection()
  756.             end
  757.         elseif e[4] == 19 then
  758.             if e[3]>26 and e[3]<36 then
  759.                 paintRules()
  760.             end
  761.         elseif e[4] == 21 then
  762.             if e[3]>27 and e[3]<35 then
  763.                 gpu.setForeground(colors.defText)
  764.                 gpu.setBackground(colors.defBg)
  765.                 gpu.setResolution(xSize,ySize)
  766.                 term.clear()
  767.                 quit = true
  768.                 break
  769.             end
  770.         end
  771.         if quit then break end
  772.     end
  773. end
  774.  
  775. guessTW()
RAW Paste Data