aboutsummaryrefslogtreecommitdiffstats
path: root/Gamestates/Solo.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Gamestates/Solo.lua')
-rw-r--r--Gamestates/Solo.lua106
1 files changed, 106 insertions, 0 deletions
diff --git a/Gamestates/Solo.lua b/Gamestates/Solo.lua
new file mode 100644
index 0000000..8d50ad6
--- /dev/null
+++ b/Gamestates/Solo.lua
@@ -0,0 +1,106 @@
+local GUI = { InGame = require("GUI/InGame")}
+
+local Solo = {}
+
+Solo.Keypressed = {{}}
+Solo.Answer = {}
+Solo.Hints = {}
+
+
+function Solo:checkKeys()
+ local found = true
+ Solo.Hints[#Solo.Hints+1] = {}
+
+ for id, num in ipairs(Solo.Keypressed[#Solo.Keypressed]) do
+ if num == Solo.Answer[id] then -- Right
+ table.insert(Solo.Hints[#Solo.Hints], { Type = "rectangle", LineWidth = 0.0025, DrawMode = "fill",
+ Position = { x = 0.795+((#Solo.Hints[#Solo.Hints]-1)%2)*0.0325, y = 0.12+math.floor(#Solo.Hints[#Solo.Hints]/2)*0.0325+(#Solo.Keypressed-1)*0.075},
+ Dimension = {width = 0.0225, height = 0.025}, Colors = {0, 0, 171, 255} })
+ else -- Misplaced or Wrong
+ found = false
+
+ for k,v in ipairs(Solo.Answer) do
+ if num == v then -- Misplaced
+ table.insert(Solo.Hints[#Solo.Hints], { Type = "rectangle", LineWidth = 0.0025, DrawMode = "fill",
+ Position = { x = 0.795+((#Solo.Hints[#Solo.Hints]-1)%2)*0.0325, y = 0.12+math.floor(#Solo.Hints[#Solo.Hints]/2)*0.0325+(#Solo.Keypressed-1)*0.075},
+ Dimension = {width = 0.0225, height = 0.025}, Colors = {171, 171, 171, 255} })
+ end
+ end
+ end
+ end
+
+ return found
+end
+
+function Solo:init()
+ GUI.InGame.loadInterface()
+ tmpanswer = { 1, 2, 3, 4, 5, 6 }
+
+ if not love.getVersion then -- Check if LÖVE is older than 0.9.1, getVersion() introduced in version 0.9.1
+ love.math.random() -- Throw first value since it's not random in LÖVE 0.9.0
+ end
+
+ while #Solo.Answer < 4 do
+ local n = love.math.random(#tmpanswer)
+ table.insert(Solo.Answer, tmpanswer[n])
+ table.remove(tmpanswer, n) -- table.insert(GUI.InGame.Polygons, { Type = "print", Text = n, Position = {x = 0.1+i*0.01, y = 0.5}, Colors = {255, 255, 255, 255}})
+ end
+
+ -- Debug
+ for k,v in ipairs(Solo.Answer) do
+ print(k,v)
+ table.insert(GUI.InGame.Polygons, { Type = "print", Text = v, Position = {x = 0.1+k*0.01, y = 0.5}, Colors = {255, 255, 255, 255}})
+ end
+end
+
+function Solo:draw()
+ for id, polygon in ipairs(GUI.InGame.Polygons) do
+ GUI.InGame.drawPolygon(polygon)
+ end
+
+ for num, line in ipairs(Solo.Hints) do
+ for k, poly in ipairs(line) do
+ GUI.InGame.drawPolygon(poly)
+ end
+ end
+
+ for line, keys in ipairs(Solo.Keypressed) do
+ for id, num in ipairs(keys) do
+ GUI.InGame.drawPolygon({ Type = "rectangle", DrawMode = "fill", Position = { x = 0.50+(id-1)*0.075, y = 0.15+(line-1)*0.075-0.025}, Dimension = {width = 0.04, height = 0.04}, Colors = GUI.InGame.Colors[num] })
+ end
+ end
+end
+
+function Solo:mousepressed(x, y, b)
+ x = x/Screen.width
+ y = y/Screen.height
+ if 0.875 < y and y < 0.915 then
+ if x > 0.45 then
+ for i = 0,5 do
+ if 0.50+i*0.075 < x and x < 0.50+i*0.075+0.04 then
+ if #Solo.Keypressed > 7 or #Solo.Keypressed[#Solo.Keypressed] >= 4 then
+ return
+ else
+ for k,v in pairs(Solo.Keypressed[#Solo.Keypressed]) do
+ if v == i+1 then
+ return -- Disallow multiple identical colors in same line
+ end
+ end
+
+ table.insert(Solo.Keypressed[#Solo.Keypressed], i+1)
+ end
+ end
+ end
+ elseif 0.25 < x and x < 0.375 and #Solo.Keypressed <= 7 and #Solo.Keypressed[#Solo.Keypressed] == 4 then
+ if Solo.checkKeys() then
+ table.insert(GUI.InGame.Polygons, { Type = "print", Text = "FOUND !", Position = {x = 0.5, y = 0.5}, Colors = {255, 255, 255, 255}})
+ else
+ Solo.Keypressed[#Solo.Keypressed+1] = {}
+ end
+ elseif #Solo.Keypressed <= 7 and 0.075 < x and x < 0.200 and #Solo.Keypressed[#Solo.Keypressed] > 0 then
+ Solo.Keypressed[#Solo.Keypressed] = {}
+ end
+ end
+end
+
+return Solo