益智趣味小游戏之三子棋

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

//未修改写法,实现了功能但是繁琐不美观且有很多不健全的地方
#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.修改后健全三子棋程序

时间: 2024-12-28 00:15:03

益智趣味小游戏之三子棋的相关文章

c语言实现小游戏_三子棋

游戏规则:玩家走一步,电脑走一步.当然电脑怎么走的代码也是你写的. #include <stdio.h> #include <stdlib.h> /*******************************************************************************/ //函数功能:初始化棋盘 /**************************************************************************

Pascal小游戏 井字棋

一个很经典的井字棋游戏 Pascal源码Chaobs奉上 注意:1.有的FP版本不支持汉语,将会出现乱码.2.别想赢电脑了,平手不错了. 井字过三关: program TicTacToe; uses crt; var a:Array [1..3] of Array [1..3] of char; b:Array [1..3] of Array [1..3] of integer; i,n,g,e,p:integer; t:text; c:char; o:integer; r:integer; s

趣味小游戏,测试你们做过的傻事

我们可以用集合来做一个这种趣味的测试,输入一个或者两个人的名字,系统自动生成一句话,这句话中的一些词语都是随机组合,这样随机拼出来的句子就显得比较有趣. 首先是控制游戏开始: 下面开始定义几个集合,分别存放我们编好的用来组成一句话的语句: 开始输入两个人的名字,分别存储在name1和name2里: 之后利用随机数生成器,句子每个部分有8个元素所以生成0-7之间的随机数:这里我们定义了5个集合,每次生成5个随机数,放入n[]这个数组中,然后利用数组n[]进行显示操作: 到这里游戏制作完成. 游戏效

js、jQuery实现2048小游戏

一.游戏简介:  2048是一款休闲益智类的数字叠加小游戏 二. 游戏玩法: 在4*4的16宫格中,您可以选择上.下.左.右四个方向进行操作,数字会按方向移动,相邻的两个数字相同就会合并,组成更大的数字,每次移动或合并后会增加一个数字. 当16宫格中没有空格子,且四个方向都无法操作时,游戏结束. 三. 游戏目的: 目的是合并出2048这个数字,获得更高的分数. 四. 游戏截图:  五.先来玩一下: 开始游戏 查看源码 六.游戏实现原理: 使用js.jQuery实现了PC版及手机版,实现原理是一样

微信为什么要搞一个小游戏?

众厂关于 H5 游戏市场的争夺,自 2014 年以来,一直就没有停止过.但一直也没有尘埃落定,最终花落谁家,鹿死谁手现在还不好讲.微信推出小程序,继而推出小游戏,只是腾讯数年来在 H5 市场企业战略的一环. 微信为什么要自定义一套技术,起名为小程序?明明就是原来的 H5 技术,为什么 CSS 不叫 CSS,叫 WXSS:为什么 HTML 不叫 HTML,叫 WXML:为什么明明有 JS.TS,还要自主研发一个 WXS,并且声称"WXS 与 JS 是不同的语言,有自己的语法,并不和 JS 一致&q

C语言 三子棋 小游戏

//C语言 三子棋 小游戏 //棋盘为3x3大小,电脑棋子 X ,玩家 O : //用命令窗口模拟3子棋,玩家与电脑轮流下,先连成3子判赢:无路可走判平局 #include<stdio.h> #include<string.h> #include<windows.h> int judge_is_moved(char arr[][12], int place); void print_chessboard(char arr[][12])//输出棋盘 { int i = 0

根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

1 background_image_filename = 'blackground.png' 2 black_mouse_image_filename = 'black.png' 3 white_mouse_image_filename = 'white.png' 4 restart_icon_filename='restart.png' 5 pingju_icon_filename='pingju.jpg' 6 win_icon_filename='win.jpg' 7 lose_icon_

写一个三子棋小游戏的感悟

在写之前,我已经把函数的结构设计出来,主要由以下几个函数实现: 1:初始化棋框 2:玩家下棋 3:电脑下棋 4:判断胜负 5:更新棋框 6:主函数 在写的过程中碰到了不能将玩家下的位置放入棋框中,原因是在函数定义过程中没有将二维数组引入, 导致棋框更新不正确,在函数中引用二维数组时,因为c语言编译系统不检查第一维的大小,只要第二维大小相同,形参数组第一维可以与实参不同,因此在函数定义时只需要写int qk(arr[][i]),i为常数,在主函数调用时只需要写qk(arr)即可,因为数组名本身就是

『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法&amp;代码讲解+资源打包下载】

一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎.可能我说了半天,对它名字不熟悉的朋友也不懂我在说神马.那没关系,我就引用Wiki(维基百科)的介绍作为大家对它名字的认识,顺便也勾起我们儿时的回忆: 井字棋,大陆.台湾又称为井字游戏.圈圈叉叉:另外也有打井游戏.OX棋的称呼,香港多称井字过三关.过三关,是种纸笔游戏.两个玩家,一个打圈(O),一个打