From 7ae446b661c47b41ed38d7f88b8f54416575e47f Mon Sep 17 00:00:00 2001 From: piernov Date: Wed, 16 Apr 2014 22:59:56 +0200 Subject: Split file + Working Solo mode : Add hints + Disallow multiple identical colors in same line + Correctly randomize answer --- main.lua | 152 ++++----------------------------------------------------------- 1 file changed, 8 insertions(+), 144 deletions(-) (limited to 'main.lua') diff --git a/main.lua b/main.lua index aef7a80..48eb910 100644 --- a/main.lua +++ b/main.lua @@ -1,155 +1,19 @@ require 'love2d-fakecanvas/fakecanvas' -local Window = {} -local colors = { {255, 0, 0, 255}, {255, 128, 0, 255}, {255, 255, 0, 255}, {0, 255, 0, 255}, {128, 128, 128, 255}, {255, 255, 255, 255} } -local Polygons = {} -local Keypressed = {{}} -local Answer = {} -local Hints = {} +Screen = {} -local function checkKeys() - local ansfound = true - local tmpans = {} - for k,v in ipairs(Answer) do table.insert(tmpans, v) end - local goodnum = 0 - for id, num in ipairs(Keypressed[#Keypressed]) do - for j, answer in ipairs(tmpans) do - if num == answer and id == j then - goodnum = 2 - tmpans[j] = -1 - elseif num == answer and goodnum < 1 then - goodnum = 1 - tmpans[j] = -1 - end - end - if goodnum < 2 then ansfound = false end - table.insert(Hints, { Type = "print", Text = goodnum, Position = { x = 0.1 + id*0.05, y = 0.1+#Keypressed*0.05 }, Colors = { 255, 255, 255, 255}}) - goodnum = 0 - end - return ansfound -end +Gamestate = require "hump.gamestate" +Menu = require "Gamestates/Menu" function love.load() - love.graphics.setBackgroundColor(0, 0, 0) - - -- Inner window border - table.insert(Polygons, { Type = "rectangle", DrawMode = "line", LineWidth = 0.005, Position = { x = 0.005, y = 0.005}, Dimension = {width = 0.99, height = 0.99}, Colors = {0, 0, 171, 255} }) - - -- Background - for i = 0, 5 do - table.insert(Polygons, { Type = "polygon", DrawMode = "fill", Position = { x1 = 0.01, y1 = 0.02+0.02*i, x2 = 0.02+0.02*i, y2 = 0.01, x3 = 0.03+0.02*i, y3 = 0.01, x4 = 0.01, y4 = 0.03+0.02*i}, Colors = {0, 0, 171, 255} }) - table.insert(Polygons, { Type = "polygon", DrawMode = "fill", Position = { x1 = 0.99, y1 = 0.98-0.02*i, x2 = 0.98-0.02*i, y2 = 0.99, x3 = 0.97-0.02*i, y3 = 0.99, x4 = 0.99, y4 = 0.97-0.02*i}, Colors = {0, 0, 171, 255} }) - end - - -- Left box - table.insert(Polygons, { Type = "rectangle", DrawMode = "fill", Position = { x = 0.05, y = 0.05}, Dimension = {width = 0.35, height = 0.90}, Colors = {0, 0, 0, 255} }) - table.insert(Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.05, y = 0.05}, Dimension = {width = 0.35, height = 0.90}, Colors = {0, 0, 171, 255} }) - table.insert(Polygons, { Type = "line", Position = { x1 = 0.05, y1 = 0.1, x2 = 0.4, y2 = 0.1}, Colors = {0, 0, 171, 255} }) - - -- Left box buttons - table.insert(Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.075, y = 0.875}, Dimension = {width = 0.125, height = 0.05}, Colors = {0, 0, 171, 255} }) - table.insert(Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.25, y = 0.875}, Dimension = {width = 0.125, height = 0.05}, Colors = {0, 0, 171, 255} }) - - -- Left box content - table.insert(Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.375, y1 = 0.15, x2 = 0.375, y2 = 0.75}, Colors = {0, 0, 171, 255} }) - - -- Right top box - table.insert(Polygons, { Type = "rectangle", LineWidth = 0.005, DrawMode = "line", Position = { x = 0.45, y = 0.05}, Dimension = {width = 0.50, height = 0.75}, Colors = {0, 0, 171, 255} }) - table.insert(Polygons, { Type = "line", Position = { x1 = 0.45, y1 = 0.1, x2 = 0.95, y2 = 0.1}, Colors = {0, 0, 171, 255} }) - - -- Right top box content - table.insert(Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.375-0.005, y1 = 0.75, x2 = 0.52+5*0.075+0.005, y2 = 0.75}, Colors = {0, 0, 171, 255} }) - table.insert(Polygons, { Type = "line", LineWidth = 0.01, Position = { x1 = 0.48, y1 = 0.75, x2 = 0.48, y2 = 0.15}, Colors = {0, 0, 171, 255} }) - - -- Right bottom box - table.insert(Polygons, { Type = "rectangle", LineWidth = 0.005, DrawMode = "fill", Position = { x = 0.45, y = 0.85}, Dimension = {width = 0.50, height = 0.10}, Colors = {0, 0, 0, 255} }) - table.insert(Polygons, { Type = "rectangle", DrawMode = "line", Position = { x = 0.45, y = 0.85}, Dimension = {width = 0.50, height = 0.10}, Colors = {0, 0, 171, 255} }) - - -- Right bottom box buttons - for i = 0, 5 do - table.insert(Polygons, { Type = "rectangle", DrawMode = "fill", Position = { x = 0.50+i*0.075, y = 0.875}, Dimension = {width = 0.04, height = 0.04}, Colors = colors[i+1] }) - table.insert(Polygons, { Type = "rectangle", DrawMode = "line", LineWidth = 0.01, Position = { x = 0.50+i*0.075, y = 0.875}, Dimension = {width = 0.04, height = 0.04}, Colors = {0, 0, 171, 255} }) - table.insert(Polygons, { Type = "line", Position = { x1 = 0.52+i*0.075, y1 = 0.75, x2 = 0.52+i*0.075, y2 = 0.875}, Colors = {0, 0, 171, 255} }) - if i < 5 then - table.insert(Polygons, { Type = "line", Position = { x1 = 0.5+i*0.075+0.04, y1 = 0.895, x2 = 0.52+(i+1)*0.075, y2 = 0.895}, Colors = {0, 0, 171, 255} }) - end - end - - for i = 1, 4 do - local n = love.math.random(1, 6) - table.insert(Answer, n) - end - for k,v in ipairs(Answer) do print(k,v) end -end - -local function drawPolygon(polygon) - if polygon.Colors then - love.graphics.setColor(unpack(polygon.Colors)) - end - - if polygon.LineWidth then - love.graphics.setLineWidth(polygon.LineWidth*(Window.width+Window.height)/2) - end - - if polygon.Type == "rectangle" then - love.graphics.rectangle(polygon.DrawMode, polygon.Position.x*Window.width, polygon.Position.y*Window.height, - polygon.Dimension.width*Window.width, polygon.Dimension.height*Window.height) - - elseif polygon.Type == "polygon" then - love.graphics.polygon(polygon.DrawMode, polygon.Position.x1*Window.width, polygon.Position.y1*Window.height, - polygon.Position.x2*Window.width, polygon.Position.y2*Window.height, - polygon.Position.x3*Window.width, polygon.Position.y3*Window.height, - polygon.Position.x4*Window.width, polygon.Position.y4*Window.height) - - elseif polygon.Type == "line" then - love.graphics.line(polygon.Position.x1*Window.width, polygon.Position.y1*Window.height, - polygon.Position.x2*Window.width, polygon.Position.y2*Window.height) - elseif polygon.Type == "print" then - love.graphics.print(polygon.Text, polygon.Position.x*Window.width, polygon.Position.y*Window.height) - end + Gamestate.registerEvents() + Gamestate.switch(Menu) end -function love.mousepressed(x, y, b) - x = x/Window.width - y = y/Window.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 #Keypressed[#Keypressed] >= 4 then - return - else - table.insert(Keypressed[#Keypressed], i+1) - end - end - end - elseif 0.25 < x and x < 0.375 and #Keypressed < 7 and #Keypressed[#Keypressed] == 4 then - if checkKeys() then - table.insert(Polygons, { Type = "print", Text = "FOUND !", Position = {x = 0.5, y = 0.5}, Colors = {255, 255, 255, 255}}) - else - Keypressed[#Keypressed+1] = {} - end - elseif 0.075 < x and x < 0.200 and #Keypressed[#Keypressed] > 0 then - Keypressed[#Keypressed] = {} - end - end +function love.update(dt) + Screen.width, Screen.height = love.window.getDimensions() end function love.draw() - Window.width, Window.height = love.window.getDimensions() - - for id, polygon in ipairs(Polygons) do - drawPolygon(polygon) - end - - for id, hint in ipairs(Hints) do - drawPolygon(hint) - end - - for line, keys in ipairs(Keypressed) do - for id, num in ipairs(keys) do - 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 = colors[num] }) - love.graphics.print(num, (0.1+(id%5)*0.05)*Window.width, (0.6+((id-(id%5))/5)*0.05)*Window.height) - end - end +-- Gui.core.draw() end -- cgit v1.2.3-54-g00ecf