Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[ Démineur [v 1.0]
- Remplacez Pseudo par votre nom à la ligne 10 pour pouvoir jouer.
- dimX, et dimY aux lignes 12 et 13 représentent les dimensions du terrain. changez les valeurs pour personnaliser le jeu.
- De même, modifiez la valeur de nbM à la ligne 14 pour choisir le nombre de mines sur le terrain.
- ]]--
- player = "Pseudo"
- dimX = 15
- dimY = 15
- nbM = 30
- --------------------------------------
- -- Évitez de toucher à ce qui suit --
- --------------------------------------
- carte = {}
- restant = dimX*dimY-nbM
- function placeBombes()
- local i = 1
- repeat
- x, y = math.random(1, dimX), math.random(1, dimY)
- if not carte[x][y]["mine"] then
- carte[x][y]["mine"] = true
- i = i+1
- end
- until i == nbM
- end
- function prepCarte()
- for x = 0, dimX+1 do
- carte[x] = {}
- for y = 0, dimY+1 do
- if (x==0) or (y==0) or (x==dimX+1) or (y==dimY+1) then
- carte[x][y] = { ["mine"]=false, ["hiden"]=false }
- else
- carte[x][y] = { ["mine"]=false, ["hiden"]=true }
- end
- end
- end
- end
- function contenu ()
- for x=1, dimX do
- for y=1, dimY do
- local n = 0
- if carte[x][y]["mine"] == true then
- carte[x][y]["contenu"] = '¤'
- else
- for i=x-1, x+1 do
- for j=y-1, y+1 do
- if carte[i][j]["mine"] == true then
- n = n+1
- end
- end
- end
- carte[x][y]["contenu"] = n
- end
- end
- end
- end
- function affiche()
- local difX, difY, id = (800-15*dimX)/2, (400-15*dimY)/2, 0
- ui.addTextArea(0, "", player, difX+15, difY+15, 15*dimX, 15*dimY, 1, 1, 0.7, true)
- for y=1, dimY do
- difY, id = difY+15, id+dimY
- for x=1, dimX do
- difX, id = difX+15, id+1
- ui.addTextArea(dimY*x+y, "<a href='event:"..x.." "..y.."'>■</a>", player, difX, difY, 15, 15, 0, 0, 0, true)
- end
- difX = (800-15*dimX)/2
- end
- end
- function eventTextAreaCallback (id, name, call)
- local M = {}
- for k in string.gmatch(call, "[^%s]+") do
- table.insert(M, tonumber(k))
- end
- if carte[M[1]][M[2]]["mine"] == true then
- perdu()
- else
- affCase (M[1], M[2])
- end
- end
- function perdu ()
- for x=1, dimX do
- for y=1, dimY do
- if carte[x][y]["mine"]==true then
- ui.updateTextArea(x*dimY+y, carte[x][y]["contenu"], player)
- end
- end
- end
- local difX, difY = (800-15*dimX)/2, (400-15*dimY)/2
- ui.addTextArea(-1, "<font size='20'>Vous avez perdu :(</font>", player, difX+15, difY-15, 15*dimX, 30, 1, 1, 0.7, true)
- end
- function victoire()
- local difX, difY = (800-15*dimX)/2, (400-15*dimY)/2
- ui.addTextArea(-1, "<font size='20'>Vous avez gagné :)</font>", player, difX+15, difY-15, 15*dimX, 30, 1, 1, 0.7, true)
- end
- function affCase (i, j)
- ui.updateTextArea(i*dimY+j, carte[i][j]["contenu"], player)
- carte[i][j]["hiden"] = false
- restant = restant-1
- if restant == 0 then
- victoire()
- elseif (carte[i][j]["contenu"] == 0) then
- for k=-1, 1 do
- for l=-1, 1 do
- if carte[i+k][j+l]["hiden"] then
- affCase(i+k, j+l)
- end
- end
- end
- end
- end
- prepCarte()
- placeBombes()
- contenu()
- affiche()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement