-- Mine Sweeper Game -- Author: Github/Kiritow require("kgui") require("libevent") local component=require("component") local gpu=GetGPU() local function generateMap(line,col,all) local t={} for i=0,line+1,1 do t[i]={} end local cnt=0 while(cnt=0) then gpu:set(i,j,tostring(t[i][j])) else gpu:set(i,j,"X") end end end end local function generateBlankMask(line,col,val) local t={} for i=1,line,1 do t[i]={} for j=1,col,1 do t[i][j]=val end end t.line=line t.col=col return t end local function printMap(base,mask) gpu:clear() for i=1,base.col+2,1 do gpu:set(1,i,"-") end for i=1,base.line,1 do gpu:set(i+1,1,"|") for j=1,base.col,1 do if(mask[i][j]>0) then if(base[i][j]>=0) then gpu:set(i+1,j+1,tostring(base[i][j])) else gpu:pushfg(0xFF0000) gpu:set(i+1,j+1,"X") gpu:popfg() end elseif(mask[i][j]<0) then gpu:pushfg(0xFFFF00) gpu:set(i+1,j+1,"?") gpu:popfg() end end gpu:set(i+1,base.col+2,"|") end for i=1,base.col+2,1 do gpu:set(base.line+2,i,"-") end end -- Game local function main() -- printMap(generateMap(10,10,5),generateBlankMask(10,10,true)) local mp=generateMap(10,10,5) local mask=generateBlankMask(10,10,0) printMap(mp,mask) while true do local e=WaitMultipleEvent("touch","interrupted") if(e.event=="interrupted") then break end local line=e.y-1 local col=e.x-1 if(not (line<1 or col<1 or line>mp.line or col>mp.col) ) then if(e.button==0) then if(mp[line][col]<0) then mask=generateBlankMask(mp.line,mp.col,1) printMap(mp,mask) os.sleep(5) return elseif(mask[line][col]==0) then mask[line][col]=1 printMap(mp,mask) end else if(mask[line][col]==0) then mask[line][col]=-1 elseif(mask[line][col]==-1) then mask[line][col]=0 end printMap(mp,mask) end end end end print("Mine Sweeper") print("Author: Github/Kiritow") main()