static void splash_scene() { uint32_t highscore; char highnick[20]; char key = 0; while(key == 0) { getInputWaitRelease(); int dy = getFontHeight(); int s1x = DoString(0, 0, "r0ket"); s1x = (RESX-s1x)/2; int s2x = DoString(0, 0, "JUMP!"); s2x = (RESX-s2x)/2; lcdFill(0); DoString(s1x, 3*dy, "r0ket"); DoString(s2x, 4*dy, "JUMP!"); DoString(0, 7*dy, "by webholics"); highscore = highscore_get(highnick); int s3x = DoInt(0, 0, highscore); DoChar(s3x, 0, 'm'); DoString (0, dy, highnick); lcdDisplay(); key = getInputWaitTimeout(1000); } }
void ram(void) { int c=0, pos=0,del=0; struct pos_s tail[MAX_SNAKE_LEN]; snake.tail = tail; // load the highscore highscore = highscore_get(); // initially reset everything reset(); while (1) { if(!(++c % snake.speed)) { handle_input(); pos = (snake.t_start+1) % MAX_SNAKE_LEN; snake.tail[pos].x = snake.tail[snake.t_start].x; snake.tail[pos].y = snake.tail[snake.t_start].y; if(snake.dir == 0) snake.tail[pos].x++; else if(snake.dir == 1) snake.tail[pos].y++; else if(snake.dir == 2) snake.tail[pos].x--; else if(snake.dir == 3) snake.tail[pos].y--; snake.t_start = pos; if (pos < snake.len) { del = MAX_SNAKE_LEN - (snake.len - pos); } else del = pos - snake.len; // remove last, add first line draw_block(snake.tail[del].x, snake.tail[del].y, 0xFF); draw_block(snake.tail[pos].x, snake.tail[pos].y, 0b00011000); // check for obstacle hit.. if (hitWall() || hitSelf()) { death_anim(); if (showHighscore()) break; reset(); } else if (hitFood()) next_level(); lcdDisplay(); } #ifdef SIMULATOR delayms(50); #else delayms(3); #endif } }
void menu_func_OLED_print_highscore(){ for (int i = 2; i < 7; i++) //Clears the screen, but not the header { OLED_clear_line(i); char buffer[17]; OLED_pos(i,0x10); OLED_print_string( itoa((i-1),buffer, 10) ); OLED_pos(i,0x20); OLED_print_string( itoa(highscore_get(i-2),buffer, 10) ); } }
static int showHighscore() { int key = getInputRaw(); //throw away pending keypress char nick[20]; uint32_t score = 0; highscore_set(points,GLOBAL(nickname)); score = highscore_get(nick); lcdClear(); setTextColor(0xff,0x00); DoString(0,RESY/2-33, " Your Score"); // Display own score in green color, if it's higher than high score, else red if (points > score) { setTextColor(0xff,0b00011100); } else { setTextColor(0xff,0b11100000); } DoString(RESX/2-4, RESY/2-25, IntToStr(points,6,0)); setTextColor(0xff,0x00); DoString(0,RESY/2-10, " Highscore"); setTextColor(0xff,0b11100000); DoString(RESX/2-4, RESY/2-2, IntToStr(score,6,0)); setTextColor(0xff,0x00); DoString(0, RESY/2+18, " UP to play "); DoString(0, RESY/2+26, "DOWN to quit "); lcdDisplay(); while(1) { key = getInputRaw(); if (key&BTN_DOWN) { return 1; } else if (key&BTN_UP) { return 0; } } }
static bool screen_intro(void) { char key=0; while(key==0) { getInputWaitRelease(); lcdFill(0); int ct = 0; for (int i = 0; i < SHIP_HEIGHT; i++){ for(int d = 0; d < SHIP_WIDTH; d++){ lcdSetPixel((40+d)%RESX,(10+i)%RESY,SHIP[ct]); ct++; } } DoString (13,25,"R0KET TYPE"); uint32_t highscore; char highnick[20]; highscore = highscore_get(highnick); DoInt(13, 40, highscore); DoString (13, 50, highnick); lcdDisplay(); key=getInputWaitTimeout(1000); } //getInputWaitRelease(); return !(key==BTN_LEFT); }