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_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF # define MINESWP_QUIT BUTTON_OFF
# define MINESWP_START BUTTON_ON # define MINESWP_TOGGLE BUTTON_ON
# define MINESWP_TOGGLE BUTTON_PLAY
# define MINESWP_TOGGLE2 BUTTON_F1 # define MINESWP_TOGGLE2 BUTTON_F1
# define MINESWP_DISCOVER BUTTON_ON # define MINESWP_DISCOVER BUTTON_PLAY
# define MINESWP_DISCOVER2 BUTTON_F2 # define MINESWP_DISCOVER2 BUTTON_F2
# define MINESWP_INFO BUTTON_F3 # define MINESWP_INFO BUTTON_F3
@ -47,10 +46,9 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP # define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF # define MINESWP_QUIT BUTTON_OFF
# define MINESWP_START BUTTON_ON # define MINESWP_TOGGLE BUTTON_ON
# define MINESWP_TOGGLE BUTTON_SELECT
# define MINESWP_TOGGLE2 BUTTON_F1 # define MINESWP_TOGGLE2 BUTTON_F1
# define MINESWP_DISCOVER BUTTON_ON # define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_DISCOVER2 BUTTON_F2 # define MINESWP_DISCOVER2 BUTTON_F2
# define MINESWP_INFO BUTTON_F3 # define MINESWP_INFO BUTTON_F3
@ -58,7 +56,6 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP # define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF # define MINESWP_QUIT BUTTON_OFF
# define MINESWP_START BUTTON_MENU
# define MINESWP_TOGGLE_PRE BUTTON_MENU # define MINESWP_TOGGLE_PRE BUTTON_MENU
# define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL) # define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL)
# define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT) # define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT)
@ -69,8 +66,8 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_UP # define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_OFF # define MINESWP_QUIT BUTTON_OFF
# define MINESWP_START BUTTON_SELECT
# define MINESWP_TOGGLE BUTTON_ON # define MINESWP_TOGGLE BUTTON_ON
# define MINESWP_TOGGLE2 BUTTON_REC
# define MINESWP_DISCOVER BUTTON_SELECT # define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO BUTTON_MODE # define MINESWP_INFO BUTTON_MODE
@ -78,37 +75,40 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) (CONFIG_KEYPAD == IPOD_3G_PAD)
# define MINESWP_UP BUTTON_SCROLL_BACK # define MINESWP_SCROLLWHEEL
# define MINESWP_DOWN BUTTON_SCROLL_FWD # define MINESWP_UP BUTTON_MENU
# define MINESWP_QUIT BUTTON_MENU # define MINESWP_DOWN BUTTON_PLAY
# define MINESWP_START BUTTON_SELECT # define MINESWP_NEXT BUTTON_SCROLL_FWD
# define MINESWP_TOGGLE BUTTON_PLAY # define MINESWP_PREV BUTTON_SCROLL_BACK
# define MINESWP_DISCOVER (BUTTON_SELECT | BUTTON_PLAY) # define MINESWP_QUIT (BUTTON_SELECT | BUTTON_MENU)
# define MINESWP_INFO (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) #elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
# define MINESWP_UP BUTTON_UP # define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER # define MINESWP_QUIT BUTTON_POWER
# define MINESWP_START BUTTON_REC # define MINESWP_TOGGLE BUTTON_PLAY
# define MINESWP_TOGGLE BUTTON_PLAY # define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_DISCOVER BUTTON_SELECT # define MINESWP_INFO BUTTON_REC
# define MINESWP_INFO (BUTTON_REC | BUTTON_PLAY)
#elif (CONFIG_KEYPAD == GIGABEAT_PAD) #elif (CONFIG_KEYPAD == GIGABEAT_PAD)
# define MINESWP_UP BUTTON_UP # define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER # define MINESWP_QUIT BUTTON_POWER
# define MINESWP_START BUTTON_SELECT
# define MINESWP_TOGGLE BUTTON_A # define MINESWP_TOGGLE BUTTON_A
# define MINESWP_DISCOVER BUTTON_SELECT # define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO BUTTON_MENU # define MINESWP_INFO BUTTON_MENU
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) #elif (CONFIG_KEYPAD == SANSA_E200_PAD)
# define MINESWP_SCROLLWHEEL
# define MINESWP_UP BUTTON_UP # define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN # define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_POWER # 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_TOGGLE BUTTON_REC
# define MINESWP_DISCOVER BUTTON_SELECT # define MINESWP_DISCOVER BUTTON_SELECT
# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT) # define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT)
@ -117,7 +117,6 @@ enum minesweeper_status {
# define MINESWP_UP BUTTON_SCROLL_UP # define MINESWP_UP BUTTON_SCROLL_UP
# define MINESWP_DOWN BUTTON_SCROLL_DOWN # define MINESWP_DOWN BUTTON_SCROLL_DOWN
# define MINESWP_QUIT BUTTON_POWER # define MINESWP_QUIT BUTTON_POWER
# define MINESWP_START BUTTON_FF
# define MINESWP_TOGGLE BUTTON_PLAY # define MINESWP_TOGGLE BUTTON_PLAY
# define MINESWP_DISCOVER BUTTON_REW # define MINESWP_DISCOVER BUTTON_REW
# define MINESWP_INFO (BUTTON_REW | BUTTON_PLAY) # define MINESWP_INFO (BUTTON_REW | BUTTON_PLAY)
@ -198,6 +197,9 @@ int p = 16;
/* number of tiles left on the game */ /* number of tiles left on the game */
int tiles_left; int tiles_left;
/* number of used flags on the game */
int flags_used;
/* Because mines are set after the first move... */ /* Because mines are set after the first move... */
bool no_mines = true; bool no_mines = true;
@ -394,6 +396,17 @@ int count_tiles_left( void )
return tiles_left; 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 */ /* welcome screen where player can chose mine percentage */
enum minesweeper_status menu( void ) enum minesweeper_status menu( void )
{ {
@ -540,6 +553,24 @@ enum minesweeper_status minesweeper( void )
y = ( y + height - 1 )%height; y = ( y + height - 1 )%height;
break; 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) */ /* discover a tile (and it's neighbors if .neighbors == 0) */
case MINESWP_DISCOVER: case MINESWP_DISCOVER:
#ifdef MINESWP_DISCOVER2 #ifdef MINESWP_DISCOVER2
@ -582,9 +613,16 @@ enum minesweeper_status minesweeper( void )
case MINESWP_INFO: case MINESWP_INFO:
if( no_mines ) if( no_mines )
break; break;
tiles_left = count_tiles_left(); flags_used = count_flags();
rb->splash( HZ*2, "You found %d mines out of %d", if (flags_used == 1) {
tiles_left, mine_num ); 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; break;
default: default:

View file

@ -298,6 +298,7 @@ Dagni McPhee
Alex Gerchanovsky Alex Gerchanovsky
Gerhard Dirschl Gerhard Dirschl
Ivan Zupan Ivan Zupan
Alexander Papst
The libmad team The libmad team
The wavpack team The wavpack team
The ffmpeg team The ffmpeg team