Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

How can I identify a tap?

in Questions Posts: 3

For a little side project I'm working on a small tapper game to test out my programming skills. The only problem is that you can't identify a tap (not a beginning of a tap, or end) so you can just press down and earn points like that. Could anyone help?

Tagged:

Comments

  • dave1707dave1707 Mod
    edited July 23 Posts: 8,505

    @Ezekia To identify a continuous tap, when a tap begins, set a variable to true. When the tap ends, set that variable to false. Then in the draw function, if the variable is true, the tap is still happening.

    Here’s what I think you’re after.

    displayMode(FULLSCREEN)
    
    function setup()
        pressed=false
        fill(255)    
    end
    
    function draw()
        background(0)
        if not pressed then
            text("not pressed",WIDTH/2,HEIGHT/2)
        else
            text("pressing",WIDTH/2,HEIGHT/2)
        end
    end
    
    function touched(t)
        if t.state==BEGAN then
            pressed=true
        end
        if t.state==ENDED then
            pressed=false
        end    
    end
    
  • edited July 24 Posts: 685

    And if you want to score only one point per tap, don't score unless you've seen it go back to false. this may require another variable.

  • Posts: 3

    Okay, I'll give it a shot.

  • edited August 2 Posts: 493

    The touch object has a field called tapCount which might be worth experimenting with to see if that will help you. Other things that are worth considering is to say that a tap occurs if the touch ended within, say, half a second of when it started and didn't move in between starting and ending.

    function touched(t)
      if t.state == BEGAN then
        maybeTap = true
        startTime = ElaspedTime
      end
      if t.state == MOVING then
        maybeTap = false
      end
      if t.state == ENDED then
        if maybeTap and ElapsedTime < startTime + .5 then
          isTap = true
        else
          isTap = false
        end
      end
    end
    

    If you want to handle multiple touches then you'll need to create a table of touches and store a copy of this data in the table for each touch. I do this in my touch handler class, but that might be overkill for your situation. In case it might be of some use, though, you can find it on github at https://github.com/loopspace/Codea-Library-Base/blob/master/Touch.lua

Sign In or Register to comment.