Skip to content

Instantly share code, notes, and snippets.

@igrir
Created August 25, 2020 04:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igrir/54b6e2146b61d7e3341ff043a9bd5644 to your computer and use it in GitHub Desktop.
Save igrir/54b6e2146b61d7e3341ff043a9bd5644 to your computer and use it in GitHub Desktop.
require "Assemblr"
chairSize = {}
chairSize.x = 2
chairSize.y = 2
metadata = {}
chairs = {}
gameWidth = 5
gameHeight = 7
function OnTap(objectName)
--@:beginGenerated:OnTap:
--@:endGenerated:OnTap:
if (objectName != "a") then
--Scene.destroy(objectName)
row = metadata[objectName].y
col = metadata[objectName].x
traversedArr = {}
DFS(row,col,traversedArr)
local traversed = ""
local it = 0
for i = 1,#traversedArr do
--Scene.destroy(traversedArr[i])
Destroy(traversedArr[i], it)
traversed = traversed..traversedArr[i]
chairs[row][col] = ni
it = it+1
end
print(traversed)
end
end
function Destroy(objectName, it)
wait(0.01 * it)
Scene.destroy(objectName)
end
function containsValue(val, array)
for i = 1,#array do
if (array[i] == val) then
return true
end
end
return false
end
function DFS(i, j, traversedList, matchedList)
if(i < 1 or i > gameHeight or j < 1 or j > gameWidth) then
return
end
local currentChair = chairs[i][j]
if(containsValue(currentChair.Id, traversedList)) then
return
end
print(i)
local traversed = ""
for i = 1,#traversedList do
traversed = traversed..traversedList[i]..","
end
print(traversed)
table.insert(traversedList, currentChair.Id)
TraverseChair(i-1, j, currentChair, traversedList)
TraverseChair(i+1, j, currentChair, traversedList)
TraverseChair(i, j-1, currentChair, traversedList)
TraverseChair(i, j+1, currentChair, traversedList)
end
function TraverseChair(i, j, currentChair, traversedList)
if(i < 1 or i > gameHeight or j < 1 or j > gameWidth) then
return
end
if(chairs[i][j] != nil) then
if(chairs[i][j].type == currentChair.type) then
DFS(i,j, traversedList)
end
end
end
function Start()
a = Scene.findObject("a")
b = Scene.findObject("b")
for i = 1,gameHeight do
chairs[i] = {}
for j = 1,gameWidth do
myObj = "object-"..i.."-"..j
newObj = {}
local type = "a"
if (math.random() > 0.5) then
newObj = a.duplicate(myObj)
type = "a"
else
newObj = b.duplicate(myObj)
type = "b"
end
newObj.setPosition(-j*chairSize.x,15-i*chairSize.y,0)
metadata[myObj] = {}
metadata[myObj].x = j
metadata[myObj].y = i
chairs[i][j] = newObj
chairs[i][j].type = type
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment