summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-06-25 18:18:07 +0000
committerJens Arnold <amiconn@rockbox.org>2007-06-25 18:18:07 +0000
commitdfa4e6406d7e4793b2bae189eb2fc1cab4506f6f (patch)
treeeee84afbcd7c36c6748f530ae9db907fcf0e4a43
parent0fd69f6cbb44ce1e7e83ea627d533ea7d747f1de (diff)
downloadrockbox-dfa4e6406d7e4793b2bae189eb2fc1cab4506f6f.tar.gz
rockbox-dfa4e6406d7e4793b2bae189eb2fc1cab4506f6f.zip
Minesweeper enhancements (FS #7327, FS #7335, some further changes by me): * Make info splash display number of flags and number of mines. * Directions on iPod use Left/Right/Menu/Play now, with Select for flagging and long Select for exploring. Additionally, Scroll Left/Right goes left/right with wrapping to the previos/next line at the edges. * Make info splash work on Iaudios. * Swap main explore and flag buttons on recorder (and av300) to make them consistent with the other tragets and the rest of the minesweeper world. * On irivers, Rec can be used as an alternative for flagging, making one-handed playing easier on H1x0. * Removed unused macros.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13712 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/minesweeper.c94
-rw-r--r--docs/CREDITS1
2 files changed, 67 insertions, 28 deletions
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 721152a788..41d0a1ef31 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -36,10 +36,9 @@ enum minesweeper_status {
36# define MINESWP_UP BUTTON_UP 36# define MINESWP_UP BUTTON_UP
37# define MINESWP_DOWN BUTTON_DOWN 37# define MINESWP_DOWN BUTTON_DOWN
38# define MINESWP_QUIT BUTTON_OFF 38# define MINESWP_QUIT BUTTON_OFF
39# define MINESWP_START BUTTON_ON 39# define MINESWP_TOGGLE BUTTON_ON
40# define MINESWP_TOGGLE BUTTON_PLAY
41# define MINESWP_TOGGLE2 BUTTON_F1 40# define MINESWP_TOGGLE2 BUTTON_F1
42# define MINESWP_DISCOVER BUTTON_ON 41# define MINESWP_DISCOVER BUTTON_PLAY
43# define MINESWP_DISCOVER2 BUTTON_F2 42# define MINESWP_DISCOVER2 BUTTON_F2
44# define MINESWP_INFO BUTTON_F3 43# define MINESWP_INFO BUTTON_F3
45 44
@@ -47,10 +46,9 @@ enum minesweeper_status {
47# define MINESWP_UP BUTTON_UP 46# define MINESWP_UP BUTTON_UP
48# define MINESWP_DOWN BUTTON_DOWN 47# define MINESWP_DOWN BUTTON_DOWN
49# define MINESWP_QUIT BUTTON_OFF 48# define MINESWP_QUIT BUTTON_OFF
50# define MINESWP_START BUTTON_ON 49# define MINESWP_TOGGLE BUTTON_ON
51# define MINESWP_TOGGLE BUTTON_SELECT
52# define MINESWP_TOGGLE2 BUTTON_F1 50# define MINESWP_TOGGLE2 BUTTON_F1
53# define MINESWP_DISCOVER BUTTON_ON 51# define MINESWP_DISCOVER BUTTON_SELECT
54# define MINESWP_DISCOVER2 BUTTON_F2 52# define MINESWP_DISCOVER2 BUTTON_F2
55# define MINESWP_INFO BUTTON_F3 53# define MINESWP_INFO BUTTON_F3
56 54
@@ -58,7 +56,6 @@ enum minesweeper_status {
58# define MINESWP_UP BUTTON_UP 56# define MINESWP_UP BUTTON_UP
59# define MINESWP_DOWN BUTTON_DOWN 57# define MINESWP_DOWN BUTTON_DOWN
60# define MINESWP_QUIT BUTTON_OFF 58# define MINESWP_QUIT BUTTON_OFF
61# define MINESWP_START BUTTON_MENU
62# define MINESWP_TOGGLE_PRE BUTTON_MENU 59# define MINESWP_TOGGLE_PRE BUTTON_MENU
63# define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL) 60# define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL)
64# define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT) 61# define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT)
@@ -69,8 +66,8 @@ enum minesweeper_status {
69# define MINESWP_UP BUTTON_UP 66# define MINESWP_UP BUTTON_UP
70# define MINESWP_DOWN BUTTON_DOWN 67# define MINESWP_DOWN BUTTON_DOWN
71# define MINESWP_QUIT BUTTON_OFF 68# define MINESWP_QUIT BUTTON_OFF
72# define MINESWP_START BUTTON_SELECT
73# define MINESWP_TOGGLE BUTTON_ON 69# define MINESWP_TOGGLE BUTTON_ON
70# define MINESWP_TOGGLE2 BUTTON_REC
74# define MINESWP_DISCOVER BUTTON_SELECT 71# define MINESWP_DISCOVER BUTTON_SELECT
75# define MINESWP_INFO BUTTON_MODE 72# define MINESWP_INFO BUTTON_MODE
76 73
@@ -78,37 +75,40 @@ enum minesweeper_status {
78 75
79#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 76#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
80 (CONFIG_KEYPAD == IPOD_3G_PAD) 77 (CONFIG_KEYPAD == IPOD_3G_PAD)
81# define MINESWP_UP BUTTON_SCROLL_BACK 78# define MINESWP_SCROLLWHEEL
82# define MINESWP_DOWN BUTTON_SCROLL_FWD 79# define MINESWP_UP BUTTON_MENU
83# define MINESWP_QUIT BUTTON_MENU 80# define MINESWP_DOWN BUTTON_PLAY
84# define MINESWP_START BUTTON_SELECT 81# define MINESWP_NEXT BUTTON_SCROLL_FWD
85# define MINESWP_TOGGLE BUTTON_PLAY 82# define MINESWP_PREV BUTTON_SCROLL_BACK
86# define MINESWP_DISCOVER (BUTTON_SELECT | BUTTON_PLAY) 83# define MINESWP_QUIT (BUTTON_SELECT | BUTTON_MENU)
87# define MINESWP_INFO (BUTTON_SELECT | BUTTON_MENU) 84# define MINESWP_TOGGLE_PRE BUTTON_SELECT
85# define MINESWP_TOGGLE (BUTTON_SELECT | BUTTON_REL)
86# define MINESWP_DISCOVER (BUTTON_SELECT | BUTTON_REPEAT)
87# define MINESWP_INFO (BUTTON_SELECT | BUTTON_PLAY)
88 88
89#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) 89#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
90# define MINESWP_UP BUTTON_UP 90# define MINESWP_UP BUTTON_UP
91# define MINESWP_DOWN BUTTON_DOWN 91# define MINESWP_DOWN BUTTON_DOWN
92# define MINESWP_QUIT BUTTON_POWER 92# define MINESWP_QUIT BUTTON_POWER
93# define MINESWP_START BUTTON_REC 93# define MINESWP_TOGGLE BUTTON_PLAY
94# define MINESWP_TOGGLE BUTTON_PLAY 94# define MINESWP_DISCOVER BUTTON_SELECT
95# define MINESWP_DISCOVER BUTTON_SELECT 95# define MINESWP_INFO BUTTON_REC
96# define MINESWP_INFO (BUTTON_REC | BUTTON_PLAY)
97 96
98#elif (CONFIG_KEYPAD == GIGABEAT_PAD) 97#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
99# define MINESWP_UP BUTTON_UP 98# define MINESWP_UP BUTTON_UP
100# define MINESWP_DOWN BUTTON_DOWN 99# define MINESWP_DOWN BUTTON_DOWN
101# define MINESWP_QUIT BUTTON_POWER 100# define MINESWP_QUIT BUTTON_POWER
102# define MINESWP_START BUTTON_SELECT
103# define MINESWP_TOGGLE BUTTON_A 101# define MINESWP_TOGGLE BUTTON_A
104# define MINESWP_DISCOVER BUTTON_SELECT 102# define MINESWP_DISCOVER BUTTON_SELECT
105# define MINESWP_INFO BUTTON_MENU 103# define MINESWP_INFO BUTTON_MENU
106 104
107#elif (CONFIG_KEYPAD == SANSA_E200_PAD) 105#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
106# define MINESWP_SCROLLWHEEL
108# define MINESWP_UP BUTTON_UP 107# define MINESWP_UP BUTTON_UP
109# define MINESWP_DOWN BUTTON_DOWN 108# define MINESWP_DOWN BUTTON_DOWN
110# define MINESWP_QUIT BUTTON_POWER 109# define MINESWP_QUIT BUTTON_POWER
111# define MINESWP_START BUTTON_SELECT 110# define MINESWP_NEXT BUTTON_SCROLL_DOWN
111# define MINESWP_PREV BUTTON_SCROLL_UP
112# define MINESWP_TOGGLE BUTTON_REC 112# define MINESWP_TOGGLE BUTTON_REC
113# define MINESWP_DISCOVER BUTTON_SELECT 113# define MINESWP_DISCOVER BUTTON_SELECT
114# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT) 114# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT)
@@ -117,7 +117,6 @@ enum minesweeper_status {
117# define MINESWP_UP BUTTON_SCROLL_UP 117# define MINESWP_UP BUTTON_SCROLL_UP
118# define MINESWP_DOWN BUTTON_SCROLL_DOWN 118# define MINESWP_DOWN BUTTON_SCROLL_DOWN
119# define MINESWP_QUIT BUTTON_POWER 119# define MINESWP_QUIT BUTTON_POWER
120# define MINESWP_START BUTTON_FF
121# define MINESWP_TOGGLE BUTTON_PLAY 120# define MINESWP_TOGGLE BUTTON_PLAY
122# define MINESWP_DISCOVER BUTTON_REW 121# define MINESWP_DISCOVER BUTTON_REW
123# define MINESWP_INFO (BUTTON_REW | BUTTON_PLAY) 122# define MINESWP_INFO (BUTTON_REW | BUTTON_PLAY)
@@ -198,6 +197,9 @@ int p = 16;
198/* number of tiles left on the game */ 197/* number of tiles left on the game */
199int tiles_left; 198int tiles_left;
200 199
200/* number of used flags on the game */
201int flags_used;
202
201/* Because mines are set after the first move... */ 203/* Because mines are set after the first move... */
202bool no_mines = true; 204bool no_mines = true;
203 205
@@ -394,6 +396,17 @@ int count_tiles_left( void )
394 return tiles_left; 396 return tiles_left;
395} 397}
396 398
399int count_flags( void )
400{
401 int flags_used = 0;
402 int i, j;
403 for( i = 0; i < height; i++ )
404 for( j = 0; j < width; j++ )
405 if( minefield[i][j].flag == 1 )
406 flags_used++;
407 return flags_used;
408}
409
397/* welcome screen where player can chose mine percentage */ 410/* welcome screen where player can chose mine percentage */
398enum minesweeper_status menu( void ) 411enum minesweeper_status menu( void )
399{ 412{
@@ -540,6 +553,24 @@ enum minesweeper_status minesweeper( void )
540 y = ( y + height - 1 )%height; 553 y = ( y + height - 1 )%height;
541 break; 554 break;
542 555
556 /*move cursor though the entire field*/
557#ifdef MINESWP_SCROLLWHEEL
558 case MINESWP_NEXT:
559 case MINESWP_NEXT|BUTTON_REPEAT:
560 if (x == width -1 ) {
561 y = ( y + 1 )%height;
562 }
563 x = ( x + 1 )%width;
564 break;
565
566 case MINESWP_PREV:
567 case MINESWP_PREV|BUTTON_REPEAT:
568 if (x == 0) {
569 y = ( y + height - 1 )%height;
570 }
571 x = ( x + width - 1 )%width;
572 break;
573#endif
543 /* discover a tile (and it's neighbors if .neighbors == 0) */ 574 /* discover a tile (and it's neighbors if .neighbors == 0) */
544 case MINESWP_DISCOVER: 575 case MINESWP_DISCOVER:
545#ifdef MINESWP_DISCOVER2 576#ifdef MINESWP_DISCOVER2
@@ -582,9 +613,16 @@ enum minesweeper_status minesweeper( void )
582 case MINESWP_INFO: 613 case MINESWP_INFO:
583 if( no_mines ) 614 if( no_mines )
584 break; 615 break;
585 tiles_left = count_tiles_left(); 616 flags_used = count_flags();
586 rb->splash( HZ*2, "You found %d mines out of %d", 617 if (flags_used == 1) {
587 tiles_left, mine_num ); 618 rb->splash( HZ*2, "You marked 1 field. There are %d mines.",
619 mine_num );
620 }
621 else
622 {
623 rb->splash( HZ*2, "You marked %d fields. There are %d mines.",
624 flags_used, mine_num );
625 }
588 break; 626 break;
589 627
590 default: 628 default:
diff --git a/docs/CREDITS b/docs/CREDITS
index 5ac1fabcf9..b6806023b8 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -298,6 +298,7 @@ Dagni McPhee
298Alex Gerchanovsky 298Alex Gerchanovsky
299Gerhard Dirschl 299Gerhard Dirschl
300Ivan Zupan 300Ivan Zupan
301Alexander Papst
301The libmad team 302The libmad team
302The wavpack team 303The wavpack team
303The ffmpeg team 304The ffmpeg team