1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Jens Arnold 2007-06-25 18:18:07 +00:00
parent 0fd69f6cbb
commit dfa4e6406d
2 changed files with 67 additions and 28 deletions

View file

@ -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: