Add -r option to man and readme and make reset option actually prompt. Remove hardcoded merge_goal value.

This commit is contained in:
Tiehuis 2015-02-23 16:00:14 +13:00
parent 40f6419c55
commit 2d9af767d1
6 changed files with 51 additions and 19 deletions

View File

@ -13,7 +13,7 @@ create a .c file which implements all the functions in gfx.h and add a Makefile
git clone https://github.com/Tiehuis/2048-cli.git git clone https://github.com/Tiehuis/2048-cli.git
make make
You can easily install this on el >= 5 (CentOS, RedHat Enterprise Linux, You can also easily install this on el >= 5 (CentOS, RedHat Enterprise Linux,
Scientific Linux, Oracle) and Fedora >= 19 using the package-manager: Scientific Linux, Oracle) and Fedora >= 19 using the package-manager:
sudo yum install 2048-cli[-nocurses] sudo yum install 2048-cli[-nocurses]
@ -22,15 +22,19 @@ For el you will need to have the
[EPEL-repository](https://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F) [EPEL-repository](https://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F)
enabled. enabled.
### Run ## Controls
./2048 hjkl and wasd Default movement keys
q Quit the current game
## Options ## Options
-s <size> Set the grid border length -h Print the program usage
-b <rate> Set the block spawn rate -C Disable color support (default).
-r Resets hiscore. Will prompt user -c Enable color support if supported.
-c Enables color support (ncurses version only) -a Enable animations (default).
-C Disables color support (ncurses version only) -A Disable animations.
-r Reset highscore. Will prompt user.
-s SIZE Set the size of the playing field.
-b RATE Set the rate at which blocks spawn per turn.
Fonts used in SDL version can be found [here](http://www.openfontlibrary.org). Fonts used in SDL version can be found [here](http://www.openfontlibrary.org).

View File

@ -29,16 +29,19 @@ Quit the current game.
Print the program usage. Print the program usage.
.TP .TP
.BR \-c .BR \-c
Turn on color support (default). Enable color support if supported.
.TP .TP
.BR \-C .BR \-C
Turn off color support. Disable color support (default).
.TP .TP
.BR \-a .BR \-a
Turn on animations (default). Enable animations (default).
.TP .TP
.BR \-A .BR \-A
Turn off animations. Disable animations.
.TP
.BR \-r
Reset highscore. Will prompt user.
.TP .TP
.BR \-s " " \fISIZE\fR .BR \-s " " \fISIZE\fR
Set the size of the playing field. Default is 4. Maximum value is 16, minimum is 4. Set the size of the playing field. Default is 4. Maximum value is 16, minimum is 4.

View File

@ -44,7 +44,34 @@ static const char* highscore_retrieve_file(void)
void highscore_reset(void) void highscore_reset(void)
{ {
const char *hsfile = highscore_retrieve_file(); const char *hsfile = highscore_retrieve_file();
const size_t resp_length = 16;
char resp[resp_length];
printf("Are you sure you want to reset your scores? Y(es) or N(o)\n");
while (1) {
fgets(resp, resp_length, stdin);
const size_t sl = strlen(resp);
if (sl < resp_length)
resp[sl - 1] = '\0';
if (!strncmp(resp, "Yes", resp_length) ||
!strncmp(resp, "Y", resp_length) ||
!strncmp(resp, "yes", resp_length) ||
!strncmp(resp, "y", resp_length) )
goto reset_scores;
else
if (!strncmp(resp, "No", resp_length) ||
!strncmp(resp, "N", resp_length) ||
!strncmp(resp, "no", resp_length) ||
!strncmp(resp, "n", resp_length) )
return;
printf("Please enter Yes or No\n");
}
reset_scores:;
FILE *fd = fopen(hsfile, "w+"); FILE *fd = fopen(hsfile, "w+");
fprintf(fd, "%d", 0); fprintf(fd, "%d", 0);
fclose(fd); fclose(fd);

View File

@ -1,7 +1,6 @@
#include "assert.h"
#include "merge.h" #include "merge.h"
#define MERGE_GOAL 11 #define MERGE_GOAL (int)(sizeof(merge_values)/sizeof(merge_values[0]))
const long merge_values[] = { const long merge_values[] = {
0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 0, 2, 4, 8, 16, 32, 64, 128, 256, 512,

View File

@ -8,7 +8,7 @@
/* This should return the value of a given index. 0 should default to 0 (empty) */ /* This should return the value of a given index. 0 should default to 0 (empty) */
long merge_value(const int v1); long merge_value(const int v1);
/* This should return the goal value */ /* This should return the goal index value */
long merge_goal(void); long merge_goal(void);
/* Return if a merge is possible between two indices */ /* Return if a merge is possible between two indices */

View File

@ -1,11 +1,10 @@
#include "assert.h"
#include "merge.h" #include "merge.h"
#define MERGE_GOAL 17 #define MERGE_GOAL (int)(sizeof(merge_values)/sizeof(merge_values[0]))
const long merge_values[] = { const long merge_values[] = {
0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,
233, 377, 610, 987, 1597, 2584 233, 377, 610, 987, 1597
}; };
inline long merge_value(const int v1) inline long merge_value(const int v1)