2026-02-10 13:39:32 +01:00
|
|
|
--[[pod_format="raw",created="2026-02-10 12:09:44",modified="2026-02-10 12:27:08",revision=2]]
|
2024-09-23 13:34:10 +02:00
|
|
|
player = {
|
2024-10-08 14:02:03 +02:00
|
|
|
origin = {
|
|
|
|
|
x= nil,
|
|
|
|
|
y = nil
|
|
|
|
|
},
|
|
|
|
|
dir = nil
|
2024-09-23 13:34:10 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
col_bg = 1
|
|
|
|
|
col_ground = 6
|
|
|
|
|
|
|
|
|
|
function _init()
|
|
|
|
|
for i=0,31 do
|
|
|
|
|
for j=0,31 do
|
|
|
|
|
if mget(i,j) == 5 then -- player id
|
2024-10-08 14:02:03 +02:00
|
|
|
player.origin.x = i + 0.5
|
|
|
|
|
player.origin.y = j + 0.5
|
|
|
|
|
player.dir = math.pi / 2
|
2024-09-23 13:34:10 +02:00
|
|
|
break
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if (player.x) break
|
|
|
|
|
end
|
2024-10-08 14:02:03 +02:00
|
|
|
print("player: ("..player.origin.x..", "..player.origin.y..")")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function cast_ray(origin, angle)
|
2026-02-10 13:39:32 +01:00
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function draw_minimap()
|
|
|
|
|
local tile_size = 4
|
|
|
|
|
map(0, 0, 20, 20, 31, 31, 0x0000, tile_size, tile_size)
|
2026-02-10 13:48:32 +01:00
|
|
|
circfill(20 + (player.origin.x * tile_size), 20 + (player.origin.y * tile_size), 2, 5)
|
2024-09-23 13:34:10 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function _draw()
|
|
|
|
|
cls(col_bg)
|
|
|
|
|
rectfill(0, 135, 480, 270, col_ground)
|
2024-10-08 14:02:03 +02:00
|
|
|
local fov = 120 -- horizontal
|
|
|
|
|
local angle_step=(fov / 480) / 360 * math.pi
|
|
|
|
|
for x=0,480-1 do
|
|
|
|
|
local angle = (player.dir-(fov/2) + x * angle_step) % (2 * math.pi)
|
|
|
|
|
local bloc, dist = cast_ray(player.origin, angle)
|
|
|
|
|
end
|
2026-02-10 13:39:32 +01:00
|
|
|
draw_minimap()
|
2024-09-23 13:34:10 +02:00
|
|
|
end
|
2026-02-10 13:48:32 +01:00
|
|
|
|
|
|
|
|
function _update()
|
|
|
|
|
if (btn(0)) player.origin.x -= 2
|
|
|
|
|
if (btn(1)) player.origin.x += 2
|
|
|
|
|
if (btn(2)) player.origin.y -= 2
|
|
|
|
|
if (btn(3)) player.origin.y += 2
|
|
|
|
|
end
|