【C语言】 棋盘游戏

#include<stdio.h>
#define COL 3 
#define ROW 3

void init_board(int arr[COL][ROW])
{
	int i = 0;
	int j = 0;
	for (i = 0; i < COL; i++)
	{
		for (j = 0; j < ROW; j++)
		{
			arr[i][j] = ‘ ‘;
		}
	}
}
void print_board(int arr[COL][ROW])
{
	int i = 0;
	for (i = 0; i < COL; i++)
	{
		printf(" %c | %c | %c \n", arr[i][0], arr[i][1], arr[i][2]);
		if (i != 2)
			printf("---|---|---\n");
	}
}

void play_move(int arr[COL][ROW])
{
	int x, y;
flag:
	printf("请输入合适的坐标:>");
	scanf_s("%d%d", &x, &y);
	x = x - 1;
	y = y - 1;
	if (arr[x][y] != ‘ ‘)
	{
		printf("输入坐标有误\n");
		//play_move(arr);
		goto flag;
	}
	else
	{
		arr[x][y] = ‘X‘;
	}
}
void computer_move(int arr[COL][ROW])
{
	int x = 0;
	int y = 0;
	for (x = 0; x < COL; x++)
	{
		for (y = 0; y < ROW; y++)
		{
			if (arr[x][y] == ‘ ‘)
			{
				arr[x][y] = ‘0‘;
				goto flag;
			}
		}
	}
flag:
	if (x*y == 9)
	{
		printf("平局\n");
	}
}

char check_win(int arr[COL][ROW])
{
	int i = 0;
	for (i = 0; i < COL; i++)
	{
		if ((arr[i][0] == arr[i][1]) && (arr[i][1] == arr[i][2]))
		{
			return arr[i][0];
		}
	}
	for (i = 0; i < ROW; i++)
	{
		if ((arr[0][i] == arr[1][i]) && (arr[1][i] == arr[2][i]))
		{
			return arr[0][i];
		}
	}
	if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]))
	{
		return arr[0][0];
	}
	if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]))
	{
		return arr[1][1];
	}
	return ‘ ‘;
}

int main()
{
	char done;
	int arr[COL][ROW];
	init_board(arr);
	print_board(arr);
	do
	{
		play_move(arr);
		done = check_win(arr);
		if (done != ‘ ‘)
		{
			break;
		}
		computer_move(arr);
		print_board(arr);
		done = check_win(arr);
	} while (done == ‘ ‘);
	print_board(arr);
	if (done == ‘X‘)
	{
		printf("玩家赢\n");
	}
	else if (done == ‘0‘)
	{
		printf("电脑赢\n");
	}
	system("pause");
	return 0;
}
时间: 2024-12-24 22:07:21

【C语言】 棋盘游戏的相关文章

【经典游戏编程题】C语言:编写一个棋盘游戏,与二维数组结合

#include<stdio.h> #include<stdlib.h> char arr[3][3]; void print() {  int i=0;  for(i=0;i<3;i++)  {   printf("%c|%c|%c|\n",arr[i][0],arr[i][1],arr[i][2]);   printf("_|_|_|\n");  } } void init_arr() {  int i=0;  int j=0;  

用C语言实现“智障”的棋盘游戏

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> /*函数声明*/ void Init_Arr(int arr[ ][3]);  //数组初始化 void Print_Checkerboard(int arr[ ][3]); //打印棋盘函数 int Player(int arr[ ][3], int line, int list); //玩家下棋 void Robot(int *arr);

C语言之二维数组棋盘游戏

#include<iostream> #include<stdio.h> using namespace std; int main() { //-1 没人赢 0:O赢 1:X赢 int size; printf("0表示“甲方”,1表示“乙方”\n\n"); printf("请输入矩阵的大小\n"); while (scanf("%d", &size) == 1) { int board[100][100]; i

使用R语言计算均值,方差等

R语言对于数值计算很方便,最近用到了计算方差,标准差的功能,特记录. 数据准备 height <- c(6.00, 5.92, 5.58, 5.92) 1 计算均值 mean(height) [1] 5.855 2 计算中位数 median(height) [1] 5.92 3 计算标准差 sd(height) [1] 0.1871719 4 计算方差 var(height) [1] 0.03503333 5 计算两个变量之间的相关系数 cor(height,log(height)) [1] 0

GCC在C语言中内嵌汇编 asm __volatile__ 【转】

转自:http://blog.csdn.net/pbymw8iwm/article/details/8227839 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作. 1.简单的内嵌汇编 例: __asm__ __volatile__("hlt"); "__asm__"表示后面的

C语言轻松高效学习方法之:多种方法实现

多种方法实现同一个功能,可以调动你学的所有知识去做,有助于你学的融会贯通. 下面举例来看: 实现功能:求一个整数的位数: 实现语言:C语言: 开发环境:Visual Studio 2017 如:3215是4位数 实现原理: 3215/10 = 321 ----1位数 321/10 = 32 ----又是1位数 32/10 = 3 ----又是1位数 3/10 = 0 ----又是1位数 共4位数,且终止计算条件是/10结果为0的时候: 根据这个原理,先写一个最笨的原始方法: 效果: 这种实现方案

轻松学习C语言编程的秘诀:总结+灵感

目前在准备一套C语言的学习教程,所以我这里就以C语言编程的学习来讲.注意,讲的是"轻松学习",那种不注重方法,拼命玩命的方式也有其效果,但不是我提倡的.我讲究的是在方式方法对头.适合你.减轻你学习负担和心里压力的前提下,才适当的抓紧时间. 因此,探索一种很好的学习方法就是我所研究的主要内容. 众所周知,学习C语言并非易事,要学好它更是难上加难.这和你期末考试背会几个题目的答案考上满分没多大关系,也就是说你考试满分也说明不了你学好.学精通了C语言.那么怎么才算学精通C语言?闭着眼睛对自己

详解go语言的array和slice 【二】

上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量,在操作新slice时,如果新slice的容量大于长度时,添加新元素依然后使源的相应元素改变.这一篇里我会讲解到如何避免这些问题,以及迭代.和做为方法参数方面的知识点. slice的长度和容量设置为同一个值 如果在创建新的slice时我们把

自动生成小学四则运算题目(C语言)

这个简易四则运算是我在百度上找的博主叫53余雅诗的一篇c语言代码,网址为http://www.cnblogs.com/ys1101/p/4368103.html,功能是可以选择加减乘除进行简易的四则运算,判断对错.我在VS2017上编译没有bug,因为功能只有整数运算,所以我在此基础上加了真分数的四则运算以及统计得分等,最后成功运行程序.我把我的源代码放在github上,地址为https://github.com/xiaofancheng/helloworld.