1、结构体:
(1)结构是值类型,而类是引用类型。
(2)与类不同,结构的实例化可以不使用new运算符。
(3)结构可以声明构造函数,但它们必须带参数。
(4)一个结构不能从另一个结构或类继承,而且不能作为一个类的基类,所有结构都直接继承自
System.ValueType,而后者继承System.Object。
(5)结构可以实现接口。
(6)结构可用作为null的类型,因而可向其赋null值。
2、数组:
数组常用的有一维二维,和交错数组,
例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApplication3
{
class Program
{
//□●
static void Main(string[] args)
{
//赋值
#region 初始化棋盘
int length = 20;
string[,] FiveChess = new string[length, length];
ConsoleColor[,] Colors = new ConsoleColor[length, length];
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length; j++)
{
FiveChess[i, j] = "□";
Colors[i, j] = ConsoleColor.White;
}
}
#endregion
bool mark = false;//落子双方顺序
bool Mark = true;
while (Mark)
{
Chessing(ref mark, FiveChess, Colors,ref Mark);
}
}
/// <summary>
/// 落子
/// </summary>
/// <param name="mark">双方落子顺序</param>
/// <param name="FiveChess">棋盘内容</param>
/// <param name="Colors">棋子色</param>
static void Chessing(ref bool mark, string[,] FiveChess, ConsoleColor[,] Colors,ref bool Mark)
{
ShowChess(FiveChess, Colors);
if (mark)
{
Console.Write("甲:");
}
else
{
Console.Write("乙:");
}
Console.WriteLine("请输入落子坐标(8,6):");
string location = Console.ReadLine();//8,6
string[] point = location.Split(',');
int x = int.Parse(point[0]) - 1;
int y = int.Parse(point[1]) - 1;
if (FiveChess[x, y] == "□")
{
if (mark)
{
Colors[x, y] = ConsoleColor.Red;
}
else
{
Colors[x, y] = ConsoleColor.Blue;
}
mark = !mark;
FiveChess[x, y] = "●";
}
else
{
Console.WriteLine("哥,这里不能落子");
Thread.Sleep(1000);
}
HengXiang(ref mark, FiveChess, Colors, ref Mark, x, y);
ZhongXiang(ref mark, FiveChess, Colors, ref Mark, x, y);
XieXiang_1(ref mark, FiveChess, Colors, ref Mark, x, y);
XieXiang_2(ref mark, FiveChess, Colors, ref Mark, x, y);
}
/// <summary>
/// 横向判断输赢
/// </summary>
/// <param name="mark">双方落子顺序</param>
/// <param name="FiveChess">棋盘内容</param>
/// <param name="Colors">棋子色</param>
/// <param name="Mark">退出标志</param>
/// <param name="x">落子横坐标</param>
/// <param name="y">落子纵坐标</param>
static void HengXiang(ref bool mark, string[,] FiveChess, ConsoleColor[,] Colors, ref bool Mark,int x,int y)
{
int Count = 0;
for (int i = y; i < y + 7; i++)
{
if (i < 20)
{
if (Colors[x, i] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
}
for (int j = y; j > y - 7; j--)
{
if (j > 0)
{
if (Colors[x, j] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
}
}
/// <summary>
/// 纵向判断输赢
/// </summary>
/// <param name="mark">双方落子顺序</param>
/// <param name="FiveChess">棋盘内容</param>
/// <param name="Colors">棋子色</param>
/// <param name="Mark">退出标志</param>
/// <param name="x">落子横坐标</param>
/// <param name="y">落子纵坐标</param>/// <summary>
static void ZhongXiang(ref bool mark, string[,] FiveChess, ConsoleColor[,] Colors, ref bool Mark, int x, int y)
{
int Count = 0;
for (int i = x; i < x + 7; i++)
{
if (i < 20)
{
if (Colors[i, y] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
}
for (int j = x; j > x - 7; j--)
{
if (j > 0)
{
if (Colors[j, y] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
}
}
/// <summary>
/// 左上右下判断输赢
/// </summary>
/// <param name="mark">双方落子顺序</param>
/// <param name="FiveChess">棋盘内容</param>
/// <param name="Colors">棋子色</param>
/// <param name="Mark">退出标志</param>
/// <param name="x">落子横坐标</param>
/// <param name="y">落子纵坐标</param>
static void XieXiang_1(ref bool mark, string[,] FiveChess, ConsoleColor[,] Colors, ref bool Mark, int x, int y)
{
int ZH = x;
int ZX = y;
int Count =0;
for (int i = x; i < x + 7; i++)
{
if (i < 20 && ZX < 20)
{
if (Colors[i, ZX] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
++ZX;
}
ZX = y;
for (int j = x; j > x - 7; j--)
{
if ( j>0&&ZX>0)
{
if (Colors[j, ZX] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
--ZX;
}
}
/// <summary>
/// 左下右上判断输赢
/// </summary>
/// <param name="mark">双方落子顺序</param>
/// <param name="FiveChess">棋盘内容</param>
/// <param name="Colors">棋子色</param>
/// <param name="Mark">退出标志</param>
/// <param name="x">落子横坐标</param>
/// <param name="y">落子纵坐标</param>
static void XieXiang_2(ref bool mark, string[,] FiveChess, ConsoleColor[,] Colors, ref bool Mark, int x, int y)
{
int ZH = x;
int ZX = y;
int Count = 0;
for (int i = x; i < x + 7; i++)
{
if (i < 20 && ZX >0)
{
if (Colors[i, ZX] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
--ZX;
}
ZX = y;
for (int j = x; j > x - 7; j--)
{
if (j > 0 && ZX <20)
{
if (Colors[j, ZX] == Colors[x, y])
{
Count++;
}
if (Count > 4 && Count < 6)
{
if (mark == true)
{
Console.WriteLine("乙赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
else
{
Console.WriteLine("甲赢了!");
Thread.Sleep(2000);
Mark = !Mark;
return;
}
}
}
++ZX;
}
}
/// <summary>
/// 显示棋盘
/// </summary>
/// <param name="FiveChess">棋盘数组</param>
static void ShowChess(string[,] FiveChess, ConsoleColor[,] Colors)
{
Console.Clear();
for (int i = 0; i < FiveChess.GetLength(0); i++)
{
for (int j = 0; j < FiveChess.GetLength(1); j++)
{
Console.ForegroundColor = Colors[i, j];
Console.Write(FiveChess[i, j]);
Console.ResetColor();
}
Console.WriteLine();
}
}
}
}