Mã Ngu N VN

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define MAX_SIZE 15

const char HORZ = 196;


const char VERT = 179;
const char TL = 218;
const char TM = 194;
const char TR = 191;
const char BL = 192;
const char BM = 193;
const char BR = 217;
const int numW = 3; // Độ rộng để viết ra một số nguyên
const int charW = 1; // Độ rộng để viết ra một ký tự
const int numPerLine = 15;
const char VERT_START = 195;
const char VERT_END = 180;
const char VERT_MID = 197;
const char * inputCommand = "Di chuyển trước / Di chuyển tiếp theo / Dừng lại [p /
n / s]:";
const char * endOfHistory = "Đây là kết thúc của trận đấu. \ n Nước đi trước / Nước
đi tiếp theo / Dừng lại [p / n / s]:";
const char * startOfGame = "Đây là trận đấu bắt đầu. \ nĐi trước / Nước đi tiếp
theo / Dừng lại [p / n / s]:";
const char * invalidInput = "Nhập không hợp lệ, vui lòng thử lại:";

đá enum {NA, X, O};

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ả;
}

void displayBoard (enum Stone arr [] [15], int size) {


// UPPERLINE
printf ("");
for (int i = 0; i <size; i ++) {
printf ("% c", (char) (i + 'a'));
}
printf ("\ n");
printf ("% s \ n", lineString (TL, TM, TR, HORZ, 3, numPerLine));

// 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));
}

void displayBoardSimple (enum Stone arr [] [15], int size) {


for (int i = 0; i <size; i ++) {
for (int j = 0; j <size; j ++) {
printf ("% d" , arr [i] [j]);
}
}
printf ("\ n");
}

bool makeMove (enum Stone board [] [15], int size, char * playerMove, bool
isFirstPlayerTurn) {
// BẮT ĐẦU VIỆC LÀM

// KẾT THÚC VIỆC


}

bool hasWon (enum Stone board [] [15], int size, bool isFirstPlayerTurn ) {
// BẮT ĐẦU VIỆC LÀM

// KẾT THÚC VIỆC LÀM


}

void displayHistory (char * history, int numOfMoves) {


// BẮT ĐẦU VIỆC LÀM

// KẾT THÚC VIỆC


}

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;
}

You might also like