Advertisement
BobMe

Discord MineSweeper Generator

Sep 16th, 2020 (edited)
1,392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.96 KB | None | 0 0
  1. local numbers = {":zero:",":one:",":two:",":three:",":four:",":five:",":six:",":seven:","eight:",":nine:"}
  2. local x = 10
  3. local y = 10
  4. local mines = 13
  5. local am = 0
  6. local seed = 4
  7. local notusedvalue = 0
  8. local countup = 0
  9. local offset = 3
  10. local str = ""
  11. for i=1,seed do
  12.     notusedvalue = math.random(1,3)
  13. end
  14. -- we want to generate the field (and maybe insert mines?)
  15. local field = {}
  16. for i=1,x do
  17.     table.insert(field,{})
  18.     for ii=1,y do
  19.         countup = countup + 1
  20.         local tab = field[i]
  21.         local ran = math.random(1,x*y)
  22.         if ran <= mines + offset and am ~= mines then
  23.             table.insert(tab,":bomb:")
  24.             am = am + 1
  25.         elseif ran > mines + offset and am ~= mines then
  26.             local amount = x*y
  27.             local current = countup
  28.             local minesleft = mines-am
  29.           --print(i,ii,current,amount,minesleft)
  30.             if minesleft+current == amount then
  31.                 table.insert(tab,":bomb:")
  32.                 am = am + 1
  33.             else
  34.                 table.insert(tab,"")
  35.             end
  36.         else
  37.             table.insert(tab,"")
  38.         end
  39.     end
  40. end
  41.  
  42.  
  43. function getCord(x,y)
  44.     local tab = field[x]
  45.     return tab[y]
  46. end
  47.  
  48. function addNumber(x,y)
  49.     local tab = field[x]
  50.     number = tab[y]
  51.     if number == "" then
  52.         tab[y] = ":one:"
  53.     elseif number == ":one:" then
  54.         tab[y] = ":two:"
  55.     elseif number == ":two:" then
  56.         tab[y] = ":three:"
  57.     elseif number == ":three:" then
  58.         tab[y] = ":four:"
  59.     elseif number == "four" then
  60.         tab[y] = ":five:"
  61.     elseif number == ":five:" then
  62.         tab[y] = ":six:"
  63.     elseif number == ":six:" then
  64.         tab[y] = ":seven:"
  65.     elseif number == ":seven:" then
  66.         tab[y] = ":eight:"
  67.     elseif number == ":eight:" then
  68.         tab[y] = ":nine:"
  69.     end
  70. end
  71.  
  72. for i,v in pairs(field) do
  73.     for ii,vv in pairs(v) do
  74.         local xx = i
  75.         local yy = ii
  76.         if vv == ":bomb:" then
  77.             if xx-1 > 0 then
  78.                 if yy+1 <= y then
  79.                     addNumber(xx-1,yy+1)
  80.                 end
  81.                 if yy-1 > 0 then
  82.                     addNumber(xx-1,yy-1)
  83.                 end
  84.                 addNumber(xx-1,yy)
  85.             end
  86.             if xx+1 <= x then
  87.                 if yy+1 <= y then
  88.                     addNumber(xx+1,yy+1)
  89.                 end
  90.                 if yy-1 > 0 then
  91.                     addNumber(xx+1,yy-1)
  92.                 end
  93.                 addNumber(xx+1,yy)
  94.             end
  95.             if yy+1 <= y then
  96.                 addNumber(xx,yy+1)
  97.             end
  98.             if yy-1 > 0 then
  99.                 addNumber(xx,yy-1)
  100.             end
  101.         end
  102.     end
  103. end
  104.  
  105. for i,v in pairs(field) do
  106.     if i ~= 1 then str = str.."\n" end
  107.     for ii,vv in pairs(v) do
  108.         if vv == "" then
  109.             str = str.."||:zero:|| "
  110.         else
  111.             str = str.."||"..vv.."|| "
  112.         end
  113.     end
  114. end
  115. print(str)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement