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:
parent
0fd69f6cbb
commit
dfa4e6406d
2 changed files with 67 additions and 28 deletions
|
@ -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 | BUTTON_PLAY)
|
# define MINESWP_INFO BUTTON_REC
|
||||||
|
|
||||||
#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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue