нлллл┬┬┬╛╙╙╙╛┬┬┬╛ллл╛люл╛люл╛люлллЛН┬┬лН╙╙юН┬╗юНл╛юлю╛ююю╛ююю╛ююнлллл┬┬┬╛╙╙╙╛┬┬┬╛ллл╛ллл╛люл╛люлллЛН┬┬лН╙╙юН┬╗юНл╛юлл╛ююю╛ююю╛юю╛ллл╛╙╙╙╛╙╛╙╛╙йл╛╙╙╙▄┬┬┬люлнллнл╛л╙╙юЛ╛╙юН╙╙юН╙╙юН┬┬лНюЛНллНН╛ллл╛╙╙╙╛╙╛╙╛╙йл╛╙╙╙▄┬┬┬люлнллнл╛л╙╙юЛ╛╙юН╙╙юН╙╙юН┬┬лНюЛНллННUUP╙╙UUUUUUP≥≥░╩╩ ≥≥≥≥ ≥≥░DD@╓JD╙╙DD╙╙D@╓JDD >6=ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллЭЪоЭЪоЭЪоЪЪлЪоЭоЭлЪоЭЪЪллЭЪоЭЪлллЪЪоЪЪЭоЭЭЪоЭЪоЪлоллллллллллллллллллллллллллллЭЪоЭЪлЭЪлЪЪлЪЪоЪлллЪолллллллллллллллллллллЭоЭлЪлЪолЭоЭоЭЭЪЭЭоЭЭоллллЪлЪлоллЪллЭоЭЪЭлЪлЪолЪлоллллллллллллллллллллллллллллЪолЪлоЪлоЪлоЪллЪллЭоЪлллллллллллллллллллллЭоЭлЪлЭЪлЭоЭоЭЭЪЪЭолЭЪолллЪлЪлоллЪЪлЭоЭЪЪлЪлЭЪлЪЪоллллллллллллллллллллллллллллЭЪлЪллЪлоЪлоЪЪллллЭЪЭлллллллллллллллллллллЭоЭлЪллЪоЭоЭЪЪЭоЪЭоЭЭоллллЪлЪлоллЪллЭоЭоЪлЪллЪоЪлолллллллллллллллллллллллллллллЪоЪлоЪлоЪЪлЪллЪллЭоЭлллллллллллллллллллллЭЪоЭЪоЪЪлЭоЭоЭЭоЭлЪоЭЪЪлллЪлЭЪлллЪллЪЪЭоЭЭЪоЪЪлЪлоллллллллллллллллллллллллллллЪЪлЭЪлЭЪлЪлоЪЪоЪлллЪоллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл юллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл юллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл юллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл юллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл юллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл юлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллDDллDDлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллL╓ ≥I╓JдлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллDDл■≥╧╩D╙╙DллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллL╓Jд╧╩⌡≥D╙╙Dлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл≥≥╙D≥≥≥≥I╓Jдлллллллллллллллллллллллллллллллллллллллллллллллллллллллffffffffffffffffffffffffffffffffffffffffffffffffffff√╩╩╘DD≥IЫ`DDffffffffffffffffffffffffffffffffffffffffffffffffffffffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU≥≥≥I╓JТЪUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffffffffffffffffffffffi≥≥D╙╙D`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffD╙╙Dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff@╓J`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffDDfffffffffffffffffffffffffffffffffffffffffffffffffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffffffffffffff≥≥ffПfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff√╩╩ `ffffffffffffffffffffffffffffffffffffffffffffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU≥≥≥≥ПЪUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ≥≥░ПPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffПЪffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffП`fffffffffffffffffffffffffffffffffffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUПUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUППPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUUUUUUUUUUUUUUffffffffffffffffffffffffffПffffffffffffffffffffffffffffffffffffffffffffffffffЪП`fffffffffffffffffffffffffffffffffffffffffffffffПЪffffffffffffffffffffffffffffffffffffffffffffПЪ`fffffffffffffffffffffffffffffffffffffffffЪПffffffffffffffffffffffffffffffffffffffЪП`fffffffffffffffffffffffffffffffffffПЪffffffffffffffffffffffffffffffffПЪ`fffffffffffffffffffffffffffffЪПffffffffffffffffffffffffffЪП`fffffffffffffffffffffffПЪfffffffffffffffffffffЪЪЪ`fffffffffffffffff`fffffffffffffffffffffffffff`fffffffffffffff`ffffUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUU╙╙╙╙╙╙╙╙╙╙UUPUU╙╙╙╙╙╙╙╙╙╙UUPUU╙╙╙╙╙╙╙╙╙╙UUPUU╙╙╙╙╙╙╙╙╙╙UUPUU╙╙╙╙╙╙╙╙╙╙UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPUUUUUUUUUUUUUUPUUUUUUUUUUUUUUPUUUUUUUUUUUUUUPUUUUUUUUUUUUUUPUU╤-- title: 4-Lane Racer: Finish Line & Music -- author: Daniil -- desc: Finish line logic, progress bar, and music -- script: lua local pos = 0 local speed = 0 local player_x = 0 local score = 0 local game_over = false local win = false -- п²п╟я│я┌я─п╬п╧п╨п╦ я┌я─п╟я│я│я▀ local ROAD_H = 150 local ROAD_W_BASE = 200 local BORDER = 850 local FINISH_POS = 60000 -- п■п╦я│я┌п╟п╫я├п╦я▐ п╢п╬ я└п╦п╫п╦я┬п╟ -- п║п©я─п╟п╧я┌я▀ (п╫п╟я─п╦я│я┐п╧ п╡ F2!) local SPR_PLAYER = 65 local SPR_TRAFFIC = 66 local SPR_COIN = 67 local objects = {} function spawn_object(z_offset) -- п²п╣ я│п©п╟п╡п╫п╦п╪ п╬п╠я┼п╣п╨я┌я▀ я│п╩п╦я┬п╨п╬п╪ п╠п╩п╦п╥п╨п╬ п╨ я└п╦п╫п╦я┬я┐ if pos + z_offset > FINISH_POS - 2000 then return end local obj_type = math.random() > 0.4 and 1 or 2 local lane = math.random(1, 4) local obj_x_virt = -1000 + (lane - 0.5) * (2000/4) table.insert(objects, {type = obj_type, x = obj_x_virt, z = pos + z_offset}) end -- п²п╟я┤п╟п╩я▄п╫я▀п╧ я│п©п╟п╡п╫ for i = 1, 15 do spawn_object(i * 1200) end -- п≈п╟п©я┐я│п╨ п╪я┐п╥я▀п╨п╦ п©я─п╦ я│я┌п╟я─я┌п╣ (я┌я─п╣п╨ 0) music(0) function TIC() -- п╜п╨я─п╟п╫ п©п╬я─п╟п╤п╣п╫п╦я▐ п╦п╩п╦ п©п╬п╠п╣п╢я▀ if game_over or win then cls(0) local msg = win and "YOU FINISHED!" or "CRASHED!" local col = win and 11 or 2 print(msg, 90, 50, col, true) print("SCORE: " .. score, 95, 65, 15, true) print("PRESS Z TO RESTART", 70, 80, 6, true) if btnp(4) then reset_game() end return end -- 1. пёп©я─п╟п╡п╩п╣п╫п╦п╣ if btn(0) then speed = speed + 1.2 end if btn(1) then speed = speed - 3 end if speed > 0 then if btn(2) then player_x = player_x - (110 + speed * 0.3) end if btn(3) then player_x = player_x + (110 + speed * 0.3) end end if player_x < -BORDER then player_x = -BORDER end if player_x > BORDER then player_x = BORDER end speed = speed * 0.985 if speed < 0.5 then speed = 0 end if speed > 180 then speed = 180 end pos = pos + speed -- п÷п═п·п▓п∙п═п п░ п╓п≤п²п≤п╗п░ if pos >= FINISH_POS then win = true speed = 0 sfx(1) -- п≈п╡я┐п╨ п©п╬п╠п╣п╢я▀ end -- 2. п⌡п╬пЁп╦п╨п╟ п╬п╠я┼п╣п╨я┌п╬п╡ for i = #objects, 1, -1 do local obj = objects[i] local dz = obj.z - pos if dz < 60 and dz > -60 then local dx = math.abs(obj.x - player_x) if dx < 220 then if obj.type == 1 then game_over = true elseif obj.type == 2 then score = score + 50 table.remove(objects, i) spawn_object(15000) sfx(0) -- п≈п╡я┐п╨ п╪п╬п╫п╣я┌п╨п╦ end end end if dz < -400 then table.remove(objects, i) spawn_object(15000) end end -- 3. п·я┌я─п╦я│п╬п╡п╨п╟ я┌я─п╟я│я│я▀ rect(0, 0, 240, 68, 12) -- п²п╣п╠п╬ for y = 68, 135 do local scale = (y - 67) / 68 local z = 100 / scale local map_z = z + pos local center_x = 120 + (-player_x * (ROAD_W_BASE / 1000)) * scale local road_w = ROAD_W_BASE * scale local is_dark = (map_z // 150) % 2 == 0 rect(0, y, 240, 1, is_dark and 5 or 6) -- п╒я─п╟п╡п╟ -- п·я┌я─п╦я│п╬п╡п╨п╟ п╓п≤п²п≤п╗п²п·п≥ п╖п∙п═п╒п╚ (я┬п╟я┘п╪п╟я┌п╨п╟) if map_z >= FINISH_POS and map_z <= FINISH_POS + 400 then local check_size = 20 * scale for i = -2, 2 do local cx = center_x + (i * check_size * 2) rect(cx, y, check_size, 1, (y % 4 < 2) and 15 or 0) end else -- п·п╠я▀я┤п╫я▀п╧ п╟я│я└п╟п╩я▄я┌ line(center_x - road_w, y, center_x + road_w, y, 0) -- п═п╟п╥п╪п╣я┌п╨п╟ if (map_z // 100) % 2 == 0 then for l = 1, 3 do local lx = center_x - road_w + (road_w * 2 / 4) * l line(lx, y, lx + 2*scale, y, 15) end end end end -- 4. п·я┌я─п╦я│п╬п╡п╨п╟ я│п©я─п╟п╧я┌п╬п╡ table.sort(objects, function(a, b) return a.z > b.z end) for _, obj in ipairs(objects) do local dz = obj.z - pos if dz > 50 and dz < 12000 then local screen_y = 68 + (ROAD_H * 100 / dz) local scale_3d = (screen_y - 67) / 68 local screen_x = 120 + ((-player_x + obj.x) * (ROAD_W_BASE / 1000)) * scale_3d local spr_scale = math.max(1, math.floor(scale_3d * 6)) local offset = (8 * spr_scale) / 2 if screen_y > 68 and screen_y < 136 then local id = (obj.type == 1) and SPR_TRAFFIC or SPR_COIN spr(id, screen_x - offset, screen_y - 8*spr_scale, 0, spr_scale) end end end -- 5. п≤пЁя─п╬п╨ local player_screen_x = 120 + (player_x * (ROAD_W_BASE / 1000)) spr(SPR_PLAYER, player_screen_x - 20, 136 - 40, 0, 5) -- 6. п≤п╫я┌п╣я─я└п╣п╧я│ (п÷я─п╬пЁя─п╣я│я│-п╠п╟я─) print("DISTANCE TO FINISH", 5, 5, 15, false, 1) rect(5, 12, 104, 6, 0) -- п═п╟п╪п╨п╟ local progress = math.min(pos / FINISH_POS, 1) rect(7, 14, progress * 100, 2, 11) -- п÷п╬п╩п╬я│п╟ п©я─п╬пЁя─п╣я│я│п╟ print("SCORE: " .. score, 160, 5, 15) end function reset_game() game_over = false win = false pos, speed, player_x, score = 0, 0, 0, 0 objects = {} for i = 1, 15 do spawn_object(i * 1000) end end