User Tools

Site Tools


love:interacting_with_boundaries

This is an old revision of the document!


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
-------------------------------------]]--
 
-----------------------
-- Utility functions --
-----------------------
 
--[[ Convert a boolean value to a string representation. ]]--
function booleanToStr(bool)
    if bool then
        return "true"
    end
    return "false"
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)
--    -- wrap around
--    circleX = circleX + CIRCLE_SPEED * dt
--    if circleX > (love.graphics.getWidth() + CIRCLE_SIZE) then
--        circleX = -CIRCLE_SIZE
--    end
 
--    -- "clip" the motion
--    circleX = circleX + CIRCLE_SPEED * dt
--    if circleX > (love.graphics.getWidth() - CIRCLE_SIZE) then
--        circleX = love.graphics.getWidth() - CIRCLE_SIZE
--    end
 
--    -- 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
--    if isMoveRight and circleX < (love.graphics.getWidth() - CIRCLE_SIZE) then      -- moving right, not reached the edgee
--        isMoveRight = true
--    elseif isMoveRight and circleX >= (love.graphics.getWidth() - CIRCLE_SIZE) then  -- moving right, reached the edge
--        isMoveRight = false
--    elseif not isMoveRight and circleX > (CIRCLE_SIZE) then                         -- moving left, not reached the edgee
--        isMoveRight = false
--    elseif not isMoveRight and circleX <= (CIRCLE_SIZE) then                         -- moving right, reached the edge
--        isMoveRight = true
--    end
 
    -- bounce improved
    if isMoveRight then
        if circleX < (love.graphics.getWidth() - CIRCLE_SIZE) then  -- moving right, not reached the edgee
            isMoveRight = true
        else                                                        -- moving right, reached the edge
            isMoveRight = false
        end
    else
        if circleX > (CIRCLE_SIZE) then                             -- moving left, not reached the edgee
            isMoveRight = false
        else                                                        -- moving right, reached the edge
            isMoveRight = true
        end
    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

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.1633402321.txt.gz · Last modified: 2021/10/05 02:52 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki