BobMe

Discord MineSweeper Generator

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