From f161168a29d212cb43efc757756ebc9faa014822 Mon Sep 17 00:00:00 2001 From: Fabien Freling Date: Fri, 19 Apr 2019 17:30:51 +0200 Subject: [PATCH] Add Zetris --- zetris.lua | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 zetris.lua diff --git a/zetris.lua b/zetris.lua new file mode 100644 index 0000000..1b58b9c --- /dev/null +++ b/zetris.lua @@ -0,0 +1,186 @@ +-- title: Zetris +-- author: Pascal Batty +-- desc: First training game +-- script: lua + +blocksize=8 +bgspriteof=-240 + +pieces = { + t={sprite=256, + {x=0, y=0}, + {x=-1, y=0}, + {x=1, y=0}, + {x=0, y=-1} + } +} + +-- GAME STATE +currentPiece = { piece = pieces.t, + position = {x = 11, y = 2}, + rotation = 0 + } + +function rotatedpiece() + points = {} + if currentPiece.rotation == 0 then + return currentPiece.piece + elseif currentPiece.rotation == 1 then + for i=1, 4 do + points[i] = {x=currentPiece.piece[i].x, + y=currentPiece.piece[i].y} + --points[i].x = currentPiece.piece[i].y * -1 + --points[i].y = currentPiece.piece[i].x + points[i].x = currentPiece.piece[i].x + points[i].y = currentPiece.piece[i].y + end + elseif currentPiece.rotation == 2 then + for i=1, 4 do + points[i] = {x=0,y=0} + points[i].x = currentPiece.piece[i].x * -1 + points[i].y = currentPiece.piece[i].y * -1 + end + elseif currentPiece.rotation == 3 then + for i=1, 4 do + points[i] = {x=0,y=0} + points[i].x = currentPiece.piece[i].y + points[i].y = currentPiece.piece[i].x * -1 + end + end + return points +end + + +function piecedropped() + piece = rotatedpiece() + point = currentPiece.position + for i=1, 4 do + x=(point.x + piece[i].x) + y=(point.y + piece[i].y) + if mget(x, y+1) ~= 0 then + return true + end + end + return false +end + +function canmove(point) + piece = rotatedpiece() + for i=1, 4 do + x=(point.x + piece[i].x) + y=(point.y + piece[i].y) + if mget(x, y) ~= 0 then + return false + end + end + return true +end + +function droppiece() + piece = rotatedpiece() + point = currentPiece.position + sprite = piece.sprite + bgspriteof + for i=1, 4 do + x=(point.x + piece[i].x) + y=(point.y + piece[i].y) + mset(x, y, 16) + end +end + +function resetcurrent() +currentPiece = { piece = pieces.t, + position = {x = 11, y = 2}, + rotation = 0 } +end + +function drawpiece() + piece = rotatedpiece() + origin = currentPiece.position + for i = 1, 4 do + point = { x = (piece[i].x + origin.x) * blocksize, + y = (piece[i].y + origin.y) * blocksize} + + spr(piece.sprite, point.x, point.y) + end +end + +function TIC() + map(0,0,30,17) + local newPosition = {x = currentPiece.position.x, + y = currentPiece.position.y} + if btnp(2) then + newPosition.x = newPosition.x - 1 + elseif btnp(3) then + newPosition.x = newPosition.x + 1 + elseif btnp(1) then + newPosition.y = newPosition.y + 1 + elseif btnp(4) then + r = currentPiece.rotation + currentPiece.rotation = (r+1)%4 + end + + if canmove(newPosition) then + currentPiece.position = newPosition + elseif piecedropped() then + droppiece() + resetcurrent() + end + + drawpiece() +end + +-- +-- 001:0ffffff0ffffffffffffffffffffffffffffffffffffffffffffffff0ffffff0 +-- 016:1111111190000001901111019019910190199101901111019000000199999999 +-- 017:66666666e0000006e0666606e06ee606e06ee606e0666606e0000006eeeeeeee +-- 018:bbbbbbbb3000000b30bbbb0b30b33b0b30b33b0b30bbbb0b3000000b33333333 +-- 019:22222222a0000002a0222202a02aa202a02aa202a0222202a0000002aaaaaaaa +-- 020:44444444c0000004c0444404c04cc404c04cc404c0444404c0000004cccccccc +-- 021:dddddddd5000000d50dddd0d50d55d0d50d55d0d50dddd0d5000000d55555555 +-- 022:8888888870000008708888087087780870877808708888087000000877777777 +-- + +-- +-- 000:1111111190000001901111019019910190199101901111019000000199999999 +-- 001:66666666e0000006e0666606e06ee606e06ee606e0666606e0000006eeeeeeee +-- 002:bbbbbbbb3000000b30bbbb0b30b33b0b30b33b0b30bbbb0b3000000b33333333 +-- 003:22222222a0000002a0222202a02aa202a02aa202a0222202a0000002aaaaaaaa +-- 004:44444444c0000004c0444404c04cc404c04cc404c0444404c0000004cccccccc +-- 005:dddddddd5000000d50dddd0d50d55d0d50d55d0d50dddd0d5000000d55555555 +-- 006:8888888870000008708888087087780870877808708888087000000877777777 +-- + +-- +-- 000:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 001:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 002:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 003:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 004:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 005:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 006:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 007:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 008:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 009:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 010:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 011:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 012:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 013:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 014:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 015:000000000000100000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 016:000000000000101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- + +-- +-- 000:00000000ffffffff00000000ffffffff +-- 001:0123456789abcdeffedcba9876543210 +-- 002:0123456789abcdef0123456789abcdef +-- + +-- +-- 000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000304000000000 +-- + +-- +-- 000:140c1ceaea30555dd64c794cc6810834a1a5d04648a5249dca71ced2ae2c3030956daa2c7555286dd6e2ba2418d6dad2 +-- +