用C#写出一个控制台五子棋程序。学习C#中遇到的比较有意思的程序。
2021-03-29 08:27
标签:循环 nbsp 界面 显示 line 四种 黑白 and 方便 首先,在Main方法中定义棋盘的行数列数,int hang,lie = 15;然后定义数组,string[ , ] qipan = new string[hangshu,lieshu]; 然后写一个下棋的方法 (其中用*代表白棋,#代表黑棋) static void Xiaqi (string[,] qipan,int hang,int lie,bool baizixia) { qipan[hang, lie] = baizixia ? "*":"#"; } ? "*":"#"; 这个是三目运算符,条件为真结果为问号后面的,条件为假,结果为冒号后面的,因为要判断白子黑子下棋的顺序,所以在方法中定义一个bool 值,再利用三目运算符进行判断。这样就很方便的判断是谁下了。 判断谁下之后要写一个与用户交互的方法,所以: static void Jiaohu(bool baizixia, out int hanghao , out int liehao)定义一个bool变量,因为只有黑白下两种情况,接下来要写一个if语句 { if(baizixia) { Console.WriteLine("请白子下,输入落子行号"); hanghao = int.Parse(Console.ReadLine()); Console.WriteLine("请白子下,输入落子列号"); liehao = int.Parse(Console.ReadLine()); } else { Console.WriteLine("请黑子下,输入落子行号"); hanghao = int.Parse(Console.ReadLine()); Console.WriteLine("请黑子下,输入落子列号"); liehao = int.Parse(Console.ReadLine()); } }这样用户交互就写完了。 然后我们要一个检查落子的方法,判断下过的地方不能再下了以及是否超出棋盘界限,用if语句判断 static bool Jianchaluozi(string[,] qipan, int hanghao, int liehao, int hangshu, int lieshu) { if (hanghao >= hangshu || liehao >= lieshu) else } 这样判断棋子位置的方法就写完了 然后做一个棋盘的界面,输出棋盘,利用for循环来控制棋盘行列的输出。 static void Xianshiqipan(string[,] qipan, int hangshu, int lieshu) 接下来要写判断胜负的方法,判断胜负有四种,一种是横行5个,一种是竖行5个,然后左斜行5个,右斜行5个。可以写四个if语句 static int Panduanshengfu(string[,] qipan, int hangshu, int lieshu) for (int i = 0; i { #region 横行 } #region 竖行 #region 右斜 #region 左斜 } } 接着让棋盘以+号输出, static void InitQipan(string[,] qipan, int hangshu, int lieshu) 最后写一个方法来控制游戏 static void GameManager(string[,] qipan, int hangshu, int lieshu) else 写完这个方法后在Main方法中调用这个game方法,就完成了。 这个五子棋盘是我在学习C#过程的第一个难度比较大的程序,在老师的指导下一步一步写了下来,在博客中复盘了一下,还是有许多不太懂的地方,这个五子棋盘融合了for循环,if语句,方法的调用,以及各种情况的方法书写。是一个比较完整的学习C#的作业。我会继续努力,将这个五子棋学好。 用C#写出一个控制台五子棋程序。学习C#中遇到的比较有意思的程序。 标签:循环 nbsp 界面 显示 line 四种 黑白 and 方便 原文地址:https://www.cnblogs.com/zzy476710623/p/9304223.html
{
Console.WriteLine("该位置已经不在棋盘内,请重新落子");
return false;
}
{
if (qipan[hanghao, liehao] == "+")//空位置
{
return true;//符合规则
}
else
{
Console.WriteLine("该位置已经有棋子了,请重新落子");
return false;//不符合规则
}
}
{
Console.WriteLine(" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14");
for (int i = 0; i {
Console.Write(i for (int j = 0; j {
Console.Write(qipan[i, j] + " ");
}
Console.WriteLine();
}
}
{
for (int j = 0; j {
if (j {
if (qipan[i, j] == "#" && qipan[i, j + 1] == "#" && qipan[i, j + 2] == "#" && qipan[i, j + 3] == "#" && qipan[i, j + 4] == "#")
{
//横行黑子赢
return -1;
}
if (qipan[i, j] == "*" && qipan[i, j + 1] == "*" && qipan[i, j + 2] == "*" && qipan[i, j + 3] == "*" && qipan[i, j + 4] == "*")
{
//横行白子赢
return 1;
}
#endregion
if (i {
if (qipan[i, j] == "#" && qipan[i + 1, j] == "#" && qipan[i + 2, j] == "#" && qipan[i + 3, j] == "#" && qipan[i + 4, j] == "#")
{
//竖行黑子赢
return -1;
}
if (qipan[i, j] == "*" && qipan[i + 1, j] == "*" && qipan[i + 2, j] == "*" && qipan[i + 3, j] == "*" && qipan[i + 4, j] == "*")
{
//竖行白子赢
return 1;
}
}
#endregion
if (i {
if (qipan[i, j] == "#" && qipan[i + 1, j + 1] == "#" && qipan[i + 2, j + 2] == "#" && qipan[i + 3, j + 3] == "#" && qipan[i + 4, j + 4] == "#")
{
//黑子赢
return -1;
}
if (qipan[i, j] == "*" && qipan[i + 1, j + 1] == "*" && qipan[i + 2, j + 2] == "*" && qipan[i + 3, j + 3] == "*" && qipan[i + 4, j + 4] == "*")
{
//白子赢
return 1;
}
}
#endregion
if (i = 4)
{
if (qipan[i, j] == "#" && qipan[i + 1, j - 1] == "#" && qipan[i + 2, j - 2] == "#" && qipan[i + 3, j - 3] == "#" && qipan[i + 4, j - 4] == "#")
{
//竖行黑子赢
return -1;
}
if (qipan[i, j] == "*" && qipan[i + 1, j - 1] == "*" && qipan[i + 2, j - 2] == "*" && qipan[i + 3, j - 3] == "*" && qipan[i + 4, j - 4] == "*")
{
//竖行白子赢
return 1;
}
}
#endregion
return 0;
}
{
for (int i = 0; i {
for (int j = 0; j {
qipan[i, j] = "+";
}
}
}
{
//首先初始化
InitQipan(qipan, hangshu, lieshu);
//显示棋盘
Xianshiqipan(qipan, hangshu, lieshu);
//循环控制轮流下棋
bool baizixia = true;
while (true)
{
//交互
int hanghao, liehao;
jiaohu(baizixia, out hanghao, out liehao);
//检查规则
if (Jianchaluozi(qipan, hanghao, liehao, hangshu, lieshu))
{
//下棋
Xiaqi(qipan, hanghao, liehao, baizixia);
//显示棋盘
Xianshiqipan(qipan, hangshu, lieshu);
//判断胜负
int shengfu = Panduanshengfu(qipan, hangshu, lieshu);
if (shengfu == -1)
{
Console.WriteLine("黑棋赢");
InitQipan(qipan, hangshu, lieshu);
Xianshiqipan(qipan, hangshu, lieshu);
}
else if (shengfu == 1)
{
Console.WriteLine("白棋赢");
InitQipan(qipan, hangshu, lieshu);
Xianshiqipan(qipan, hangshu, lieshu);
}
}
{
Console.WriteLine("落子不符合规则,请重新落子");
}
//交换棋手
baizixia = !baizixia;
}
}
文章标题:用C#写出一个控制台五子棋程序。学习C#中遇到的比较有意思的程序。
文章链接:http://soscw.com/index.php/essay/69429.html