Sviluppare videogioco con LUA

di il
2 risposte

Sviluppare videogioco con LUA

Buonasera a tutti. Per un esame universitario devo sviluppare un videogioco con Lua, tema ecologia e ambientale. Aveva pensato di fare una sorta di raccolta rifiuti. I rifiuti cadono dall'alto, in basso ci sono tre bidoni (uno plastica uno vetro e uno per umido) e i rifiuti devono cadere nel bidone giusto altrimenti si perde.
Non so come dire al programma che appunto i rifiuti plastici devono cadere nel relativo bidone e così via. Qualcuno sa come si può fare?
I bidoni stanno in basso e si muovono a destra e sinistra e sono di tre colori diversi (ad esempio le lattine devono cadere nel bidone rosso, le bottiglie di plastica in quello verde e le bucce di banana in quello blu). Se qualcuno riuscirebbe a dirmi come si fa mi darebbe un grande aiuto. Grazie in anticipo!

2 Risposte

  • Re: Sviluppare videogioco con LUA

    S15 ha scritto:


    Non so come dire al programma che appunto i rifiuti plastici devono cadere nel relativo bidone e così via. Qualcuno sa come si può fare?
    Prova a postare una parte del codice che hai scritto o un minimo tentativo di abbozzare una risoluzione al tuo problema, giusto per avere un riferimento sul quale ragionare.

    Ciao!
  • Re: Sviluppare videogioco con LUA

    IL CODICE CHE HO SCRITTO FINO AD ORA E' QUESTO
    Ho inserito i bidoni in un unica variabile ma mi sa che dovrò farne tre per ogni bidone.
    I rifiuti cadono dall'alto e devo definire il fatto che le bottiglie di plastica devono cadere sul bidone verde, le lattine su quello rosso e la mela su quello giallo
    Al momento i rifiuti cadono dall'alto e i bidoni si spostano col mouse a destra e sinistra
    Ma non ho idea di come fare per dire che i rifiuti devono cadere nel rispettivo bidone e se si sbaglia c'è il GAME OVER

    Grazie a chi mi aiuterà

    -----------------------------------------------------------------------------------------
    --
    -- main.lua
    --
    -----------------------------------------------------------------------------------------
    -- impostazione fisica
    local physics = require("physics")
    physics.start()
    physics.setDrawMode("hybrid")

    --impostazione sfondo
    local bg = display.newImageRect("img/back.jpg",600,900)
    bg.x=display.contentCenterX
    bg.y=display.contentCenterY

    --impostazione rifiuti che cadono
    local bg2=display.newImageRect("img/apple.gif",112, 87)
    bg2.x=display.contentCenterX
    bg2.y= -200

    local bottle= display.newImageRect("img/bottle.gif",112,94)
    bottle.x = display.contentCenterX+40
    bottle.y = -400

    local lattina = display.newImageRect("img/lattina2.gif",112,83)
    lattina.x = display.contentCenterX+40
    lattina.y = -100

    --impostazione dei bidoni
    local bidoni = display.newImageRect("img/bidoni.jpg",258,103)
    bidoni.x = display.contentCenterX
    bidoni.y = display.contentCenterY+220


    -- Funzione ascoltatore che gestisce l'evento touch per i bidoni
    local function move(event)

    -- memorizzo in "bidoni" l'oggetto sulla quale è richiamato
    -- l'ascoltatore (i.e. i bidoni hanno riconosciuto l'evento touch)
    local bidoni = event.target

    --all'inizio della fase di touch...
    if event.phase=="began" then
    -- calcolo la distanza fra il punto di contatto e il centro dei
    -- bidoni
    bidoni.offsetX = event.x - bidoni.x

    -- setto il focus dell'intero evento sui bidoni che sto toccando
    -- (i.e. tutti i prossimi eventi touch saranno gestiti dall'oggetto
    -- (in bidoni)
    display.currentStage:setFocus(bidoni)
    -- metto in primo piano sullo stage i bidoni da spostare
    bidoni:toFront()

    --durtante lo spostamento dei bidoni...
    elseif event.phase=="moved" then
    --cambio le coordinate della medaglia
    --tenendo conto dell'offset calcolato
    bidoni.x = event.x-bidoni.offsetX

    --quando termina la fase di touch
    elseif event.phase =="ended" or event.phase=="cancelled" then
    --elimino il focus dell'evento sui bidoni che stavo spostando
    --ora i bidoni possono riservare la gestione dell'evento touch
    display.currentStage:setFocus(nil)
    end
    -- il comando return true permette di far gestire l'evento touch da un singolo oggetto. In altre parole l'evento non è propagato af altri oggetti o allo stage.
    return true
    end
    bidoni:addEventListener("touch", move)

    --physics.addBody( ground, "static", { friction=0.5, bounce=0.3 } )
    physics.addBody( bg2,"dynamic", {density=0.6, friction=0.2, bounce=0.3 } )
    physics.addBody( bottle,"dynamic", {density=0.6, friction=0.2, bounce=0.3 } )
    physics.addBody( lattina,"dynamic", {density=0.6, friction=0.2, bounce=0.3 } )
Devi accedere o registrarti per scrivere nel forum
2 risposte