Jump to content

[TOPIC: topicViewTemplate]
[GLOBAL: userSmallPhoto]
Photo

Aiuto app tipo ant smasher
Started by okko.sr Mar 26 2016 01:01 AM

18 replies to this topic
tapp
[TOPIC CONTROLS]
This topic has been archived. This means that you cannot reply to this topic.
[/TOPIC CONTROLS]
[modOptionsDropdown]
[/modOptionsDropdown]
[reputationFilter]
[TOPIC: post.html]
#1

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

 Ciao mi servirebbe aiuto ho fatto questa app dove spawnano delle palline e mi servirebbe sapere come fare a mettere che quando una di queste bolle viene toccata si elimina e aggiunge un punto

 

questo e il codice

 

local W = contentWidth
local H = contentHeight
local score = 0
local scoreIncrease = 1
local scoreNum = display.newText("0",460,5,"Arial",15)
-- Your code here
 local bolle = display.newGroup()
 local perso
 
 scoreNum:toFront()
 
 imm = {
  "moon.png",
  "baz.png",
  "tod.png"
}
 
 function Generassi (event)
 
 indice = math.random(1,3)
 pos_y = math.random(0,768)
 vel = math.random(2000,6000)
 ball = display.newImage (imm[indice], 1024, pos_y)
 bolle:insert(  ball )
 transition.moveTo(ball, {time = vel , x= 0, y = pos_y})
end
 
 t1 = timer.performWithDelay( 100, Generassi, - 1)
 
 
 function update (event)
  if ( bolle.numChildren ~= 0  ) then
  for i = 1, bolle.numChildren do
  if ( bolle[i] ~= nil) then
  if (bolle[i].x < 1) then
     print(i)
     bolle[i]:removeSelf ()
     bolle[i] = nil
  end
 end
 end
end
end
Runtime:addEventListener("enterFrame", update)
 


[TOPIC: post.html]
#2

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao,

 

per fare quello che chiedi devi aggiungere un event listener di tipo "touch" ad ogni oggetto/immagine che crei, in questo modo quando tocchi l'oggetto la funzione event handler potrà gestirlo rimuovendolo e aggiornando il contatore.

Questo è il codice che ho aggiornato.

 

Ale

 

 
display.setStatusBar( display.HiddenStatusBar )

local W = contentWidth
local H = contentHeight
local score = 0
local scoreIncrease = 1
local scoreNum = display.newText("0",400,25,"Arial",35)
-- Your code here
local bolle = display.newGroup()
local perso
 
scoreNum:toFront()
 
imm = {
  "moon.png",
  "baz.png",
  "tod.png"
}
 
local function onTouch( event )
    local t = event.target
    local phase = event.phase

    if "began" == phase then
        print( "Touched!" )
        score = score + 1
        scoreNum.text = score
        t:removeEventListener( "touch", onTouch )
        t:removeSelf ()
    end
    
    return true
end

function Generassi (event)
 
     indice = math.random(1,3)
     pos_y = math.random(0,768)
     vel = math.random(2000,6000)
     --ball = display.newImage (imm[indice], 1024, pos_y)
     ball = display.newCircle(1024, pos_y, 30)
     ball:addEventListener( "touch", onTouch )
     bolle:insert(  ball )
     transition.moveTo(ball, {time = vel , x= 0, y = pos_y})
end
 
 t1 = timer.performWithDelay( 100, Generassi, - 1)
 
 
 function update (event)
  if ( bolle.numChildren ~= 0  ) then
  for i = 1, bolle.numChildren do
  if ( bolle[i] ~= nil) then
  if (bolle[i].x < 1) then
     --print(i)
     bolle[i]:removeSelf ()
     bolle[i] = nil
  end
 end
 end
end
end
Runtime:addEventListener("enterFrame", update)
 
 
 
 
 
 
 


[TOPIC: post.html]
#3

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

Ciao ale ho fatto in un altro modo grazie comunque Ho un xperia e4 mi servirebbe sapere come fare a disattivare i tasti home back e task quando sonora schermo come in questo caso

[TOPIC: post.html]
#4

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao,

 

non conosco xperia. Ma ho paura che non si possa fare.

 

Ale



[TOPIC: post.html]
#5

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

nono ho trovato bastava fare native.setProperty ( "androidSystemUiVisibility", "immersiveSticky")



[TOPIC: post.html]
#6

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

ma sai come si fa a salvare i migliori punteggi



[TOPIC: post.html]
#7

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao,

 

ah si , con le native properties, Android lo conosco lo stretto necessario :)

 

Per salvare i punteggi e recuperarli usa la preference library di Satheesh,

 

https://code.coronalabs.com/code/preference-library-save-data-files-tables-numbers-strings-and-boolean

 

è facile da usare e fa quello che deve fare.

 

Ale



[TOPIC: post.html]
#8

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

L Avevo già visto ma non avevo capito come usarlo e come fare in modo che il valore sia in display
E che salvi solo il Best score

