#include #include "pz.h" #include #include #include #include static PzModule *module; static TWindow *window; static TWidget *wid; static int w, h, bpp; static int sys; static int i; //random number static int n; //for variable static int t; static int x; //clear screen static char now[50]; //NOW static int score=0; static char welcome[100]; static char ready[30]; static int flag; static char points[10]; //static int s; //random time static char yourscore[100]; void draw_reflex (PzWidget *wid, ttk_surface srf) { h=ttk_screen->h; w=ttk_screen->w; sys = (wid->x + wid->w)/2; ttk_color fg = ttk_ap_getx("window.fg")->color; switch(x) { case 1: { sprintf(welcome,"Welcome to Reflex Tester, press play to start."); ttk_text (srf,ttk_textfont, (sys)-(ttk_text_width(ttk_textfont,welcome)/2), 50, fg,welcome); } case 2: { sprintf(ready,"READY...."); ttk_text (srf,ttk_textfont, (sys)-(ttk_text_width(ttk_textfont,ready)/2), 40, ttk_makecol(0,0,0),ready); while(n!=i) { n++; } ttk_fillrect (srf, 0, 0, ttk_screen->w, ttk_screen->h, ttk_makecol(255,0,0)); sprintf(now,"PRESS ACTION NOW!!!"); ttk_text (srf,ttk_textfont, (sys)-(ttk_text_width(ttk_textfont,now)/2), 60, ttk_makecol(0,0,0),now); while(!flag) { score++; sprintf(points,"%i",score); ttk_text (srf,ttk_textfont, (sys)-(ttk_text_width(ttk_textfont,points)/2), t, fg,points); t+=10; } } case 3: { sprintf(yourscore,"Your score is: %i", score); ttk_text (srf,ttk_textfont, (sys)-(ttk_text_width(ttk_textfont,yourscore)/2), 50, fg,yourscore); } } } static int event_reflex (PzEvent *e) { int ret = TTK_EV_CLICK; switch(e->type) { case PZ_EVENT_SCROLL: //scroll function TTK_SCROLLMOD( e->arg, 10); if( e->arg > 0){break;} //forward scroll else {break;} //backwards scroll case PZ_EVENT_BUTTON_DOWN: // or "case PZ_EVENT_BUTTON_UP:" switch (e->arg) { case PZ_BUTTON_ACTION: //center / action button x=3; flag=1; wid->dirty++; break; case PZ_BUTTON_MENU: //menu button pz_close_window(e->wid->win); break; case PZ_BUTTON_PLAY: //play button x=2; wid->dirty++; break; case PZ_BUTTON_NEXT: //forward button break; case PZ_BUTTON_PREVIOUS: //previous button break; case PZ_BUTTON_HOLD : break; /*hold if used BUTTON_DOWN reacts imediatly if BUTTON_UP reacts when hold is released*/ default: ret = TTK_EV_UNUSED; //score++; //do nothing if not buttons pressed //wid->dirty++; } case PZ_EVENT_TIMER: //timer function break; default: ret = TTK_EV_UNUSED; //do nothing break; } return ret; } PzWindow *new_reflex_window() { t=10; flag=0; score=0; x=1; srand(time(0)); i = rand() % 500; window = pz_new_window ("Reflex", PZ_WINDOW_NORMAL); wid = pz_add_widget(window, draw_reflex, event_reflex); return pz_finish_window (window); } void cleanup_reflex() { } void init_reflex() { w =ttk_screen->w; //gets screen width h =ttk_screen->h; //gets screen hieght bpp =ttk_screen->bpp; //gets colour depth module = pz_register_module ("reflex", cleanup_reflex); pz_menu_add_action ("/Extras/Games/Reflex", new_reflex_window); } PZ_MOD_INIT (init_reflex)