diff options
Diffstat (limited to 'apps/plugins/snake2.c')
-rw-r--r-- | apps/plugins/snake2.c | 98 |
1 files changed, 80 insertions, 18 deletions
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c index e83e298beb..3f6db5c550 100644 --- a/apps/plugins/snake2.c +++ b/apps/plugins/snake2.c | |||
@@ -33,6 +33,27 @@ Head and Tail are stored | |||
33 | #define WIDTH 28 | 33 | #define WIDTH 28 |
34 | #define HEIGHT 16 | 34 | #define HEIGHT 16 |
35 | 35 | ||
36 | /* variable button definitions */ | ||
37 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
38 | #define SNAKE2_QUIT BUTTON_OFF | ||
39 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
40 | #define SNAKE2_LEVEL_UP2 BUTTON_RIGHT | ||
41 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
42 | #define SNAKE2_LEVEL_DOWN2 BUTTON_LEFT | ||
43 | #define SNAKE2_SELECT_MAZE BUTTON_F1 | ||
44 | #define SNAKE2_SELECT_TYPE BUTTON_F3 | ||
45 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | ||
46 | |||
47 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
48 | #define SNAKE2_QUIT BUTTON_OFF | ||
49 | #define SNAKE2_LEVEL_UP BUTTON_UP | ||
50 | #define SNAKE2_LEVEL_DOWN BUTTON_DOWN | ||
51 | #define SNAKE2_SELECT_MAZE BUTTON_LEFT | ||
52 | #define SNAKE2_SELECT_TYPE BUTTON_RIGHT | ||
53 | #define SNAKE2_PLAYPAUSE BUTTON_MENU | ||
54 | |||
55 | #endif | ||
56 | |||
36 | static int max_levels = 0; | 57 | static int max_levels = 0; |
37 | static char (*level_cache)[HEIGHT][WIDTH]; | 58 | static char (*level_cache)[HEIGHT][WIDTH]; |
38 | 59 | ||
@@ -770,24 +791,37 @@ void frame (void) | |||
770 | 791 | ||
771 | void game_pause (void) | 792 | void game_pause (void) |
772 | { | 793 | { |
794 | int button; | ||
795 | |||
773 | rb->lcd_clear_display(); | 796 | rb->lcd_clear_display(); |
774 | rb->lcd_putsxy(33,12,"Paused"); | 797 | rb->lcd_putsxy(33,12,"Paused"); |
775 | 798 | ||
776 | rb->lcd_update(); | 799 | rb->lcd_update(); |
777 | while (1) | 800 | while (1) |
778 | { | 801 | { |
779 | switch (rb->button_get(true)) | 802 | button = rb->button_get(true); |
803 | switch (button) | ||
780 | { | 804 | { |
781 | case BUTTON_PLAY: | 805 | case SNAKE2_PLAYPAUSE: |
782 | redraw(); | 806 | redraw(); |
783 | rb->sleep(HZ/2); | 807 | rb->sleep(HZ/2); |
784 | return; | 808 | return; |
809 | |||
810 | default: | ||
811 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { | ||
812 | dead = 1; | ||
813 | quit = 2; | ||
814 | return; | ||
815 | } | ||
816 | break; | ||
785 | } | 817 | } |
786 | } | 818 | } |
787 | } | 819 | } |
788 | 820 | ||
789 | void game (void) | 821 | void game (void) |
790 | { | 822 | { |
823 | int button; | ||
824 | |||
791 | redraw(); | 825 | redraw(); |
792 | /*main loop:*/ | 826 | /*main loop:*/ |
793 | while (1) | 827 | while (1) |
@@ -821,7 +855,8 @@ void game (void) | |||
821 | 855 | ||
822 | rb->sleep(HZ/speed); | 856 | rb->sleep(HZ/speed); |
823 | 857 | ||
824 | switch (rb->button_get(false)) | 858 | button = rb->button_get(false); |
859 | switch (button) | ||
825 | { | 860 | { |
826 | case BUTTON_UP: | 861 | case BUTTON_UP: |
827 | case BUTTON_UP | BUTTON_REPEAT: | 862 | case BUTTON_UP | BUTTON_REPEAT: |
@@ -843,14 +878,21 @@ void game (void) | |||
843 | if (dir != EAST) set_direction(WEST); | 878 | if (dir != EAST) set_direction(WEST); |
844 | break; | 879 | break; |
845 | 880 | ||
846 | case BUTTON_OFF: | 881 | case SNAKE2_QUIT: |
847 | dead=1; | 882 | dead=1; |
848 | return; | 883 | return; |
849 | 884 | ||
850 | case BUTTON_PLAY: | 885 | case SNAKE2_PLAYPAUSE: |
851 | game_pause(); | 886 | game_pause(); |
852 | break; | 887 | break; |
853 | } | 888 | |
889 | default: | ||
890 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { | ||
891 | quit = 2; | ||
892 | return; | ||
893 | } | ||
894 | break; | ||
895 | } | ||
854 | } | 896 | } |
855 | } | 897 | } |
856 | 898 | ||
@@ -862,37 +904,42 @@ void game_init(void) | |||
862 | dead=0; | 904 | dead=0; |
863 | apple=0; | 905 | apple=0; |
864 | score=0; | 906 | score=0; |
865 | 907 | int button; | |
866 | 908 | ||
867 | clear_board(); | 909 | clear_board(); |
868 | load_level( level_from_file ); | 910 | load_level( level_from_file ); |
869 | 911 | ||
870 | while (1) | 912 | while (1) |
871 | { | 913 | { |
872 | switch (rb->button_get(true)) | 914 | button=rb->button_get(true); |
915 | switch (button) | ||
873 | { | 916 | { |
874 | case BUTTON_RIGHT: | 917 | case SNAKE2_LEVEL_UP: |
875 | case BUTTON_UP: | 918 | #ifdef SNAKE2_LEVEL_UP2 |
919 | case SNAKE2_LEVEL_UP2: | ||
920 | #endif | ||
876 | if (level<10) | 921 | if (level<10) |
877 | level+=1; | 922 | level+=1; |
878 | break; | 923 | break; |
879 | case BUTTON_LEFT: | 924 | case SNAKE2_LEVEL_DOWN: |
880 | case BUTTON_DOWN: | 925 | #ifdef SNAKE2_LEVEL_DOWN2 |
926 | case SNAKE2_LEVEL_DOWN2: | ||
927 | #endif | ||
881 | if (level>1) | 928 | if (level>1) |
882 | level-=1; | 929 | level-=1; |
883 | break; | 930 | break; |
884 | case BUTTON_OFF: | 931 | case SNAKE2_QUIT: |
885 | quit=1; | 932 | quit=1; |
886 | return; | 933 | return; |
887 | break; | 934 | break; |
888 | case BUTTON_PLAY: | 935 | case SNAKE2_PLAYPAUSE: |
889 | speed = level*20; | 936 | speed = level*20; |
890 | return; | 937 | return; |
891 | break; | 938 | break; |
892 | case BUTTON_F3: | 939 | case SNAKE2_SELECT_TYPE: |
893 | if(game_type==0)game_type=1; else game_type=0; | 940 | if(game_type==0)game_type=1; else game_type=0; |
894 | break; | 941 | break; |
895 | case BUTTON_F1: | 942 | case SNAKE2_SELECT_MAZE: |
896 | 943 | ||
897 | level_from_file++; | 944 | level_from_file++; |
898 | if(level_from_file > num_levels) | 945 | if(level_from_file > num_levels) |
@@ -903,6 +950,12 @@ void game_init(void) | |||
903 | load_level( level_from_file ); | 950 | load_level( level_from_file ); |
904 | 951 | ||
905 | break; | 952 | break; |
953 | default: | ||
954 | if (rb->default_event_handler(button)==SYS_USB_CONNECTED) { | ||
955 | quit = 2; | ||
956 | return; | ||
957 | } | ||
958 | break; | ||
906 | } | 959 | } |
907 | 960 | ||
908 | rb->lcd_clear_display(); | 961 | rb->lcd_clear_display(); |
@@ -910,13 +963,22 @@ void game_init(void) | |||
910 | /*TODO: CENTER ALL TEXT!!!!*/ | 963 | /*TODO: CENTER ALL TEXT!!!!*/ |
911 | rb->snprintf(plevel,sizeof(plevel),"Speed - %d",level); | 964 | rb->snprintf(plevel,sizeof(plevel),"Speed - %d",level); |
912 | rb->lcd_putsxy(LCD_WIDTH/2 - 30,5, plevel); | 965 | rb->lcd_putsxy(LCD_WIDTH/2 - 30,5, plevel); |
966 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
913 | rb->snprintf(plevel,sizeof(plevel),"F1 - Maze %d",level_from_file); | 967 | rb->snprintf(plevel,sizeof(plevel),"F1 - Maze %d",level_from_file); |
914 | rb->lcd_putsxy(18, 20, plevel); | 968 | rb->lcd_putsxy(18, 20, plevel); |
915 | if(game_type==0) | 969 | if(game_type==0) |
916 | rb->lcd_putsxy(18, 30, "F3 - Game A"); | 970 | rb->lcd_putsxy(18, 30, "F3 - Game A"); |
917 | else | 971 | else |
918 | rb->lcd_putsxy(18, 30, "F3 - Game B"); | 972 | rb->lcd_putsxy(18, 30, "F3 - Game B"); |
919 | 973 | #elif CONFIG_KEYPAD == ONDIO_PAD | |
974 | rb->snprintf(plevel,sizeof(plevel),"Left - Maze %d",level_from_file); | ||
975 | rb->lcd_putsxy(18, 20, plevel); | ||
976 | if(game_type==0) | ||
977 | rb->lcd_putsxy(12, 30, "Right - Game A"); | ||
978 | else | ||
979 | rb->lcd_putsxy(12, 30, "Right - Game B"); | ||
980 | #endif | ||
981 | |||
920 | rb->snprintf(phscore,sizeof(phscore),"Hi Score: %d",hiscore); | 982 | rb->snprintf(phscore,sizeof(phscore),"Hi Score: %d",hiscore); |
921 | rb->lcd_putsxy(LCD_WIDTH/2 - 37,50, phscore); | 983 | rb->lcd_putsxy(LCD_WIDTH/2 - 37,50, phscore); |
922 | rb->lcd_update(); | 984 | rb->lcd_update(); |
@@ -953,7 +1015,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
953 | } | 1015 | } |
954 | } | 1016 | } |
955 | 1017 | ||
956 | return false; | 1018 | return (quit==1) ? PLUGIN_OK : PLUGIN_USB_CONNECTED; |
957 | } | 1019 | } |
958 | 1020 | ||
959 | #endif | 1021 | #endif |