Advertisement
Guest User

rps.lua

a guest
Oct 11th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.60 KB | None | 0 0
  1. bground=0x292929
  2. player1Pos={1,1}
  3. player2Pos={1,15}
  4. colorDraw=0xffff00
  5. colorWin=0x00aa00
  6. colorLose=0xff0000
  7.  
  8. lang={
  9.  ru={
  10.   rock=    "[ камень ]",
  11.   scissors="[ножницы ]",
  12.   paper=   "[ бумага ]",
  13.   rock2="камень",
  14.   scissors2="ножницы",
  15.   paper2="бумага",
  16.   win1="выиграл игрок 1: ",
  17.   win2="выиграл игрок 2: ",
  18.   wins="побед: ",
  19.   draw="НИЧЬЯ!!",
  20.  },
  21.  en={
  22.   rock=    "[  rock  ]",
  23.   scissors="[scissors]",
  24.   paper=   "[ paper  ]",
  25.   rock="rock",
  26.   scissors="scissors",
  27.   paper="paper",
  28.   win1="WIN player 1: ",
  29.   win2="WIN player 2: ",
  30.   wins="wins: ",
  31.   draw="DRAW!!",
  32.  }
  33. }
  34. slang="ru"
  35. char={
  36.  f="█", --full
  37.  d="▄", --down
  38.  u="▀", --up
  39. }
  40.  
  41. tex={
  42.  rock={--symbol fore back
  43.   "     ▄▄   ",
  44.   "  ▄█████  ",
  45.   " ▄███████ ",
  46.   " ▀██████▀ ",
  47.   "   ▀▀▀▀   ",
  48.  },
  49.  paper={
  50.   "     ▄    ",
  51.   "   ▄███▄  ",
  52.   " ▄██████▀ ",
  53.   "  ▀███▀   ",
  54.   "    ▀     ",
  55.  },
  56.  scissors={
  57.   " ▄▄    ▄▄ ",
  58.   "  ▀█▄▄█▀  ",
  59.   "  ▄▄██▄▄  ",
  60.   " █  ██  █ ",
  61.   "  ▀▀  ▀▀  ",
  62.  }
  63. }
  64. tcol={
  65.   rock=0x555555,
  66.   paper=0xf9f9f9,
  67.   scissors=0x888888,
  68.   scissors2=0x555500,
  69. }
  70.  
  71. local gpu=require("component").gpu
  72. local event=require("event")
  73. require("term").clear()
  74.  
  75. local gameCount=2
  76. local obj={}
  77. local player={}
  78.  
  79. function testClick(self,x,y)
  80.   return (x>=self.x)and(y>=self.y)and(x<self.x+self.w)and(y<self.y+self.h)
  81. end
  82.  
  83. function offObj()
  84.   return false
  85. end
  86.  
  87. function newButton(x,y,w,h,id,type)
  88.   table.insert(obj,{x=x,y=y,w=w,h=h,isClicked=testClick,id=id,type=type})
  89. end
  90.  
  91. function drawImage(x,y,texture,bground)
  92.   gpu.setForeground(tcol[texture])
  93.   bground=bground or 0x000000
  94.   gpu.setBackground(bground)
  95.   for i=1,5 do
  96.     if (i==3)and(texture=="scissors") then
  97.       gpu.setForeground(tcol["scissors2"])
  98.       gpu.set(x,y+i-1,tex[texture][i])
  99.       gpu.setForeground(tcol["scissors"])
  100.       gpu.set(x+4,y+i-1,"██")
  101.       gpu.setForeground(tcol["scissors2"])
  102.     else
  103.       gpu.set(x,y+i-1,tex[texture][i])
  104.     end
  105.   end
  106.   gpu.setForeground(0xffffff)
  107.   gpu.setBackground(0x000000)
  108. end
  109.  
  110. --drawImage(1,1,"rock");drawImage(11,1,"paper");drawImage(21,1,"scissors")
  111. --os.exit()
  112.  
  113. function drawPlayer(x,y,id)
  114.   newButton(x   ,y+1,10,5,id,1)
  115.   newButton(x+11,y+1,10,5,id,2)
  116.   newButton(x+22,y+1,10,5,id,3)
  117. --  gpu.fill(x,y,10,4," ")
  118.   gpu.set(x,y,player[id].name)
  119.   drawImage(x   ,y+1,"rock")
  120.   drawImage(x+22,y+1,"paper")
  121.   drawImage(x+11,y+1,"scissors")
  122. --  gpu.set(x,y+1,lang[slang]["rock"])
  123. --  gpu.set(x,y+2,lang[slang]["scissors"])
  124. --  gpu.set(x,y+3,lang[slang]["paper"])
  125.   gpu.set(x,y+7,lang[slang]["wins"]..player[id].win)
  126. end
  127.  
  128. gpu.setBackground(0x999999)
  129. gpu.fill(1,1,10,4," ")
  130. gpu.fill(15,1,10,4," ")
  131. newButton(1,1,10,4)
  132. newButton(15,1,10,4)
  133. isRunning=true
  134. tmp=2
  135. while isRunning do
  136.   _,_,x,y,_,name=event.pull("touch")
  137.   for i=1,#obj do
  138.     if obj[i]:isClicked(x,y) then
  139.       player[i]={}
  140.       player[i].name=name
  141.       player[i].bit=-1
  142.       player[i].win=0
  143.       gpu.setBackground(0x009900)
  144.       gpu.fill(obj[i].x,obj[i].y,obj[i].w,obj[i].h," ")
  145.       gpu.set(obj[i].x,obj[i].y,player[i].name)
  146.       obj[i].isClicked=offObj
  147.       tmp=tmp-1
  148.     end
  149.   end
  150.   if tmp==0 then
  151.     isRunning=false
  152.   end
  153. end
  154.  
  155. --gpu.setBackground(bground)
  156. --os.exit()
  157. --for _=1,gameCount do
  158. ms={"rock","scissors","paper"}
  159. while (player[1].win~=2)and(player[2].win~=2) do
  160. gpu.setBackground(bground)
  161. obj={}
  162. require("term").clear()
  163. gpu.setBackground(0x000000)
  164. gpu.fill(1,2,32,5," ")
  165. gpu.fill(1,16,32,5," ")
  166. gpu.setBackground(bground)
  167. drawPlayer(player1Pos[1],player1Pos[2],1)
  168. drawPlayer(player2Pos[1],player2Pos[2],2)
  169.  
  170. isRunning=true
  171.  
  172. tmp=0
  173.  
  174. while isRunning do
  175.   _,_,x,y,_,name=event.pull("touch")
  176.   for i=1,#obj do
  177.     if obj[i]:isClicked(x,y) then
  178. --print(i,obj[i].id)
  179.       if name==player[obj[i].id].name then
  180.         tmp=tmp+1
  181. --        gpu.set(149,49,i.."")
  182. --        pos=(i-1)%3+1
  183.         player[obj[i].id].bit=obj[i].type
  184.         pos=math.floor((i-1)/3)
  185.         if pos==0 then
  186.           gpu.fill(1,2,32,5," ")
  187.         else
  188.           gpu.fill(1,16,32,5," ")
  189.         end
  190.         obj[pos*3+1].isClicked=offObj;obj[pos*3+2].isClicked=offObj;obj[pos*3+3].isClicked=offObj
  191.       end
  192.     end
  193.   end
  194.   if tmp==2 then
  195.     isRunning=false
  196.   end
  197. end
  198. --print(player[1].bit,player[2].bit)
  199. --require("term").clear()
  200. drawPlayer(player1Pos[1],player1Pos[2],1)
  201. drawPlayer(player2Pos[1],player2Pos[2],2)
  202. obj={}
  203. if player[1].bit==player[2].bit then
  204. --  print(lang[slang]["draw"])
  205.   tx=(player[1].bit-1)*11
  206.   drawImage(player1Pos[1]+tx,player1Pos[2]+1,ms[player[1].bit],colorDraw)
  207.   drawImage(player2Pos[1]+tx,player2Pos[2]+1,ms[player[2].bit],colorDraw)
  208. --elseif ((player[1].bit==1)and(player[2].bit==2))or((player[1].bit==2)and(player[1])
  209. elseif (player[1].bit==player[2].bit-1)or(player[1].bit==player[2].bit+2)then
  210. --  print(lang[slang]["win1"]..player[1].name)
  211.   drawImage(player1Pos[1]+(player[1].bit-1)*11,player1Pos[2]+1,ms[player[1].bit],colorWin)
  212.   drawImage(player2Pos[1]+(player[2].bit-1)*11,player2Pos[2]+1,ms[player[2].bit],colorLose)
  213.   player[1].win=player[1].win+1
  214. else
  215. --  print(lang[slang]["win2"]..player[2].name)
  216.   drawImage(player1Pos[1]+(player[1].bit-1)*11,player1Pos[2]+1,ms[player[1].bit],colorLose)
  217.   drawImage(player2Pos[1]+(player[2].bit-1)*11,player2Pos[2]+1,ms[player[2].bit],colorWin)
  218.   player[2].win=player[2].win+1
  219. end
  220. --ms={lang[slang]["rock2"],lang[slang]["scissors2"],lang[slang]["paper2"]}
  221. --print(ms[player[1].bit],ms[player[2].bit])
  222. event.pull("key_down")
  223. end
  224. if player[1].win>player[2].win then
  225.   io.write(lang[slang]["win1"])
  226. else
  227.   io.write(lang[slang]["win2"])
  228. end
  229. io.write(player[1].win.." VS "..player[2].win)
  230. gpu.setBackground(0x000000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement