Képzeld, vannak játékok, amiket egyetlen gombbal kell játszani! Igaziból sok ilyen van, az egyik legegyszerűbb a Canabalt!
Menj ide http://www.adamatomic.com/canabalt/ a progi indításához. A szóköz gombbal tudsz ugrani, a feladatod az, hogy minél messzebbre juss.
Ha valami okból a Canabalt nem indul el, egy hozzá hasonló játék a T-rex runner.
Figyeld meg, hogy az ugrás nagysága attól függ, mennyi ideig nyomod a szóközt. Hmm, de mi ezt nem tudtuk így csinálni... eddig.
Azt kellene tenni, hogy amikor az A-starra kötött gombot megnyomják, küldjünk a gépnek egy "most megnyomták a szóközt" üzenetet. Aztán, ha elengedték, küldjünk egy "nincs semmi megnyomva" üzenetet. A gép tudni fogja, hogy amíg nem kapott "nincs semmi megnyomva" üzenetet, addig a gombon taposol.
Erre a println() helyett a press() metódust fogjuk használni, ami csak azt az üzenetet küldi be, hogy egy gombot megnyomtak (és még mindig nyomják). A release() metódus pedig azt az üzenetet küldi be, hogy a gombot elengedték. A releaseAll() pedig azt mondja a gépnek, hogy most minden gombot elengedtek.
A progit írd át, hogy szóközt küldjön okosan, majd ha a gombunkat elengedték, akkor egy "semmi sincs megnyomva" üzenetet:
void setup() {
pinMode(0,INPUT_PULLUP);
Keyboard.begin(); // indítsuk el az USB kezelését
}
void loop() {
if (digitalRead(0)==0) {
Keyboard.press(' ');
while(digitalRead(0)==0) {
delay(10);
}
Keyboard.release(' ');
}
}
Na így már tudsz hatalmasakat ugrani!
Egy másik aranyos egygombos játék a http://flabbyphysics.com/. Itt egy golyóval kell elkapni egy csillagot. Ehhez is a szóköz gomb kell: megnyomva a golyó alatti párnákat lehet összenyomni. Amikor elengeded a gombot, a párnák rugalmasan visszaalakulnak, és a golyót ellökik!
Nagyon kafa!
Menj ide http://makeymakey.com/bongos/ és itt találsz egy egyszerű dobolós flash progit. Kattints rá, és ezután a szóköz és a balra nyíl gombokkal tudsz játszani a két bongó dobon!
Természetesen, ha az A-starra rakott gombot nyomod meg, az is szóköz, és az is dobol. Miért ne kössünk még egy gombot a panelre, hogy mindkét dobot lehessen használni?
A másik gomb az 1-es port és a GND közé jön, és balra-nyíl gombot küld a gépnek. De hopp, mit írjunk be a balra nyílra? Olyan betű nincs is!
Igaziból nagyon-nagyon sok gomb van a gombozaton, aminek nincs betű megfelelője. Pld. a visszatörlés gombot, vagy a Shift gombot sem lehet egyszerűen a press()-ben használni, mert... mert nem tudod leírni a programban, hogy shift gomb.
Ezekre gondos kezek készítettek egy csomó konstanst nekünk. A KEY _ LEFT _ ARROW például a balra mutató nyíl kódja. Az összes speciális gombnak van egy-egy konstans.
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
Keyboard.begin(); // indítsuk el az USB kezelését
}
void loop() {
if (digitalRead(0)==0) {
Keyboard.press(' ');
while(digitalRead(0)==0) {
delay(10);
}
Keyboard.release(' ');
}
if (digitalRead(1)==0) {
Keyboard.press(KEY_LEFT_ARROW);
while(digitalRead(1)==0) {
delay(10);
}
Keyboard.release(KEY_LEFT_ARROW);
}
}