Klassen KeyAdapter i Java gör det möjligt att ta in inputs från tangentbordet.
Nu vill vi göra vill vi göra det möjligt för användaren att manövrera spelet med hjälp av tangentbordet (det hade varit ett ganska tråkigt spel annars).
Men nu böjar vi helt enkelt med att importera klassen KeyAdapter och KeyEvent.
import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent;
public class KeyInput extends KeyAdapter { Game game; //Konstruktorn tar objektet game som instansvariabel public KeyInput(Game game){ this.game = game;
Slutligen så skapar vi två metoder. En för vad som ska hända när en tangent trycks ned, och en för vad som ska hända när en tangent släpps.
public void keyPressed(KeyEvent e){ //Kopplar tangenttryckningen till objektet game game.keyPressed(e); } public void keyReleased(KeyEvent e){ //Kopplar kommandot till objektet game game.keyReleased(e); } }
Hela koden med tillhörande kommentarer hittar du nedan.
import java.awt.event.KeyAdapter; //Infogar klasserna import java.awt.event.KeyEvent; //Infogar klasserna public class KeyInput extends KeyAdapter { //Ärver klassen KeyAdapter som gör det möjligt att ta inputs från tangentbordet Game game; public KeyInput(Game game){ //Konstruktorn tar objektet game som instansvariabel this.game = game; } public void keyPressed(KeyEvent e){ //Vad ska hända när en tangent trycks ner? game.keyPressed(e); //Kopplar tangenttryckningen till objektet game } public void keyReleased(KeyEvent e){ //Vad ska hända när en tangent släps? game.keyReleased(e); //Kopplar kommandot till objektet game } }
Vi skapade våran KeyInput klass ovan som innehåller två metoder, en för när vi trycker ned en tangent och en för när vi släpper en tangent. Men nu vill vi göra så att programmet faktiskt känner av vilken tangent det är som trycks ned.
Vi kommer använda de inbyggda metoderna VK_LEFT och VK_RIGHT som finns i KeyEvent för att känna av ifall det är Vänster- respektive Höger piltangent som används
Låt oss börja med skapa en metod för att känna av ifall en tangent är nedtryckt
public void keyPressed(KeyEvent e){ //Nytt tangenttryck int key = e.getKeyCode(); //Om vi trycker höger if (key == KeyEvent.VK_RIGHT) { System.out.println("Höger piltangent trycks ner"); } //Om vi trycker vänster else if (key == KeyEvent.VK_LEFT) { System.out.println("Vänster piltangent trycks ner"); } }
Sedan så gör vi på liknande sätt för när vi ska känna av ifall en tangent släpps
public void keyReleased(KeyEvent e){ //Ny tangent har släppts int key = e.getKeyCode(); //Om vi släpper högertangenten if(key == KeyEvent.VK_RIGHT){ System.out.println("Höger piltangent släpps"); } //Om vi släpper vänstertangenten else if(key == KeyEvent.VK_LEFT){ System.out.println("Vänster piltangent släpps"); } }
Notera, vi kan självklart göra motsvarande för andra tangenter. På Oracle hemsida för KeyEvent finns lista på kommandon för övriga tangenter
Hela koden för våra två metoder med tillhörande kommentarer hittar du nedan.
public void keyPressed(KeyEvent e){ // När vi trycker ned en tangent //Nytt tangenttryck int key = e.getKeyCode(); //Om vi trycker höger if (key == KeyEvent.VK_RIGHT) { System.out.println("Höger piltangent trycks ner"); } //Om vi trycker vänster else if (key == KeyEvent.VK_LEFT) { System.out.println("Vänster piltangent trycks ner"); } } public void keyReleased(KeyEvent e){ // När en tangent släpps //Ny tangent har släppts int key = e.getKeyCode(); //Om vi släpper högertangenten if(key == KeyEvent.VK_RIGHT){ System.out.println("Höger piltangent släpps"); } //Om vi släpper vänstertangenten else if(key == KeyEvent.VK_LEFT){ System.out.println("Vänster piltangent släpps"); } }
För mer information och listor på olika metoder så rekommenderar vi Oracle hemsida för KeyAdapter och KeyEvent.
Vad tyckte du om sidan?
Lämna gärna feedback och hjälp oss göra sidan bättre
Feedback gör oss bättre!
Lämna gärna feedback om vad du tyckte om avsnittet!