enum user_commands get_command(void) { long key0 = get_key_press( 1<<KEY0 ); long key1 = get_key_rpt( 1<<KEY1 ) || get_key_press( 1<<KEY1 ); int ir_cmd = ir_get_cmd(); if ((key0 && state == PLAYING) || ir_cmd == 0x36) { return CMD_STOP; } else if (key0 || ir_cmd == 0x35) { return CMD_START; } else if (key1 || ir_cmd == 0x34) { return CMD_NEXT; } return -1; }
//***************************************************************************** // uint8_t get_key_long_rpt (uint8_t key_mask) { return get_key_rpt (~key_press^key_mask); }
//***************************************************************************** // uint8_t get_key_long2 (uint8_t key_mask) { return get_key_press (get_key_rpt (key_press^key_mask)); }
void pong (void) { ausrichtung = unten; int16_t xcord = 5; int16_t ycord = 0; int16_t number = 23; /* Koordinatensystem */ int16_t radius = 5; int16_t xmin = 0; int16_t xmax = 128 ; int16_t ymin = 0; int16_t ymax = 64; int p1points = 10; int cont = 1; /* ******************************* * Deklaration von zwei Kreisen k1 und k2 * diese sollen wild durch die gegend bouncen * bei berührung -> invertierung ********************************/ int16_t k1xcord = 23; int16_t k1ycord = 42; int16_t k1xstep = 3; int16_t k1ystep = 1; int16_t k1xmaxcord; int16_t k1xmincord; int16_t k1ymaxcord; int16_t k1ymincord; int16_t r1xcord = 10; int16_t r1ycord = 27; int16_t r1widthx = 2; int16_t r1widthy = 10; int16_t r1step = 1; int16_t r1xmaxcord; int16_t r1xmincord; int16_t r1ymaxcord; int16_t r1ymincord; r1xmaxcord = (r1xcord + r1widthx); r1xmincord = r1xcord; while(cont) { k1xmaxcord = (k1xcord + radius); k1xmincord = (k1xcord - radius); k1ymaxcord = (k1ycord + radius); k1ymincord = (k1ycord - radius); //STEUERUNG *********************** //hoch while (get_key_rpt (1 << KEY_MINUS)) { if (ymin < r1ymincord) { r1ycord = (r1ycord - r1step); //lcd_printp_at(3,0, PSTR("+\r"),0); } r1ymincord = r1ycord; r1ymaxcord = r1ymincord + r1widthy; } //runter while (get_key_rpt (1 << KEY_PLUS)) { if (ymax > r1ymaxcord) { r1ycord = (r1ycord + r1step); //lcd_printp_at(3,0, PSTR("-\r"),0); } r1ymaxcord = (r1ycord + r1widthy); r1ymincord = r1ymaxcord - r1widthy; } if (debug) { lcd_write_number_u_at (3,0, r1ymincord); lcd_write_number_u_at (5,0, r1ymaxcord); } lcd_frect (r1xcord, r1ycord, r1widthx, r1widthy, 1); // STEUERUNG ENDE *********************** // BALL ABFRAGE ************************** if (debug) { lcd_write_number_u_at (7,0, r1xmaxcord); lcd_write_number_u_at (10,0, k1xmincord); lcd_write_number_u_at (13, 0, k1ycord); } if (((r1ymaxcord > k1ycord) && (r1ymincord < k1ycord)) && (r1xmaxcord >= k1xmincord)) { k1xstep = -(k1xstep); } if (xmax <= k1xmaxcord) { k1xstep = -(k1xstep); } if (xmin >= k1xmincord) { p1points--; if (p1points == 0) { cont = 0; lcd_printp_at (2, 3,PSTR("VERLOREN!\r\n"),0); wait_ms(5000); } k1xcord = 23; k1ycord = 42; k1xstep = 3; k1ystep = 1; } if ((k1ymaxcord >= ymax) || (k1ymincord <= ymin)) { k1ystep = -(k1ystep); } k1xcord += k1xstep; k1ycord += k1ystep; lcd_fcircle (k1xcord, k1ycord, radius); // BALLABFRAGE ENDE ***************************** //Zeichnen lcd_write_number_u_at (0,0, p1points); wait_ms (100); lcd_cls (); } lcd_write_number_u_at(xcord, ycord, number); }
/*-------------------------------------------------------------------------- FUNC: 8/1/11 - Used to read debounced button held for REPEAT_START amount of time. PARAMS: A keymask corresponding to the pin for the button you with to poll RETURNS: A keymask where any high bits represent a long button press --------------------------------------------------------------------------*/ unsigned char get_key_long( unsigned char key_mask ) { return get_key_press( get_key_rpt( key_mask )); }