码迷,mamicode.com
首页 > 其他好文 > 详细

益智趣味小游戏之三子棋

时间:2015-11-07 06:43:53      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:c语言

同五子棋,三子棋即在九宫格里能实现三个棋子连在一起即获胜

//未修改写法,实现了功能但是繁琐不美观且有很多不健全的地方
#include<stdio.h>
#include<stdlib.h>

void init(int arr[][3])//初始化数组
{
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		printf(" %c | %c | %c ", arr[i][0], arr[i][1], arr[i][2]);
		if (i != 2)
			printf("\n---|---|---\n");//按照此格式打印出九宫格
	}

}
void print_meue(int game)//游戏菜单
{

	printf("             三子棋             \n");
	printf("**********1>start************\n");
	printf("**********2>exit ************\n");
	printf("*****************************\n");
	


}
void player(int arr[][3])// 玩家
{
	int a = 0, b = 0;
	int i = 0;
	int flag;
	flag:
	printf("\nyour turn:\n");
	scanf("%d%d", &a, &b);
	if (arr[a - 1][b - 1] == ‘ ‘)
	{
		arr[a-1][b-1] = ‘O‘;
		
		for (i = 0; i < 3; i++)
		{
			printf(" %c | %c | %c ", arr[i][0], arr[i][1], arr[i][2]);
			if (i != 2)
				printf("\n---|---|---\n");
		}
		printf("\n");
	}
	else
		goto flag;
	
}
void computer(int arr[][3])//电脑
{
	int i = 0, j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			if (arr[i][j] == ‘ ‘)
			{
				arr[i][j] = ‘X‘;
				for (i = 0; i < 3; i++)
				{
					printf(" %c | %c | %c ", arr[i][0], arr[i][1], arr[i][2]);
					if (i != 2)
						printf("\n---|---|---\n");
				}
				break;
			}
		}
	}
}

void jud_win( int arr[][3])//判断输赢
{
	
	if ((arr[0][0] == ‘O‘ && arr[0][1] == ‘O‘ && arr[0][2] == ‘O‘) ||
		(arr[1][0] == ‘O‘ && arr[1][1] == ‘O‘ && arr[1][2] == ‘O‘) ||
		(arr[2][0] == ‘O‘ && arr[2][1] == ‘O‘ && arr[2][1] == ‘O‘) ||
		(arr[0][0] == ‘O‘ && arr[1][0] == ‘O‘ && arr[2][0] == ‘O‘) ||
		(arr[0][1] == ‘O‘ && arr[1][1] == ‘O‘ && arr[2][1] == ‘O‘) ||
		(arr[0][2] == ‘O‘ && arr[1][2] == ‘O‘ && arr[2][2] == ‘O‘) ||
		(arr[0][0] == ‘O‘ && arr[1][1] == ‘O‘ && arr[2][2] == ‘O‘) ||
		(arr[0][2] == ‘O‘ && arr[1][1] == ‘O‘ && arr[2][0] == ‘O‘))
	{
		printf("you win!\n");
		
		
	}
	if ((arr[0][0] == ‘X‘ && arr[0][1] == ‘X‘ && arr[0][2] == ‘X‘) ||
		(arr[1][0] == ‘X‘ && arr[1][1] == ‘X‘ && arr[1][2] == ‘X‘) ||
		(arr[2][0] == ‘X‘ && arr[2][1] == ‘X‘ && arr[2][1] == ‘X‘) ||
		(arr[0][0] == ‘X‘ && arr[1][0] == ‘X‘ && arr[2][0] == ‘X‘) ||
		(arr[0][1] == ‘X‘ && arr[1][1] == ‘X‘ && arr[2][1] == ‘X‘) ||
		(arr[0][2] == ‘X‘ && arr[1][2] == ‘X‘ && arr[2][2] == ‘X‘) ||
		(arr[0][0] == ‘X‘ && arr[1][1] == ‘X‘ && arr[2][2] == ‘X‘) ||
		(arr[0][2] == ‘X‘ && arr[1][1] == ‘X‘ && arr[2][0] == ‘X‘))
	{
	printf("you lose");
	
	}
}
int main()//主函数
{
	int game=0;
	print_meue(game);//调用菜单函数

	printf("请选择:");
	scanf("%d", &game);
	
	switch (game)
	{
	case 1:
	{
	      int arr[3][3] = { 0 };
	      int step = 0;
	      int i = 0, j = 0;
	      for (i = 0; i < 3; i++)
	       {
		     for (j = 0; j < 3; j++)
		        {
			   arr[i][j] = ‘ ‘;
	        	}
	        }
	      init(arr);//调用初始化函数
	      while (step < 10)
	       {
		    player(arr);
		    step++;

     		jud_win(arr);

    		computer(arr);
	    	step++;

	    	jud_win(arr);
	       }
         	if (step >= 10)
	       {
	     	printf(" 平局");
	        }
	  }
	case 2:
		exit(0);

	}
	

	
	system("pause");
	return 0;
}

2.修改后健全三子棋程序


本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1710502

益智趣味小游戏之三子棋

标签:c语言

原文地址:http://10797127.blog.51cto.com/10787127/1710502

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!