All games had the same issue: renderer.circle() requires integer arguments, but float calculations produced non-integer coordinates. Fixed in all games using math.floor(x + 0.5) for proper rounding: - pong.lua: Ball position - air_hockey.lua: Puck position - asteroids.lua: Asteroid positions - ball.lua: Ball and trail positions, velocity line - breakout.lua: Ball position - flappy_bird.lua: Bird Y position - counter.lua: Last touch marker position - snake.lua: Food position (center calculation) - tic_tac_toe.lua: O circle center position Also fixed floating-point coordinate calculations in ball and line drawing to ensure all coordinates are integers.
50 lines
1.5 KiB
Lua
50 lines
1.5 KiB
Lua
-- NAME: Touch Counter
|
|
-- DESC: Simple tap counter demo
|
|
|
|
-- Initialize game state
|
|
function init()
|
|
game.vars.count = 0
|
|
game.vars.last_x = 0
|
|
game.vars.last_y = 0
|
|
print("Counter initialized")
|
|
end
|
|
|
|
-- Update game logic based on input
|
|
function update(event)
|
|
-- Check if touch/button pressed
|
|
if event.type == INPUT.TOUCH_DOWN or event.type == INPUT.BUTTON_0 or event.type == INPUT.BUTTON_1 then
|
|
game.vars.count = game.vars.count + 1
|
|
game.vars.last_x = event.x
|
|
game.vars.last_y = event.y
|
|
print("Count: " .. game.vars.count)
|
|
return true -- Request redraw
|
|
end
|
|
|
|
return false -- No redraw needed
|
|
end
|
|
|
|
-- Draw the game
|
|
function draw()
|
|
-- Clear screen
|
|
renderer.clear(true)
|
|
|
|
-- Draw title
|
|
renderer.text(20, 20, "Touch Counter", true)
|
|
|
|
-- Draw count (centered)
|
|
local count_text = "Count: " .. tostring(game.vars.count)
|
|
renderer.text(game.width() / 2 - 40, game.height() / 2 - 10, count_text, true)
|
|
|
|
-- Draw last touch position
|
|
if game.vars.count > 0 then
|
|
local pos_text = "Last: (" .. tostring(game.vars.last_x) .. ", " .. tostring(game.vars.last_y) .. ")"
|
|
renderer.text(20, game.height() - 30, pos_text, true)
|
|
|
|
-- Draw marker at last touch (convert to integers)
|
|
renderer.circle(math.floor(game.vars.last_x + 0.5), math.floor(game.vars.last_y + 0.5), 5, true, false)
|
|
end
|
|
|
|
-- Draw instructions
|
|
renderer.text(20, 50, "Tap screen to increment", true)
|
|
end
|