Here is a little minesweeper game that I have made.
Main:
function setup()
supportedOrientations(LANDSCAPE_ANY)
setupGame()
parameter.boolean("flag")
parameter.watch("hiddenSquares")
parameter.watch("numberOfMines")
parameter.action("reset", function() setupGame() end)
end
function draw()
if gameOver == false then
if gameWon == false then
if hiddenSquares == numberOfMines then
gameWon = true
end
for i = 1, 5 do
flood()
end
drawSquares()
fill(0, 0, 0, 255)
drawSquares()
font("ArialRoundedMTBold")
fontSize(100)
text("You Win!", WIDTH/2, HEIGHT/2)
end
else
fill(0, 0, 0, 255)
drawSquares()
font("ArialRoundedMTBold")
fontSize(100)
text("Game Over!", WIDTH/2, HEIGHT/2)
end
end
function drawSquares()
background(0, 0, 0, 255)
for i = 1, rows do
for ii = 1, cols do
pushStyle()
stroke(62, 62, 62, 255)
strokeWidth(2)
squarePos.x = i * squareSize + squareSize / 2
squarePos.y = ii * squareSize + squareSize / 2
spriteMode(CENTER)
if squares[i][ii].revealed == false then
fill(100, 100, 100, 255)
rectMode(CORNER)
spriteMode(CENTER)
sprite("Platformer Art:Crate", i*squareSize-squareSize/2, ii*squareSize-squareSize/2, squareSize, squareSize)
if squares[i][ii].flag == true then
spriteMode(CENTER)
sprite("Small World:Flag",squarePos.x - squareSize, squarePos.y - squareSize, squareSize / 1.32258, squareSize)
end
else
fill(140, 140, 140, 255)
rectMode(CORNER)
pushStyle()
tint(127, 127, 127, 255)
sprite("Platformer Art:Crate", i*squareSize -squareSize/2, ii*squareSize-squareSize/2, squareSize, squareSize)
popStyle()
if squares[i][ii].contents == 1 then
gameOver = true
mineTimer = mineTimer + 1
if mineTimer < 10 then
sprite("Tyrian Remastered:Mine Spiked Huge",squarePos.x - squareSize, squarePos.y - squareSize, squareSize, squareSize)
else
sprite("Tyrian Remastered:Explosion Huge",squarePos.x - squareSize, squarePos.y - squareSize, squareSize, squareSize)
end
else
if squares[i][ii].minesTouching > 0 then
textMode(CENTER)
font("ArialRoundedMTBold")
fontSize(squareSize)
fill(255, 0, 0, 255)
text(squares[i][ii].minesTouching, squarePos.x - squareSize, squarePos.y - squareSize)
end
end
end
popStyle()
end
end
end
function setupGrid()
for x = 1, rows do
squares[x] = {}
for y = 1, cols do
squares[x][y] = Square(0)
end
end
while m < numberOfMines do
mx = math.random(1, rows)
my = math.random(1, cols)
if squares[mx][my].contents == 0 then
squares[mx][my].contents = 1
m = m + 1
end
end
end
function touched(touch)
if gameWon == false and gameOver == false then
if touch.state == ENDED then
squareTouched = vec2(0,0)
if touch.x < squareSize * (rows + 1) then
for i = 1, rows do
if touch.x > i * squareSize - squareSize then
squareTouched.x = squareTouched.x + 1
end
end
end
if touch.y < squareSize * (cols + 1) then
for i = 1, cols do
if touch.y > i * squareSize - squareSize then
squareTouched.y = squareTouched.y + 1
end
end
end
if squareTouched.x == 0 or squareTouched.y == 0 then
else
if flag == false then
if squares[squareTouched.x][squareTouched.y].revealed == false then
if squares[squareTouched.x][squareTouched.y].flag == false then
squares[squareTouched.x][squareTouched.y].revealed = true
hiddenSquares = hiddenSquares - 1
end
end
else
if squares[squareTouched.x][squareTouched.y].flag == false then
squares[squareTouched.x][squareTouched.y].flag = true
else
squares[squareTouched.x][squareTouched.y].flag = false
end
end
end
end
end
end
function checkForAdjacentMines()
for i = 1, rows do
for ii = 1, cols do
if squares[i][ii].contents == 0 then
if i>1 then
if squares[i-1][ii].contents == 1 then --left
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if i>1 and ii>1 then
if squares[i-1][ii-1].contents == 1 then --bottom left
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if ii>1 then
if squares[i][ii-1].contents == 1 then --bottom
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if i<rows and ii>1 then
if squares[i+1][ii-1].contents == 1 then --bottom right
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if i<rows then
if squares[i+1][ii].contents == 1 then --right
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if i<rows and ii<cols then
if squares[i+1][ii+1].contents == 1 then --top right
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if ii<cols then
if squares[i][ii+1].contents == 1 then --top
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
if i>1 and ii<cols then
if squares[i-1][ii+1].contents == 1 then --top left
squares[i][ii].minesTouching = squares[i][ii].minesTouching + 1
end
end
end
end
end
end