User Tools

Site Tools


love:interacting_with_boundaries

Interacting with boundaries

Wrap around

main.lua
--[[-------------------------------------
- Interacting with screen boundaries.
- Mithat Konar
-------------------------------------]]--
 
--------------------
-- LÖVE functions --
--------------------
a
--[[ Create game globals and initial conditions. ]]--
function love.load()
    -- circle's constants
    CIRCLE_SIZE = 30
    CIRCLE_H_SPEED = 100
 
    -- circle's variables
    circleX = CIRCLE_SIZE   -- put circle in upper left of screen
    circleY = CIRCLE_SIZE   -- put circle in upper left of screen
end
 
--[[ Update values of game parameters. ]]--
function love.update(dt)
    -- wrap around
    circleX = circleX + CIRCLE_H_SPEED * dt
    -- if cicle is at or beyone the right edge, move it back to the left edge
    if circleX > (love.graphics.getWidth() + CIRCLE_SIZE) then
        circleX = -CIRCLE_SIZE
    end
end
 
--[[ Render the game elements. ]]--
function love.draw()
    love.graphics.circle("fill", circleX, circleY, CIRCLE_SIZE)
end

"Clip"

main.lua
--[[-------------------------------------
- Interacting with screen boundaries.
- Mithat Konar
-------------------------------------]]--
 
--------------------
-- LÖVE functions --
--------------------
 
--[[ Create game globals and initial conditions. ]]--
function love.load()
    -- circle's constants
    CIRCLE_SIZE = 30
    CIRCLE_H_SPEED = 100
 
    -- circle's variables
    circleX = CIRCLE_SIZE   -- put circle in upper left of screen
    circleY = CIRCLE_SIZE   -- put circle in upper left of screen
    isMoveRight = true      -- whether the circle is moving right or left (only needed for bounce)
end
 
--[[ Update values of game parameters. ]]--
function love.update(dt)
    -- "clip" the motion
    circleX = circleX + CIRCLE_H_SPEED * dt
    if circleX > (love.graphics.getWidth() - CIRCLE_SIZE) then
        circleX = love.graphics.getWidth() - CIRCLE_SIZE
    end
 
end
 
--[[ Render the game elements. ]]--
function love.draw()
    love.graphics.circle("fill", circleX, circleY, CIRCLE_SIZE)
end

Bounce

main.lua
--[[-------------------------------------
- Interacting with screen boundaries.
- Mithat Konar
-------------------------------------]]--
 
-----------------------
-- Utility functions --
-----------------------
 
--[[ Convert a boolean value to a string representation. ]]--
function booleanToStr(bool)
    if bool then
        return "true"
    else
        return "false"
    end
end
 
--------------------
-- LÖVE functions --
--------------------
 
--[[ Create game globals and initial conditions. ]]--
function love.load()
    -- circle's constants
    CIRCLE_SIZE = 30
    CIRCLE_H_SPEED = 100
 
    -- circle's variables
    circleX = CIRCLE_SIZE   -- put circle in upper left of screen
    circleY = CIRCLE_SIZE   -- put circle in upper left of screen
    isMoveRight = true      -- whether the circle is moving right or left (only needed for bounce)
end
 
--[[ Update values of game parameters. ]]--
function love.update(dt)
--    -- bounce
--    -- four possible cases:
--    --  moving right, not reached the edge  -> keep moving right
--    --  moving right, reached the edge      -> move left
--    --  moving left, not reached the edge   -> keep moving left
--    --  moving left, reached the edge       -> move right
 
    -- bounce improved
    if isMoveRight then
        isMoveRight = circleX < (love.graphics.getWidth() - CIRCLE_SIZE)
    else
        isMoveRight = not (circleX > CIRCLE_SIZE)
    end
 
    if isMoveRight then
        circleX = circleX + CIRCLE_H_SPEED * dt
    else
        circleX = circleX - CIRCLE_H_SPEED * dt
    end
end
 
--[[ Render the game elements. ]]--
function love.draw()
    love.graphics.print('isMoveRight: ' .. booleanToStr(isMoveRight), 5,love.graphics.getHeight() - 24)
    love.graphics.circle("fill", circleX, circleY, CIRCLE_SIZE)
end
love/interacting_with_boundaries.txt · Last modified: 2021/10/05 02:53 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki