📄 boardfunc.c
字号:
#include <stdio.h>
#include <stdlib.h>
#define MTX 3 /* 儅僗栚偺悢乮廲墶乯嵟戝9傑偱 */
static int board[MTX][MTX]; //儃乕僪攝楍
int p_i,p_j; //捈慜偵儅乕僋偟偨儅僗偺x,y嵗昗
extern int p_maru; //僾儗僀儎乕偑仜偺帪偼1丄亊偺帪偼2
/*儃乕僪傪昞帵偡傞娭悢*/
void writeBoard(void) {
int i, j;
int maru; //擇師尦攝楍偐傜弴偵弌偟偨抣傪擖傟偰偍偔曄悢
printf(" ");
for(i = 1; i <= MTX; i++) {
printf("[%d]",i);
}
printf("\n");
for(j = 97; j <= 97+MTX-1; j++) {
printf("[%c]", j);
for(i = 1; i <= MTX; i++) {
maru = board[j-1-96][i-1];
switch (maru) {
case 2: printf(" 亊"); break;
case 1: printf(" 仜"); break;
case 0: printf(" 丂"); break;
default: break;
}
}
printf("\n");
}
}
/*僾儗僀儎乕偺慖戰偟偨埵抲偵儅乕僋傪偡傞娭悢
堷悢 str* 僾儗僀儎乕偑巜掕偟偨儅乕僋埵抲暥帤楍
栠傝抣 r 1丗惓忢側抣偩偭偨偺偱儅乕僋姰椆
0丗晄惓側抣偩偭偨偺偱儅乕僋偱偒側偐偭偨
*/
int writeMark(char* str) {
int r = 1;
int i = str[1] - 48;
int j = str[0] - 96;
if((i < 1 || i > MTX) || (j < 1 || j > MTX)) { r = 0; }
else {
if(board[j-1][i-1] == 0) {
board[j-1][i-1] = p_maru;
p_i = i; p_j = j;
}
else { r = 0; }
}
return r;
}
/*僐儞僺儏乕僞偺慖戰偟偨埵抲偵儅乕僋傪偡傞娭悢*/
void writeCompMark(void) {
int count = 0;
int m_maru = 1;
int i,j;
int r;
int player;
int computer;
int b;
int bmtx_i[100];
int bmtx_j[100];
if(p_maru == 1) { m_maru = 2; }
//墶曽岦
for(j = 1; j <= MTX; j++) {
//仜偺悢偲亊偺悢偺僠僃僢僋
for(i = 1, player = 0, computer = 0, b = 0; i <= MTX; i++) {
if(board[j-1][i-1] == p_maru) { player++; }
else if(board[j-1][i-1] == m_maru) { computer++; }
else { b = i; }
}
//僾儗僀儎乕偑儕乕僠偩偭偨応崌慾巭偡傞
if((player+1 == MTX) && computer == 0) {
board[j-1][b-1] = m_maru;
p_i = b; p_j = j;
return;
}
}
//廲曽岦
for(i = 1; i <= MTX; i++) {
for(j = 1, player = 0, computer = 0, b = 0; j <= MTX; j++) {
if(board[j-1][i-1] == p_maru) { player++; }
else if(board[j-1][i-1] == m_maru) { computer++; }
else { b = j; }
}
if((player+1 == MTX) && computer == 0) {
board[b-1][i-1] = m_maru;
p_i = i; p_j = b;
return;
}
}
//僫僫儊
player = 0;
computer = 0;
b = 0;
for(i = 1; i <= MTX; i++) {
if(board[i-1][i-1] == p_maru) { player++; }
else if(board[i-1][i-1] == m_maru) { computer++; }
else { b = i; }
}
if((player+1 == MTX) && computer == 0) {
board[b-1][b-1] = m_maru;
p_i = b; p_j = b;
return;
}
player = 0;
computer = 0;
b = 0;
for(j = 1; j <= MTX; j++) {
if(board[j-1][MTX-j] == p_maru) { player++; }
else if(board[j-1][MTX-j] == m_maru) { computer++; }
else { b = j; }
}
if((player+1 == MTX) && computer == 0) {
board[b-1][MTX-b] = m_maru;
p_i = b; p_j = MTX-b+1;
return;
}
//僾儗僀儎乕偺儕乕僠偼側偐偭偨偺偱儔儞僟儉偵儅乕僋偡傞
for(j = 1; j <= MTX; j++) {
for(i = 1; i <= MTX; i++) {
if(board[j-1][i-1] == 0) {
bmtx_i[count] = i;
bmtx_j[count] = j;
count++;
}
}
}
r = rand()%count;
board[bmtx_j[r]-1][bmtx_i[r]-1] = m_maru;
p_i = bmtx_i[r]; p_j = bmtx_j[r];
}
/*儅乕僋偑懙偭偨偐偳偆偐傪僠僃僢僋偡傞娭悢
栠傝抣 r 1丗儅乕僋偑懙偭偰偄傞
0丗儅乕僋偼傑偩懙偭偰偄側偄
-1丗慡偰偺儃乕僪偑杽傑偭偨偑偳偪傜偺儅乕僋傕偦傠偭偰偄側偄
*/
int judge(void) {
int i, j;
int r;
int j_maru = board[p_j-1][p_i-1] ; //懙偭偨偐偳偆偐敾掕偡傞儅乕僋
//墶曽岦僠僃僢僋
for(i = 1, r = 1; i <= MTX; i++) {
if(board[p_j-1][i-1] != j_maru) { r = 0; break; }
}
if(r) { return 1; }
//廲曽岦僠僃僢僋
for(j = 1, r = 1; j <= MTX; j++) {
if(board[j-1][p_i-1] != j_maru) { r = 0; break; }
}
if(r) { return 1; }
//僫僫儊僠僃僢僋
if(p_j == p_i) {
for(i = 1, r = 1; i <= MTX; i++) {
if(board[i-1][i-1] != j_maru) { r = 0; break; }
}
}
if(r) { return 1; }
if(p_j+p_i == MTX+1) {
for(i = 1, r = 1; i <= MTX; i++) {
if(board[i-1][MTX-i] != j_maru) { r = 0; break; }
}
}
if(r) { return 1; }
//偁偄偙
for(j = 1, r = -1; j <= MTX; j++) {
for(i = 1; i <= MTX; i++) {
if(board[j-1][i-1] == 0) { return 0; }
}
}
return r;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -