CSharp第二课(7/15)

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();
            }
        }
    }
}

 

你可能感兴趣的:(职场,休闲,五子棋改善版,数组应用)