From e8d77a08a20f10d3c033d3e641297abadfaf3057 Mon Sep 17 00:00:00 2001 From: Mario Cianciolo Date: Sun, 6 Mar 2016 23:17:48 +0100 Subject: [PATCH] Added statistics (no. moves and max value) In both ncurses and accacia, shows a line with number of moves and current maximum value --- 2048.c | 5 +++++ 2048ac.c | 7 +++++++ 2048nc.c | 13 +++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/2048.c b/2048.c index f2a0aa5..70c2599 100644 --- a/2048.c +++ b/2048.c @@ -7,6 +7,9 @@ int row,col; +int Moves = 0; +int Max = 2; + char hash[17]; int board[4][4] = { @@ -91,6 +94,8 @@ int boardcheck() { for (i = 0; i < 4; ++i) for (j = 0; j < 4; ++j) { + if (board[i][j] > Max) + Max = board[i][j]; if (board[i][j] == 2048) return 1; } diff --git a/2048ac.c b/2048ac.c index b0d0c45..15825d0 100644 --- a/2048ac.c +++ b/2048ac.c @@ -1,6 +1,8 @@ #include "2048.h" #include "2048ac.h" +extern int Moves, Max; + void ac_printboard() { int i,j, x, y = 10; int bkcolor = 0; @@ -69,6 +71,7 @@ void ac_printboard() { accacia_gotoxy(x + 2, y + 2);printf("%.4d", board[i][j]); accacia_screennormalize(); accacia_gotoxy(1,1);printf("w = Up / s = Down / a = Left / d = Right / ESC = Quit\n"); + accacia_gotoxy(1,2);printf("Moves: % 2d, Max: % 4d\n", Moves, Max); accacia_delline(); } } @@ -87,21 +90,25 @@ int ac_gameinit() { strcpy(hashi,hashgen()); switch(c) { case UP_KEY: + Moves++; for(i=0;i<4;++i) { bunchcall(&board[0][i], &board[1][i], &board[2][i], &board[3][i]); } break; case DOWN_KEY: + Moves++; for(i=0;i<4;++i) { bunchcall(&board[3][i], &board[2][i], &board[1][i], &board[0][i]); } break; case LEFT_KEY: + Moves++; for(i=0;i<4;++i) { bunchcall(&board[i][0], &board[i][1], &board[i][2], &board[i][3]); } break; case RIGHT_KEY: + Moves++; for(i=0;i<4;++i) { bunchcall(&board[i][3], &board[i][2], &board[i][1], &board[i][0]); } diff --git a/2048nc.c b/2048nc.c index e058e78..d6c9ade 100644 --- a/2048nc.c +++ b/2048nc.c @@ -2,6 +2,8 @@ #include #include "2048nc.h" +extern int Moves, Max; + void nc_printboard() { int i,j; @@ -51,6 +53,8 @@ void nc_printboard() board[i][j]); attrset(0); } + mvprintw(1,(col-9)/2, "2r11-2048"); + mvprintw(row-2,(col-23)/2, "Moves: % 2d | Max: % 4d", Moves, Max); } int nc_gameinit() @@ -67,6 +71,7 @@ int nc_gameinit() switch(c) { case UP_KEY: + Moves++; for(i=0;i<4;++i) bunchcall(&board[0][i], &board[1][i], @@ -74,6 +79,7 @@ int nc_gameinit() &board[3][i]); break; case DOWN_KEY: + Moves++; for(i=0;i<4;++i) bunchcall(&board[3][i], &board[2][i], @@ -81,6 +87,7 @@ int nc_gameinit() &board[0][i]); break; case LEFT_KEY: + Moves++; for(i=0;i<4;++i) bunchcall(&board[i][0], &board[i][1], @@ -88,6 +95,7 @@ int nc_gameinit() &board[i][3]); break; case RIGHT_KEY: + Moves++; for(i=0;i<4;++i) bunchcall(&board[i][3], &board[i][2], @@ -97,7 +105,6 @@ int nc_gameinit() } if (strcmp(hashi,hashgen())!=0) randinsertboard(); - nc_printboard(); switch(boardcheck()) { case 1: @@ -106,10 +113,8 @@ int nc_gameinit() case -1: return 0; break;/*not required*/ - case 0: - continue; - break;/*not required*/ } + nc_printboard(); } return 0; }