Professional Documents
Culture Documents
Mã Ngu N VN
Mã Ngu N VN
Mã Ngu N VN
h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAX_SIZE 15
struct Di chuyển {
int row;
int col;
đá enum Stone;
};
static char * lineString (char left, char mid, char right, char horz, int wcell,
int ncell) {
static char result [100];
strcpy (kết quả, "");
ô char [10];
for (int i = 0; i <wcell;
}
ô [wcell] = '\ 0';
strncat (kết quả, & left, 1);
char cellMid [20];
strcpy (cellMid, ô);
strncat (cellMid, & mid, 1);
for (int i = 0; i <ncell - 1; i ++)
strcat (result, cellMid);
char cellRight [20];
strcpy (cellRight, ô);
strncat (cellRight, & right, 1);
strcat (kết quả, cellRight);
trả về kết quả;
}
// TRUNG GIAN
for (int i = 0; i <size; i ++) {
printf ("% 2d% c", size - i, VERT);
for (int j = 0; j <size; j ++) {
if (arr [i] [j] == NA) printf ("% c", VERT);
if (arr [i] [j] == X) printf ("X% c", VERT);
if (arr [i] [j] == O) printf ("O% c", VERT);
}
printf ("\ n");
if (i! = size - 1) printf ("% s \ n", lineString (VERT_START, VERT_MID,
VERT_END, HORZ, 3, numPerLine));
}
// UNDERLINE
printf ("% s \ n", lineString (BL, BM, BR, HORZ, 3, numPerLine));
}
bool makeMove (enum Stone board [] [15], int size, char * playerMove, bool
isFirstPlayerTurn) {
// BẮT ĐẦU VIỆC LÀM
bool hasWon (enum Stone board [] [15], int size, bool isFirstPlayerTurn ) {
// BẮT ĐẦU VIỆC LÀM
void startGame () {
enum Stone game [15] [15];
for (int i = 0; i <MAX_SIZE; i ++) {
for (int j = 0; j <MAX_SIZE; j ++) {
game [i] [j] = NA;
}
}
displayBoard (trò chơi, MAX_SIZE);
char playerMove [50];
bool player1Turn = true;
printf ("Lượt người chơi 1:");
while (true) {
scanf ("% s", playerMove);
if (strcmp (playerMove, "ff") == 0) {
printf ("% s", ((player1Turn)? "Player 2 won": "Player 1 won"));
phá vỡ;
}
else if (makeMove (game, MAX_SIZE, playerMove, player1Turn)) {
if (hasWon (game, MAX_SIZE,
printf ("% s", ((player1Turn)? "Player 1 won": "Player 2 won"));
trở về;
}
player1Turn =! player1Turn;
displayBoard (trò chơi, MAX_SIZE);
printf ("% s", ((player1Turn)? "Lượt người chơi 1:": "Lượt người chơi
2:"));
} else {
printf ("Di chuyển bất hợp pháp, vui lòng thử lại:");
}
}
}
int main ()
{
printf ("Chào mừng bạn đến với Gomoku! \ n");
printf ("1. Chơi trò chơi \ n");
printf ("2. Lịch sử \ n");
printf ("3. Thoát \ n");
printf ("
scanf ("% d", & mode);
if (mode == 1) {
startGame ();
trả về 0;
} else if (mode == 2) {
int numOfMoves;
printf ("Vui lòng nhập số lần di chuyển:");
scanf ("% d", & numOfMoves);
lịch sử char [700];
printf ("Vui lòng nhập lịch sử:");
scanf ("% s", lịch sử);
displayHistory (lịch sử, numOfMoves);
trả về 0;
} else if (mode == 3) {
return 0;
} else {
int c;
while ((c = getchar ())! = '\ n' && c! = EOF);
printf ("Chế độ không hợp lệ, vui lòng thử lại:");
}
}
trả về 0;
}