summaryrefslogtreecommitdiff
path: root/apps
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 /apps
parent0fd69f6cbb44ce1e7e83ea627d533ea7d747f1de (diff)
downloadrockbox-dfa4e6406d7e4793b2bae189eb2fc1cab4506f6f.zip
rockbox-dfa4e6406d7e4793b2bae189eb2fc1cab4506f6f.tar.gz
rockbox-dfa4e6406d7e4793b2bae189eb2fc1cab4506f6f.tar.bz2
rockbox-dfa4e6406d7e4793b2bae189eb2fc1cab4506f6f.tar.xz
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
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/minesweeper.c94
1 files changed, 66 insertions, 28 deletions
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 721152a..41d0a1e 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -36,10 +36,9 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
-# define MINESWP_START BUTTON_ON
-# define MINESWP_TOGGLE BUTTON_PLAY
+# define MINESWP_TOGGLE BUTTON_ON
# define MINESWP_TOGGLE2 BUTTON_F1
-# define MINESWP_DISCOVER BUTTON_ON
+# define MINESWP_DISCOVER BUTTON_PLAY
# define MINESWP_DISCOVER2 BUTTON_F2
# define MINESWP_INFO BUTTON_F3
@@ -47,10 +46,9 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
-# define MINESWP_START BUTTON_ON
-# define MINESWP_TOGGLE BUTTON_SELECT
+# define MINESWP_TOGGLE BUTTON_ON
# define MINESWP_TOGGLE2 BUTTON_F1
-# define MINESWP_DISCOVER BUTTON_ON
+# define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_DISCOVER2 BUTTON_F2
# define MINESWP_INFO BUTTON_F3
@@ -58,7 +56,6 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
-# define MINESWP_START BUTTON_MENU
# define MINESWP_TOGGLE_PRE BUTTON_MENU
# define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL)
# define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT)
@@ -69,8 +66,8 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF
-# define MINESWP_START BUTTON_SELECT
# define MINESWP_TOGGLE BUTTON_ON
+# define MINESWP_TOGGLE2 BUTTON_REC
# define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO BUTTON_MODE
@@ -78,37 +75,40 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD)
-# define MINESWP_UP BUTTON_SCROLL_BACK
-# define MINESWP_DOWN BUTTON_SCROLL_FWD
-# define MINESWP_QUIT BUTTON_MENU
-# define MINESWP_START BUTTON_SELECT
-# define MINESWP_TOGGLE BUTTON_PLAY
-# define MINESWP_DISCOVER (BUTTON_SELECT | BUTTON_PLAY)
-# define MINESWP_INFO (BUTTON_SELECT | BUTTON_MENU)
+# define MINESWP_SCROLLWHEEL
+# define MINESWP_UP BUTTON_MENU
+# define MINESWP_DOWN BUTTON_PLAY
+# define MINESWP_NEXT BUTTON_SCROLL_FWD
+# define MINESWP_PREV BUTTON_SCROLL_BACK
+# define MINESWP_QUIT (BUTTON_SELECT | BUTTON_MENU)
+# define MINESWP_TOGGLE_PRE BUTTON_SELECT
+# define MINESWP_TOGGLE (BUTTON_SELECT | BUTTON_REL)
+# define MINESWP_DISCOVER (BUTTON_SELECT | BUTTON_REPEAT)
+# define MINESWP_INFO (BUTTON_SELECT | BUTTON_PLAY)
#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
-# define MINESWP_UP BUTTON_UP
-# define MINESWP_DOWN BUTTON_DOWN
-# define MINESWP_QUIT BUTTON_POWER
-# define MINESWP_START BUTTON_REC
-# define MINESWP_TOGGLE BUTTON_PLAY
-# define MINESWP_DISCOVER BUTTON_SELECT
-# define MINESWP_INFO (BUTTON_REC | BUTTON_PLAY)
+# define MINESWP_UP BUTTON_UP
+# define MINESWP_DOWN BUTTON_DOWN
+# define MINESWP_QUIT BUTTON_POWER
+# define MINESWP_TOGGLE BUTTON_PLAY
+# define MINESWP_DISCOVER BUTTON_SELECT
+# define MINESWP_INFO BUTTON_REC
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER
-# define MINESWP_START BUTTON_SELECT
# define MINESWP_TOGGLE BUTTON_A
# define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO BUTTON_MENU
#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
+# define MINESWP_SCROLLWHEEL
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER
-# define MINESWP_START BUTTON_SELECT
+# define MINESWP_NEXT BUTTON_SCROLL_DOWN
+# define MINESWP_PREV BUTTON_SCROLL_UP
# define MINESWP_TOGGLE BUTTON_REC
# define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT)
@@ -117,7 +117,6 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_SCROLL_UP
# define MINESWP_DOWN BUTTON_SCROLL_DOWN
# define MINESWP_QUIT BUTTON_POWER
-# define MINESWP_START BUTTON_FF
# define MINESWP_TOGGLE BUTTON_PLAY
# define MINESWP_DISCOVER BUTTON_REW
# define MINESWP_INFO (BUTTON_REW | BUTTON_PLAY)
@@ -198,6 +197,9 @@ int p = 16;
/* number of tiles left on the game */
int tiles_left;
+/* number of used flags on the game */
+int flags_used;
+
/* Because mines are set after the first move... */
bool no_mines = true;
@@ -394,6 +396,17 @@ int count_tiles_left( void )
return tiles_left;
}
+int count_flags( void )
+{
+ int flags_used = 0;
+ int i, j;
+ for( i = 0; i < height; i++ )
+ for( j = 0; j < width; j++ )
+ if( minefield[i][j].flag == 1 )
+ flags_used++;
+ return flags_used;
+}
+
/* welcome screen where player can chose mine percentage */
enum minesweeper_status menu( void )
{
@@ -540,6 +553,24 @@ enum minesweeper_status minesweeper( void )
y = ( y + height - 1 )%height;
break;
+ /*move cursor though the entire field*/
+#ifdef MINESWP_SCROLLWHEEL
+ case MINESWP_NEXT:
+ case MINESWP_NEXT|BUTTON_REPEAT:
+ if (x == width -1 ) {
+ y = ( y + 1 )%height;
+ }
+ x = ( x + 1 )%width;
+ break;
+
+ case MINESWP_PREV:
+ case MINESWP_PREV|BUTTON_REPEAT:
+ if (x == 0) {
+ y = ( y + height - 1 )%height;
+ }
+ x = ( x + width - 1 )%width;
+ break;
+#endif
/* discover a tile (and it's neighbors if .neighbors == 0) */
case MINESWP_DISCOVER:
#ifdef MINESWP_DISCOVER2
@@ -582,9 +613,16 @@ enum minesweeper_status minesweeper( void )
case MINESWP_INFO:
if( no_mines )
break;
- tiles_left = count_tiles_left();
- rb->splash( HZ*2, "You found %d mines out of %d",
- tiles_left, mine_num );
+ flags_used = count_flags();
+ if (flags_used == 1) {
+ rb->splash( HZ*2, "You marked 1 field. There are %d mines.",
+ mine_num );
+ }
+ else
+ {
+ rb->splash( HZ*2, "You marked %d fields. There are %d mines.",
+ flags_used, mine_num );
+ }
break;
default: