diff --git a/right_coin.lua b/right_coin.lua index 011df69..f01fad6 100644 --- a/right_coin.lua +++ b/right_coin.lua @@ -16,6 +16,105 @@ coinBlue=0 coinRed=0 coinYellow=0 +solids={} +do + local sols={1, 2, 3, 17} + for i,v in pairs(sols) do + solids[v]=true + end +end + +function sol(x,y) return solids[mget(x//8,y//8)] end +g = .3 +j = -4 + +anis={ + idle={257}, + run={273,274}, + jump={289}, + fall={290} +} + +do -- Player + Player = { + spr=0, + ani=anis.idle, + x=8,y=120, + w=8,h=8, + vx=0,vy=0, + isFlipped=false + } + + function Player:direct() + if btn(2) then + self.vx = -2 + self.isFlipped = true + elseif btn(3) then + self.vx = 2 + self.isFlipped = false + else self.vx = 0 + end + if btnp(0) and self.vy == 0 then self.vy = j end + end + + function Player:update() + self:resolve() + self.x = self.x + self.vx + self.y = self.y + self.vy + end + + function Player:resolve() + if sol(self.x + self.vx, self.y + self.h-1) or sol(self.x + self.vx + self.w-1, self.y + self.h-1) then + self.vx = 0 + end + + local roof = self:distanceToRoof() + local floor = self:distanceToFloor() + if self.vy < roof then + self.vy = roof + end + if self.vy >= floor then self.vy = floor + else self.vy = self.vy + g + end + if self.vy < 0 then + self.ani = anis.jump + elseif self.vy > 0 then + self.ani = anis.fall + elseif not (self.vx == 0) then + self.ani = anis.run + else + self.ani = anis.idle + end + end + + function Player:distanceToFloor() + local y = 0 + while (not sol(self.x + self.vx, self.y + y + self.h)) + and (not sol(self.x + self.vx + self.w-1, self.y + y + self.h)) + and (self.y + y < 128) do + y = y + 1 + end + return y + end + + function Player:distanceToRoof() + local y = 0 + while (not sol(self.x + self.vx, self.y + y - 1)) + and (not sol(self.x + self.vx + self.w-1, self.y + y - 1)) + and (self.y + y > 0) do + y = y - 1 + end + return y + end + + function Player:draw() + self.spr=self.ani[(((t)//3)% #self.ani)+1] + local flip + if self.isFlipped then flip = 1 else flip = 0 end + spr(self.spr, self.x, self.y, 1, 1, flip) + end +end + function drawStart() cls(13) print("The Right Coin",80,36) @@ -29,8 +128,10 @@ function drawGameOver() end function drawGame() - cls(0) - spr(84,64,0) + map(0,0,30,17) + p:direct() + p:update() + p:draw() end function drawMarket() @@ -97,6 +198,7 @@ function update(state) end end +p=Player function TIC() update(currentState) draw(currentState) @@ -104,6 +206,10 @@ function TIC() end -- +-- 001:0bbbbbbbbb5b55b5b54544545444444444444444444444c44c44444444444444 +-- 002:bbbbbbbb5b55b55b454454454444444444444444444444c44c44444444444444 +-- 003:bbbbbbb0b55b555b544544554444444544444444444444c44c44444444444444 +-- 017:444444444444c4444c444444444444c444444444444444c444c4444444444444 -- 064:03aaaa3703aaaa3703aa3a3703aaaa3703aaaa3703aaaa3703a3aa3703aaaa37 -- 065:03aaaa3703aa3a3303aaaaaa03aaaaaa03aaaa3a033aaaaa0033333300000000 -- 066:7777777777777777777777777777777777777777777777777777777777777777 @@ -114,6 +220,33 @@ end -- 084:000008880000880000880000008eeeee08ee00008ee666608666006680000000 -- +-- +-- 001:00044000000cc000000cc000006666000606606000c88c000008080000080800 +-- 017:00044000000cc000000cc0000006600000066c00000888000088080000000800 +-- 018:00044000000cc000000cc000006666c000c66000000888800008008000880000 +-- 033:00044000000cc0c0000cc060006666600066c600000888800888008000000080 +-- 034:000440000c0cc0c0060cc0600666666000066600000888000080008008000008 +-- + +-- +-- 001:111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 002:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 003:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 004:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 005:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 006:110000000000000000000000000000000000000000000000000010202011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 007:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 008:110000000000000000000000000000000000000000001020300000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 009:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 010:110000000000000000000000000000000000001030000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 011:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 012:110000000000000000000000102020203000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 013:110000000000000000000000111111111100000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 014:110000001020202020300000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 015:110000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- 016:112020202020202020202020202020202020202020202020202020202011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +-- + -- -- 000:00000000ffffffff00000000ffffffff -- 001:0123456789abcdeffedcba9876543210