⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boardfunc.c

📁 日文版畅销书籍10天学会C语言的源程序。适合入门者学习使用。希望对大家有帮助。
💻 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 + -