javanh.h
javanh.h

Reputation: 3

How do I make the event triggered by a key only happen once?

Disclaimer: I'm really new at this and I apologize in advance if: 1) my question has already been asked (I've tried searching and had a lot of trouble finding what I needed) or 2) if I'm not asking the question correctly.

Basically, I'm trying to make a game where pressing the spacebar triggers a sort of "super-power" that will perform a set of actions just once. Afterwards, if they try to press it again, it'll run up some sort of dialogue box that says their one-time super-power has already been used.

What I have:

       try { 

            Key move = canvas.getLastKey();
            int space = 0;

            if(move == Key.SPACE) {
                if (space == 0) {
                    space = 1;
                }
                if (space == 2){
                    JOptionPane.showMessageDialog(null, "superpower already used");
                }
            }



            if( space == 1 ) {
                //action here

                canvas.resetKey(); 
                space = 2; 
            }
       }

Right now, the super-hero action is on an endless loop but if I reset the key here:

            if(move == Key.SPACE) {
                if (space == 0) {
                    space = 1;
                    canvas.resetKey();
                }

the user can just use the super-power over and over again. Any help would be appreciated!

Upvotes: 0

Views: 120

Answers (2)

Pranav Agarwal
Pranav Agarwal

Reputation: 11

You should consider moving int space = 0, outside of the try block. I suppose your try block gets invoked repeatedly, so you should declare this variable under a global scope.

Upvotes: 0

Zelig
Zelig

Reputation: 1808

In the third line, you have written int space=0 so your variable is constantly reset to 0... You have to initialize it elsewhere (the beginning of your program is a good place for any global variable).

Upvotes: 1

Related Questions