三子棋的c语言程序实现,三子棋c语言代码

本文目录一览:

求c语言编程九个格子三子棋,可以对着下棋,而且还可以判断输赢

#includestdio.h

int main()

{

void picture(char a[3][3]);

int Osheng(char a[3][3]);

int Xsheng(char a[3][3]);

int ping(char a[3][3]);

int i,j,x,y;

char a[3][3];

for(i=0;i3;i++)

for(j=0;j3;j++)

a[i][j]=’ ‘;

picture(a);

while(1)

{

int a1=1;

while(1)//下X子

{

for(;a1;)

{

printf(“请输入O子下的位置: “);//输入o子的位置

scanf(“%d%d”,x,y);

if(a[x][y]==’O’||a[x][y]==’X’)//判断是否已有子

{

printf(“已有子请重下”);

continue;

}

else if(x=3||y=3)

{

printf(“输入错误请重输”);

continue;

}

else

{

a[x][y]=’O’;

a1=0;

}

break;

}

break;

}

picture(a);//下好O子后将棋盘显示

if(Osheng(a))

{

printf(“O子获胜”);

break;

}

while(1)//下X子

{

printf(“请输入X子下的位置: “);//输入O子的位置

scanf(“%d%d”,x,y);

if(a[x][y]==’O’||a[x][y]==’X’)//判断是否已有子

{

printf(“已有子请重下”);

continue;

}

else if(x=3||y=3)

{

printf(“输入错误请重输”);

printf(“请输入X子下的位置: “);

scanf(“%d%d”,x,y);

continue;

}

a[x][y]=’X’;

break;

}

picture(a);

if(Xsheng(a))

{

printf(“X子获胜”);

break;

}

if(ping(a))

{

printf(“平局”);

break;

}

}

int Osheng(char a[3][3])

{

int i,j;

for(i=0;i3;i++)

for(j=0;j3;j++)

if(a[i][j]==’O’a[i][j+1]==’O’a[i][j+2]==’O’)

return 1;

for(i=0;i3;i++)

for(j=0;j3;j++)

if(a[i][j]==’O’a[i+1][j]==’O’a[i+2][j]==’O’)

return 1;

if(a[1][1]==’O’a[2][2]==’O’a[3][3]==’O’)

return 1;

if(a[1][3]==’O’a[2][2]==’O’a[3][1]==’O’)

return 1;

return 0;

}

int Xsheng(char a[3][3])【就是在这里错的】

{

int i,j;

for(i=0;i3;i++)

for(j=0;j3;j++)

if(a[i][j]==’X’a[i][j+1]==’X’a[i][j+2]==’X’)

return 1;

for(i=0;i3;i++)

for(j=0;j3;j++)

if(a[i][j]==’X’a[i+1][j]==’X’a[i+2][j]==’X’)

return 1;

if(a[1][1]==’X’a[2][2]==’X’a[3][3]==’X’)

return 1;

if(a[1][3]==’X’a[2][2]==’X’a[3][1]==’X’)

return 1;

return 0;

}

int ping(char a[3][3])

{

int i,j;

for(i=0;i3;i++)

for(j=0;j3;j++)

{

if(a[i][j]==’ ‘)

return 0;

}

return 1;

}

void picture(char a[3][3])

{

printf(“%c|%c|%c\n”,a[0][0],a[0][1],a[0][2]);

printf(“-+-+-\n”);

printf(“%c|%c|%c\n”,a[1][0],a[1][1],a[1][2]);

printf(“-+-+-\n”);

printf(“%c|%c|%c\n”,a[2][0],a[2][1],a[2][2]);

}

c语言程序设计—三子棋(相当于五子棋的小游戏)

首先你要知道学这些只是说明你是计算机专业的.五子棋并不是什么大型项目开发,只是一个算法的实现而已.如果你的C有够熟练,写一个五子棋算法很简单

你可以先在网上搜一下五子棋的算法,按他写的思路写一个程序出来,之后可以自己想想如何实现

用C语言设计一个“三子棋”的游戏,要求用上下左右光标控制。要程序源代码!

#include iostream

#include string

using namespace std;

class CGobang //棋子类

{

private:

char chSort; //棋子的类别

int nWin; //赢棋的次数

int nLose; //输棋的次数

static int nDraw; //平局次数

static char achBoard[3][3]; //棋盘

static int nSize; //棋盘的尺寸 nSize X nSize

public:

CGobang(char chsort) //构造函数,决定一方棋子的类别

{

chSort=chsort;

nWin=nLose=nDraw=0;

}

void PlayTurn(void); //走1步棋

int Judge(); //判断是否连成一线,是则返回1,否则返回0

void Win(void); //赢棋

void Lose(void); //输棋

static void Draw(void); //平局

void PrintInfo(void); //输出总体情况

static void PrintBoard(void); //输出棋盘

static int GetFull(void); //判断棋盘是否已布满棋子

static void InitialBoard(void); //初始化棋盘

};

char CGobang::achBoard[3][3];

int CGobang::nSize = 3;

int CGobang::nDraw = 0;

void CGobang::Draw()

{

cout “\n\n\t\t平局!\n\n”;

nDraw++;

}

void CGobang::InitialBoard() //初始化棋盘

{

for(int i=0;inSize;i++)

for(int j=0;jnSize;j++)

achBoard[i][j]=’ ‘;

}

void CGobang::PrintBoard() //输出棋盘

{

cout endl;

cout ” 1 2 3 ” endl;

cout “1 ” achBoard[0][0] ” | ” achBoard[0][1] ” | ” achBoard[0][2] endl;

cout ” —|—|—” endl;

cout “2 ” achBoard[1][0] ” | ” achBoard[1][1] ” | ” achBoard[1][2] endl;

cout ” —|—|—” endl;

cout “3 ” achBoard[2][0] ” | ” achBoard[2][1] ” | ” achBoard[2][2] endl;

cout endl;

cout endl;

}

int CGobang::GetFull() //判断棋盘是否布满棋子,若是返回1

{

for(int i=0;inSize;i++)

for(int j=0;jnSize;j++)

if(achBoard[i][j]!=’ ‘)

return 0;

return 1;

}

void CGobang::Win() //赢棋

{

cout “\n\n\t\t”chSort”方获胜!\n\n”;

nWin++;

}

void CGobang::Lose() //输棋

{

nLose++;

}

void CGobang::PlayTurn(void) //走1步棋

{

int nRow,nCol;

cout “现在该 “chSort” 方下棋,请输入棋盘坐标(x,y):”;

do

{

cin nRow nCol; //输入坐标

if(nRownSize || nColnSize) //判断坐标越界

cout “输入的坐标越界,x与y的范围应小于等于”nSize”,请重新输入\n”;

else if(achBoard[nRow-1][nCol-1]!=’ ‘) //判断坐标合理

cout “棋盘(“nRow ” ,”nCol “)处已有棋子,请重新输入\n”;

else

{

achBoard[nRow-1][nCol-1]=chSort; //在坐标处放上棋子

break; //退出循环

}

}while(1);

}

int CGobang::Judge() //判断是否棋子连成一线,若是返回1

{//以下是各种可能连成一线的情况

if(achBoard[0][0]==chSort achBoard[1][1]==chSort achBoard[2][2]==chSort)

return 1;

else if(achBoard[2][0]==chSort achBoard[1][1]==chSort achBoard[0][2]==chSort)

return 1;

else if(achBoard[0][0]==chSort achBoard[1][0]==chSort achBoard[2][0]==chSort)

return 1;

else if(achBoard[0][1]==chSort achBoard[1][1]==chSort achBoard[2][1]==chSort)

return 1;

else if(achBoard[0][2]==chSort achBoard[1][2]==chSort achBoard[2][2]==chSort)

return 1;

else if(achBoard[0][0]==chSort achBoard[0][1]==chSort achBoard[0][2]==chSort)

return 1;

else if(achBoard[1][0]==chSort achBoard[1][1]==chSort achBoard[1][2]==chSort)

return 1;

else if(achBoard[2][0]==chSort achBoard[2][1]==chSort achBoard[2][2]==chSort)

return 1;

else

return 0; //没有连成一线则返回0

}

void CGobang::PrintInfo(void) //打印总体情况

{

cout “Side “chSort”方共计赢 “nWin” 局,输 “nLose” 局,平 “nDraw” 局。”endl;

}

void PrintRule(void) //打印规则

{

cout “\t\t欢迎使用三子连珠游戏!” endl endl;

cout “\t游戏规则:” endl;

cout “\t1.每1步输入要下棋的格子的x,y坐标,按Enter键\n”;

cout “\t2.有1方首先3个棋子连成一线即判获胜\n”;

cout “\t3.当棋子布满棋盘但仍无获胜方即为平局\n”;

cout “\t4.X方先行\n”;

cout “\n\n\t\t请按任意键开始下棋!\n\n”;

}

int JudgePlay(CGobang SideX,CGobang SideO) //每下1步要进行输赢的判断,有结果则返回1

{

if(SideX.Judge()) //X方获胜

{

SideX.Win();

SideO.Lose();

return 1;

}

else if(SideO.Judge()) //O方获胜

{

SideO.Win();

SideX.Lose();

return 1;

}

else

return 0;

}

void Play(CGobang SideX,CGobang SideO) //开始一局游戏

{

while(1)

{

CGobang::PrintBoard(); //输出棋盘

SideX.PlayTurn(); //X方下棋

if(JudgePlay(SideX,SideO)) //判断输赢

break;

if(CGobang::GetFull()) //判断是否平局

{

CGobang::Draw();

break;

}

CGobang::PrintBoard(); //输出棋盘

SideO.PlayTurn(); //O方下棋

if(JudgePlay(SideX,SideO)) //判断输赢

break;

if(CGobang::GetFull()) //判断是否平局

{

CGobang::Draw();

break;

}

}

}

int main(void)

{

CGobang SideX(‘X’),SideO(‘O’); //定义两个棋子类对象,分别代表X方与O方

PrintRule();

cin.get();

string strChoice;

do

{

CGobang::InitialBoard(); //初始化棋盘

Play(SideX,SideO); //开始下一局

cout “是否继续(Y/N)?”;

cin strChoice;

}while(strChoice == “Y” || strChoice == “y”);

SideX.PrintInfo();

SideO.PrintInfo();

cout “\n\n\t欢迎再次使用三子连珠游戏!” endl endl;

return 0;

}

求C语言高手指导!!!!!二维数组类似三子棋的简单问题!!!

很明显算法有问题。对于你这个题,你可以2个for()循环来做,

思想:

1,选对角线的元素来进行比较。

2,对每一个元素的时候 ,也就是a[0][0], 就把它和a[0][0],a[0][1],a[0][2]比较且相等的个数存在row_sum 中,同理把它和a[0][0],a[1][0],a[2][0]比较且相等的个数存在col_sum中。

3,如果在比较的过程中有不等的,不用本次(也就是这一行,或是这一列的比较)进行下一个对角线元素的比较。

4,查col_sum,row_sum 输出结果。

// 程序没有运行,直接在这打的,有问题再说,我的想法就是这样的。

#define MAX 3

int winner (int matrix[MAX][MAX]){

int col_sum,row_sum ;

for(int i = 0; i MAX ; i++)

{

row_sum = col_sum = 0;

for(int j = 0; j MAX ; j++)

{

if(matrix[i][i] == matrix[i][j])

{

row_sum ++;

}

else if(matrix[i][i] == matrix[j][i]

{

col_sum ++;

}

else

break;

}

if( col_sum == MAX || row_sum == MAX ) //说明有胜利的。

printf(“%d is the winner\n”,matrix[i][i]);

else

printf(“No winner\n”);

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/186491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-27 05:47
下一篇 2024-11-27 05:47

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 仓库管理系统代码设计Python

    这篇文章将详细探讨如何设计一个基于Python的仓库管理系统。 一、基本需求 在着手设计之前,我们首先需要确定仓库管理系统的基本需求。 我们可以将需求分为以下几个方面: 1、库存管…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29

发表回复

登录后才能评论