home *** CD-ROM | disk | FTP | other *** search
- #include<stdlib.h>
- #include<kiwi_inc.h>
- #include<kiwipro.h>
-
-
- /***** Menüfestlegungen */
- MENU leiste[3]={
- "Datei",0,1,"",
- "Spielen",0,1,"",
- "Festleg",0,1,"",
- };
-
- MENU datei_menu[2]={
- "Informationen ",8,1,"",
- "Beende Programm",8,1,"",
- };
-
- MENU spiel_menu[2]={
- "Spiel Starten ",0,1,"",
- "Spiel Optionen",0,6,"",
- };
-
-
-
- /******** Globale Variable */
-
- int but_form=KIWI_MODE; /* Form der Schalter */
- int but_shad=SHADOW_ON; /* Schalter mit Schatten */
- int but_klick=KLICK_ON; /* Schalter mit Klicken */
- int freq_ein=100; /* Einschaltfrequenz */
- int ton_ein=2; /* Einschaltdauer */
- int freq_aus=100; /* Ausschaltfrequenz */
- int ton_aus=2; /* Einschaltdauer */
-
- int play_anzahl=10; /* Anzahl Durchläufe */
- int play_button; /* Aktiver Schalter */
- int error; /* Abbruchbedingung */
- int play_typ=3; /* 6x5 */ /* Spielflächentyp */
- int max_button; /* Anzahl Schalter */
-
-
- BUTTON *but[30]; /* Pointer auf die Schalter */
- char *titel[30]={ /* Schlaterbeschriftungsfeld */
- "Autton",
- "Button",
- "Cutton",
- "Dutton",
- "Eutton",
- "Futton",
- "Gutton",
- "Hutton",
- "Iutton",
- "Jutton",
- "Kutton",
- "Lutton",
- "Mutton",
- "Nutton",
- "Outton",
- "Putton",
- "Qutton",
- "Rutton",
- "Sutton",
- "Tutton",
- "Uutton",
- "Vutton",
- "Wutton",
- "Xutton",
- "Yutton",
- "Zutton",
- "Autton",
- "Button",
- "Cutton",
- "Dutton",};
-
-
- ZEIT start,ende,diff_time; /* Definitionen der benötigten Zeitvariablen */
- ULONG min,max,norm; /* Millisekundenzähler */
-
-
- int main(void);
- int dateimenu(void);
- int spielmenu(void);
- int festmenu(void);
- int spieloptionen(void);
- int play(void);
- int action(void);
- int set_button(void);
- int init_tools(void);
- int reset_tools(void);
- void check_if_get_help(void);
-
-
- /* Macro to get a random integer within a specified range */
- #define getrandom( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min))
-
-
-
-
-
- /************************************************************************/
- main()
- {
- int wahl=0,ende=0;
- WINDOW win;
-
- set_button_mode(but_shad); /* Schalterschatten */
- set_button_mode(but_klick); /* Schalterklicken */
- set_button_sound(freq_ein,ton_ein,freq_aus,ton_aus); /* Tonart */
- set_button_mode(but_form); /* Schalterform */
- set_window_display_mode(EXPLODE); /* Fensteröffnungsform */
- set_window_open_delay(7); /* Öffnungsverzögerung */
- set_scanf_exit_code(1,F6,1); /* Exitcode für die Masken */
-
- init_tools(); /* Initialisier Toolbox */
-
- init_main_menu(leiste,3); /* Hauptmenü */
- win=load_window("SPIELINT .WND");
- wait_input();
- close_window(win);
-
- do
- {
-
- wahl=choose_main_menu(); /* Hauptmenüwahl */
- switch(wahl){
-
- case 0: ende=dateimenu(); /* Ende */
- break;
-
- case 1: spielmenu(); /* Spielen */
- break;
-
- case 2: festmenu(); /* Festlegungen */
- break;
-
- }
-
- }while(!ende);
-
- reset_tools(); /* Ende des Spasses */
-
- return(0);
- }
-
-
- /************************************************************************/
- int dateimenu()
- {
- int wahl=0,res=0;
- WINDOW win=0,win1;
-
- wahl=choose_sub_menu(datei_menu,2,&win); /* Dateimenüwahl */
- switch(wahl){
-
- case 0: win1=load_window("INFO .WND"); /* Infofenster */
- wait_input();
- close_window(win1);
- break;
-
- case 1: res=1; /* Tschüss */
- break;
-
-
- default:break;
- }
-
- close_window(win);
- return(res);
- }
-
- /************************************************************************/
- int spielmenu()
- {
- int wahl=0;
- WINDOW win=0;
-
- wahl=choose_sub_menu(spiel_menu,2,&win); /* Spielmenü */
- switch(wahl){
-
- case 0: play(); /* Starte Spiel */
- break;
-
- case 1: spieloptionen(); /* Spieloptionen */
- break;
-
- default:break;
- }
-
- close_window(win);
- return(0);
- }
-
-
- /************************************************************************/
- int festmenu()
- {
- int result=0;
- static WINDOW win=0;
- RADIO form,klick,shad;
-
- if(but_form==KIWI_MODE) form=0;
- else if(but_form==TURBO_MODE)form=1;
- else form=2;
-
- if(but_shad==SHADOW_ON)shad=0;
- else shad=1;
-
- if(but_klick==KLICK_ON)klick=0;
- else klick=1;
-
- /* Hole mit Scanf die Einstellungen aus der Maske */
- win=load_window("SETBUTT .WND");
- result=scanf_mask(win,0, "x", &form,
- &klick,
- &shad,
- &freq_ein,
- &ton_ein,
- &freq_aus,
- &ton_aus
- /* Button Speichern */
- /* Button Abbruch */
- /* Button Hilfe */);
-
- close_window(win);
- if(result==F6) /* Änderungen einstellen */
- {
- if(form==0)but_form=KIWI_MODE;
- else if(form==1)but_form=TURBO_MODE;
- else but_form=MICROSOFT;
-
- if(shad==0)but_shad=SHADOW_ON;
- else but_shad=SHADOW_OFF;
-
- if(klick==0)but_klick=KLICK_ON;
- else but_klick=KLICK_OFF;
-
- set_button_mode(but_shad);
- set_button_mode(but_klick);
- set_button_sound(freq_ein,ton_ein,freq_aus,ton_aus);
- set_button_mode(but_form);
- }
-
- return(0);
- }
-
-
-
- int spieloptionen()
- {
- static WINDOW win=0;
-
- win=load_window("SPIELOPT.WND");
- scanf_mask(win,0,"x",&play_typ,
- &play_anzahl
- /* Button Ok */);
-
- close_window(win);
- return(0);
- }
-
-
-
-
- /************************************************************************/
- int play()
- {
- int i,x,y,dx,dy,max_x,xa,ya;
- WINDOW win,win1;
- ULONG diff;
-
- /* Setze die Spielfläche nach gewählten Modus */
- if(play_typ==0) /* 3x3 */
- {
- xa=12;
- ya=3;
- dx=20;
- dy=6;
- max_x=70;
- max_button=9;
- }
- else if(play_typ==1) /* 4x4 */
- {
- xa=8;
- ya=2;
- dx=17;
- dy=5;
- max_x=76;
- max_button=16;
- }
- else if(play_typ==2) /* 5x5 */
- {
- xa=4;
- ya=1;
- dx=14;
- dy=4;
- max_x=74;
- max_button=25;
- }
- else if(play_typ==3) /* 5x5 */
- {
- xa=2;
- ya=1;
- dx=12;
- dy=4;
- max_x=74;
- max_button=30;
- }
- /* Seed the random number generator with current time. */
- srand( (unsigned)time( NULL ) );
-
- win=open_window("Spielfläche",2,2,78,24,DOPPELT); /* Spielfläche */
- y=ya;
- x=xa;
- for(i=0;i<max_button;i++) /* Erstelle Schalter */
- {
- but[i]=create_button(win,titel[i],0,6,x,y);
- x+=dx;
-
- if(x>=max_x)
- {
- y+=dy;
- x=xa;
- }
- }
-
- win1=open_window("",AM,AM,45,3,DOPPELT); /* Letzte Warnung */
- display_string("Wenn fertig, beliebige Taste zum Starten",win1,AM,2);
- wait_input();
- close_window(win1);
-
- max=norm=0l; /* Setze die Zeitdaten */
- min=1000000l;
- error=0;
- for(i=0;i<play_anzahl&& error!=(-1);i++)
- {
- set_button(); /* Aktivier Schalter */
- activ_button(but[play_button]); /* Setze den auf Aktiv */
- pieps(); /* Letzte Meldung */
- get_system_time(&start); /* Hole Startzeit */
- action(); /* warte auf Aktion des Spielers */
- get_system_time(&ende); /* Hole Endzeit */
- passiv_button(but[play_button]); /* Schalter auf aus */
- if(error==1)error=0; /* Weiterspielen ? ja */
-
- diff=sub_time(&diff_time,&start,&ende); /* Berechne Reaktionszeit */
- if(diff<min)min=diff; /* Kleiner als bisher */
- if(diff>max)max=diff; /* Größer als bisher */
- norm+=diff;
- }
- win1=open_window("Ergebnis",AM,AM,50,10,DOPPELT); /* Zeige Ergebnis */
- wlocate(win1,2,2);
- printw(win1,"Anzahl Durchläufe = %d \n",play_anzahl);
- printw(win1,"Minimale Reaktionszeit (ms) = %ld\n",min);
- printw(win1,"Maximale Reaktionszeit (ms) = %ld\n",max);
- printw(win1,"Durchschnittlich Reaktionszeit (ms) = %ld\n",norm/i);
- wait_input();
- close_window(win1);
-
- for(i=0;i<max_button;i++) /* Zerstöre Schalter */
- destroy_button(but[i]);
-
- close_window(win); /* Fenster weg */
-
- return(0);
- }
-
-
-
-
- /************************************************************************/
- int action()
- {
- int ts,ms;
- UINT mx,my;
-
-
- do
- {
- ts=input(); /* Tastatur */
- ms=mouse(&mx,&my); /* Maus */
-
- if(ts==27)error=(-1); /* Abbruch */
-
- if(get_input_status() & 8) /* Alt Taste und */
- {
- if(ts-65==play_button)error=1; /* Treffer */
- }
- if(ms==1 && is_mouse_inside_button(but[play_button]))error=1;
- /* Maustreffer */
- }while(!error); /* Bis Treffer oder Lustlos */
-
- if(error==1) /* Getroffen */
- {
- press_button(but[play_button]); /* Schalte Schalter ein */
- clear_input_qeue(); /* Warte bis alle Tassten los */
- release_button(but[play_button]); /* Schalte Schalter aus */
- }
- return(0);
- }
-
-
-
- /************************************************************************/
- int set_button()
- {
- int i,anzahl;
-
-
- anzahl=getrandom(40,140); /* Wie oft Durchlaufen */
-
- for(i=0;i<anzahl;i++) /* So oft Schalte */
- {
- play_button=getrandom(0,max_button-1); /* Welcher Schalter */
- activ_button(but[play_button]); /* Aktivieren */
- passiv_button(but[play_button]); /* Passivieren */
- }
- return(0);
- }
-
-
-
-
-
- /* Initialisiere das TOOL Paket */
- int init_tools()
- {
-
- init_screen(VBLAU,HWEIS,VWEIS,HBLAU,MUSTER,DIREKT);
-
- cls(); /* Loesche Schirm mit zeichen */
- init_window(10); /* Mache Platz fuer 30 Fenster */
- init_virtuell_screen(10);
-
- init_window_manager();
- set_winman_mask(WINDOW_MOVE);
- set_window_move_mode(MIT_RAND);
- set_cursor_size(CURSOR_WEG); /* Verstecke Cursor */
-
-
- /* Mouse */
- set_mouse_cursor_size(CURSOR_VOLL); /* Setze Mauscursorform */
- init_mouse(); /* Aktiviere Maus wenn da */
- limit_mouse_area(1,1,get_screen_wide(),get_screen_height());
-
- return(0);
- }
-
-
-
- /* Reinitialisiere das Tool Paket */
- reset_tools()
- {
- reset_mouse(); /* Maus weg */
- reset_virtuell_screen(); /* Screens weg */
- reset_window(); /* Fenster frei */
- reset_screen(); /* Bildschirm frei */
- set_video_mode(C_80x25);
- check_memory();
-
- clear(); /* Loesche Bildschirm */
- exit(0);
-
- return(0);
- }
-
-
-
- /* Hilfe haben wir nicht, deshalb als Ersatz 3 Piepser */
- void check_if_get_help()
- {
- return;
- }
-
-
- /* Windowmanager ist idle */
- int check_window_manager(mode,mx,my)
- int mode;
- unsigned mx,my;
- {
- return(window_manager(mode,mx,my));
- }
-