From 061f6f516489b6bff5cf96087e5c273f9ccd0032 Mon Sep 17 00:00:00 2001 From: Ishaan Bhardwaj Date: Thu, 14 Jan 2021 16:28:18 -0500 Subject: [PATCH] Square mode update --- funcs.lua | 11 +++++- load/graphics.lua | 5 +++ res/img/squareg.png | Bin 0 -> 708 bytes res/img/squares.png | Bin 0 -> 639 bytes tetris/components/grid.lua | 78 ++++++++++++++++++++++++++++++++++++- 5 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 res/img/squareg.png create mode 100644 res/img/squares.png diff --git a/funcs.lua b/funcs.lua index cd1bed1..77a8284 100644 --- a/funcs.lua +++ b/funcs.lua @@ -66,4 +66,13 @@ end function Mod1(n, m) -- returns a number congruent to n modulo m in the range [1;m] (as opposed to [0;m-1]) return ((n-1) % m) + 1 -end \ No newline at end of file +end + +function table.contains(table, element) + for _, value in pairs(table) do + if value == element then + return true + end + end + return false + end \ No newline at end of file diff --git a/load/graphics.lua b/load/graphics.lua index b527e0d..73fd409 100644 --- a/load/graphics.lua +++ b/load/graphics.lua @@ -61,6 +61,11 @@ blocks = { F = love.graphics.newImage("res/img/gem9.png"), A = love.graphics.newImage("res/img/gem9.png"), X = love.graphics.newImage("res/img/gem9.png"), + }, + ["square"] = { + F = love.graphics.newImage("res/img/squares.png"), + Y = love.graphics.newImage("res/img/squareg.png"), + X = love.graphics.newImage("res/img/squares.png"), } } diff --git a/res/img/squareg.png b/res/img/squareg.png new file mode 100644 index 0000000000000000000000000000000000000000..e1fae093da5505dfd414ed0381b391ce3638cc6f GIT binary patch literal 708 zcmV;#0z3VQP)jG_ zVu)uvKh<5;Roz|PJr~s!Y)e(&J@=ebO60D|B9Yz39?BWh#} z9UtBJisidAem>SHk?)0Zfcg?T1L}~z{+sR4BTQK?FPKiYAQ>tXJ~)EyIOEYzhT|sz zCE>2%uNn1g#;zeRKEar`SRdFc6pN)pDVXiUUIC$lrzdd#5xif367#LlSb}~_XOoUtnDxc@?245f-WKSP?ia>UPm%B}fcH?D1dIyS8hit)I{QqFy+-T6Feru~ zJE^5flbwNnNIpbRR1jh2zah$=e<`)Q!o}Mt)+^bW72^vbnK#KHSFqAaRa`F`9aSoG z{)Koyr|&$@D_)!mZ!S`V@nHmHc{1<+RiYoO4fyE6=H;idH!ZpP$8+*rae5}Z%SQ+7 z8Xi~4V3$txBg;}kQBBvy6t2FJdVS7=hbvBgO9mYr!2VwBJi8u5HPM48eL6{XzFvc= zK`nm$SdM>j+7WRwOk2b(GhkpToD$%=hjyG5U0000%4*K4R4W8{WzG~D230AmnB zK$@m#>P8BY0;x)|yjgL1$j~fAa zJH0_w*DA7e{kMi6J(N*W=l|nM= zYzNmlI5#uoxu$C5T|MufMFP=>VGt<<9NaJ$cOBZUh3%~Xa_y`WW<001PuobOrkN4P zX%zHY*RxJ-5Mz|@+GzA$FXzNFO4#rB@q=zuQSSZq&#P#r)0CDkasi={WF!Es5hm(o z_aYJ)7NYW+4zCAsn%74lW`khdrv%2Hj44Y!ZJ*+zT;O~@OTriwCUW(4C7|reKrw+V zNRmXnA~4NV#+dkie#iaydjVikQ5GnQ;uAon{~0t!_QDV(`ld5bk3SzHhl1HwiNekD zMkrH)44KwQ@ 4 or age_table[self.grid_age[y+j][x+k]] > 4 then + is_square = false + end + if not table.contains(colour_table, self.grid[y+j][x+k].colour) then + table.insert(colour_table, self.grid[y+j][x+k].colour) + end + end + end + if is_square then + if i == 1 and #colour_table == 1 then + for j = 0, 3 do + for k = 0, 3 do + self.grid[y+j][x+k].colour = "Y" + self.grid[y+j][x+k].skin = "square" + end + end + square_count = square_count + 2 + elseif i == 2 then + for j = 0, 3 do + for k = 0, 3 do + self.grid[y+j][x+k].colour = "F" + self.grid[y+j][x+k].skin = "square" + end + + end + square_count = square_count + 1 + end + end + end + end + end + return square_count +end + +-- square scan +function Grid:scanForSquares() + local table = {} + for row = 1, self.height do + local silver = 0 + local gold = 0 + for col = 1, self.width do + local colour = self.grid[row][col].colour + if self.grid[row][col].skin == "square" then + if colour == "Y" then gold = gold + 1 + else silver = silver + 1 end + end + end + table[row] = gold * 2.5 + silver * 1.25 + end + return table +end + function Grid:update() for y = 1, self.height do for x = 1, self.width do