slipers

OpenOS. ULRD Games 1.

Oct 30th, 2018
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.84 KB | None | 0 0
  1. local term=require("term")
  2. local event=require("event")
  3. local unicode=require("unicode")
  4. local keyboard=require("keyboard")
  5.  
  6. local gpu=term.gpu()
  7. local keys=keyboard.keys
  8. local Shift,Ctrl,Alt=256,512,1024
  9. local len,sub=unicode.len,unicode.sub
  10.  
  11. local brd1={"┌","─","┐","└","│","┘"}
  12. local brd2={"╔","═","╗","╚","║","╝"}
  13.  
  14. if not term.isAvailable() then
  15.   return
  16. end
  17.  
  18. local runApp=true
  19. local eventKey={}
  20. local posX,posY=1,1
  21. local prvX,prvY=1,1
  22. local wScr,hScr=80,25
  23.  
  24. local colors={white=0xffffff,black=0x000000}
  25. local defCl,invCl={colors.white,colors.black},{colors.black,colors.white}
  26.  
  27. local function setColor(cl)
  28.   gpu.setForeground(cl[1]);gpu.setBackground(cl[2])
  29. end
  30.  
  31. local function resetScreen()
  32.   posX,posY=1,1;gpu.setResolution(wScr,hScr)
  33.   term.clear();term.setCursor(posX,posY);term.setCursorBlink(false)
  34. end
  35.  
  36. eventKey[keys.f10]=function()
  37.   runApp=false
  38. end
  39. eventKey[keys.up]=function()
  40.   if posY>2 then posY=posY-1 else posY=2 end
  41. end
  42. eventKey[keys.down]=function()
  43.   if posY<hScr-1 then posY=posY+1 else posY=hScr-1 end
  44. end
  45. eventKey[keys.left]=function()
  46.   if posX>2 then posX=posX-1 else posX=2 end
  47. end
  48. eventKey[keys.right]=function()
  49.   if posX<wScr-1 then posX=posX+1 else posX=wScr-1 end
  50. end
  51.  
  52. setColor(defCl);resetScreen();gpu.set(posX,posY,"=")
  53.  
  54. for i=1,80 do
  55.   if i<26 then
  56.     gpu.set(1,i,brd1[5])
  57.     gpu.set(80,i,brd1[5])
  58.   end
  59.   gpu.set(i,1,brd1[2])
  60.   gpu.set(i,25,brd1[2])
  61. end
  62. gpu.set(1,1,brd1[1])
  63. gpu.set(1,25,brd1[4])
  64. gpu.set(80,1,brd1[3])
  65. gpu.set(80,25,brd1[6])
  66. gpu.set(58,1," Набрано очков:      ")
  67. gpu.set(3,1," Осталось ходов: 350    ")
  68.  
  69. posX,posY=2,2;
  70. prvX,prvY=2,2;
  71. gpu.set(posX,posY,"=")
  72. term.setCursor(posX,posY)
  73.  
  74. for i=1,50 do
  75.   rndX=math.random(3,77)
  76.   rndY=math.random(2,24)
  77.   rndV=math.random(1,9)
  78.   gpu.set(rndX,rndY," "..tostring(rndV).." ")
  79. end
  80.  
  81. local runGame=true
  82. local steps,points=350,0
  83.  
  84. while runApp do
  85.   local event,address,arg1,arg2,arg3=term.pull()
  86.   if event == 'key_down' then
  87.     local char,code=arg1,arg2
  88.     if keyboard.isControlDown() then code=code+Ctrl end
  89.     if keyboard.isShiftDown() then code=code+Shift end
  90.     if keyboard.isAltDown() then code=code+Alt end
  91.     if eventKey[code] then
  92.       eventKey[code]()
  93.       if runGame then
  94.         gpu.set(prvX,prvY," ")
  95.         prvX,prvY = posX,posY
  96.         if gpu.get(posX,posY)~=" " then
  97.           points=points+tonumber(tostring(gpu.get(posX,posY)))
  98.           gpu.set(58,1," Набрано очков: "..points)
  99.         end
  100.         steps=steps-1;
  101.         gpu.set(3,1," Осталось ходов: "..steps.."    ")
  102.         term.setCursor(posX,posY);gpu.set(posX,posY,"=")
  103.         if steps==0 then
  104.           gpu.set(34,12," ИГРА ОКОНЧЕНА ")
  105.           runGame=false
  106.         end
  107.       end
  108.     end
  109.   end
  110. end
  111.  
  112. setColor(defCl);resetScreen()
Advertisement
Add Comment
Please, Sign In to add comment