[TOPIC: post.html]
#9

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao

 

esempio preference:

local preference = require "preference"
local myScore

--Salva punteggio
preference.save{score=myScore}

--Leggi punteggio
myScore = preference.getValue("myScore")

ovviamente devi aggiungere il tuo codice per gestire il valore, min, max, ecc.

 

Ale



[TOPIC: post.html]
#10

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

io ho messo cos^ ma non parte

 

if ( score > scorebest) then
              preference.save(scorebest == score)
              scorebest = preference.getValue("scorebest")
              local scorebestNum = display.newText(sceneGroup,scorebest,480,27,"EASansCurves-Regular",50)
            end
 
mi da degli errori nel file preference.lua alla riga 333


[TOPIC: post.html]
#11

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

scorebest non  può essere chiave e variabile allo stesso tempo, inoltre devi usare = e non ==

local score, scorebest
 
if ( score > scorebest) then
     preference.save{theBestScore = score}
end
 
--poi quando devi rileggere
 
scorebest = preference.getValue("theBestScore")
 
 

Inoltre, attenzione alle parentesi,  {} e () hanno comportamenti diversi

 

Ciao,

Ale



[TOPIC: post.html]
#12

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

Ok ma mi dava errore sull = comunque ok
Se io metto che scorebest 0 verrà inizializzato come zero ma solo quando non hai mai giocato è zero quindi come fare in modo che venga inizializzato come l ultimo score migliore anche chiudendo l applicazione

[TOPIC: post.html]
#13

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

ma poi come faccio a metterlo graficamente dopo che lo legge comunque a me serve che si veda e mi da che thebestscore è nil quindi non parte se lo metto come stringa da visualizzare! aiuto ;)



[TOPIC: post.html]
#14

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Allora, qui si tratta di logica di programmazione non c'entrano più Corona SDK e LUA!

 

Comunque, se non ho capito male, lo pseudo codice potrebbe essere questo:

 

Inizio il gioco, ->  bestscore = 0 , score = 0

 

Leggo bestscore dalle preferences.

 

ATTENZIONE!

Devi prima verificare che non sia nullo quindi:

if (preference.getValue("theBestScore") ~= nil) then
            bestscore = preference.getValue("theBestScore")
end

 

Gioco e faccio dei punti, per ogni punto ->  score = score + 1

Finisce la sessione di gioco, salvo il punteggio solo se score > bestscore

 

if (score > bestscore) then
    preference.save{ theBestScore = score}
end

 

Chiudo l'app.

Rilancio l'app e preference.getValue leggerà l'ultimo valore salvato

 

Per stamparlo graficamente nella label che avrai creato con display.newText basterà cambiare il testo:

scorebestNum.text = bestscore

 

Ciao,

 

Ale



[TOPIC: post.html]
#15

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

Ale ho quasi risolto con un tutorial di corona che mi faceva creare un modulo
Che aveva funzioni come score.save() e vabbe comunque grazie

[TOPIC: post.html]
#16

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ok meglio così!

 

L'importante è che funzioni :)

 

Ciao

Ale



[TOPIC: post.html]
#17

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

Ale mi puoi aiutare grazie scusa il disturbo 

ho questo codice che indica che quando lo tocco deve scomparire e a volte mi da errore

attempt to call method removeSelf quindi mi piacerebbe saper come toglierlo grazie se sai anche metodi alternativi per fare questo ok


function balla (self,event)
    if (event.phase == "began") then
      

      

        timer.performWithDelay(1, function() self:removeSelf() end )
 score = score + 1
    scoreNum.text = score*scoreIncrease
        

    end

end


[TOPIC: post.html]
#18

ale

[GLOBAL: userInfoPane.html]
ale
  • Contributor

  • 174 posts
  • Corona SDK

Ciao,

 

dovrei vedere il resto del codice per dare indicazioni più precise.

Se non è necessario attendere 1 secondo prima di rimuovere puoi togliere timer.performWithDelay.

Inoltre se function balla() è un event handler e mi sembra di si, non vedo la necessità di passare due parametri (self, event).

Infine, ogni oggetto rimosso con removeSelf() deve essere posto a nil perchè la garbage collection lo rimuova definitivamente dalla memoria.

Potrebbe essere espressa meglio in questo modo (se è un event handler), ma è solo una mia ipotesi non potendo vedere il resto del codice.

 

 
function balla (event)
      local t = event.target
 
     if (event.phase == "began") then
           t:removeSelf()
           t = nil
           score = score + 1
           scoreNum.text = score*scoreIncrease
    end
 
end
 

 

 

 

Ciao

Ale



[TOPIC: post.html]
#19

okko.sr

[GLOBAL: userInfoPane.html]
okko.sr
  • Observer

  • 16 posts
  • Corona SDK

Ale sto usando texturepacker sei capace ad usarlo tu ?

avrei bissogno di un consiglio




[topic_controls]
[/topic_controls]