最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# L型棋牌覆蓋實現代碼與效果

 更新時間:2013年04月21日 22:06:31   作者:  
C# L型棋牌覆蓋實現代碼與效果,需要的朋友可以參考一下

//Main

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ChessBoard
{
    class Program
    {
        //誰能教教我英語啊,英語語法什么的錯誤之處還望海涵,
        static void Main(string[] args)
        {
            Function obj = new Function();

            Console.WriteLine("Please intput CheseBoard Size(2^size):");
            int size = (int)Math.Pow(2, Convert.ToInt32(Console.ReadLine()));
            if (size != 1)
            {
                ConsoleColor FC = Console.ForegroundColor;
                //string[] Color = { "Black" , "DarkBlue" , "DarkGreen" , "DarkCyan" , "Gray",
                //                   "DarkRed" , "DarkMagenta" , "DarkYellow" , "Red",
                //                   "DarkGray" , "Blue" , "Green" , "Cyan", "Magenta",
                //                   "Yellow" , "White"};
                string[,] Board = new string[size, size];

                //Do you know ?
                String[] Colors = ConsoleColor.GetNames(typeof(ConsoleColor));

                Console.WriteLine("please input special grid position (row and col):");
                int rows = Convert.ToInt32(Console.ReadLine());
                int cols = Convert.ToInt32(Console.ReadLine());

                obj.CheseBoard(Board, size, rows, cols);

                for (int r = 0; r < Board.GetLength(0); r++)
                {
                    for (int c = 0; c < Board.GetLength(1); c++)
                    {
                        int Value = Convert.ToInt32(Board[r, c].ToString());
                        if (Value > 0)
                        {
                            if (Value > 15)
                            {
                                Value %= 15;
                            }
                            if ((Value %= 15) == 0)
                            {
                                Value += 1;
                            }
                            Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), Colors[Value]);
                        }
                        Console.Write(Board[r, c] + "  ");
                        // Console.ForegroundColor = FC;
                        Console.ResetColor();
                    }
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("Bugs Bug ! ! !");
            }
            Console.ReadKey();
        }
    }
}


//Class

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ChessBoard
{
    class Function
    {
        /// <summary>
        /// 初始化L型骨牌
        /// </summary>
        private int LDominoNumberInitial = 0;
       

        /// <summary>
        ///  L型骨牌棋盤覆蓋
        /// </summary>
        /// <param name="Board"></param>
        /// <param name="size"></param>
        /// <param name="row"></param>
        /// <param name="col"></param>
        public void CheseBoard(string[,] Board, int size, int row, int col)
        {
            int InitialRow = 0;
            int InitialCol = 0;
            //不合法的輸入
            if (row > size - 1 || col > size - 1)
            {
                Console.WriteLine("Error !!!!!!!!!!");
            }
                //棋盤只有一個格子
            else if (size == 1)
            {
                Console.WriteLine(Board[row, col] = "-1");
            }
            else
            {
                Board[row, col] = "-1";
                DivisionBoard(Board, InitialRow, InitialCol, row, col, size);
            }
        }

        /// <summary>
        /// 大棋盤4分為小的棋盤,在沒有特殊位置的小棋盤中放L骨牌一角(作為特殊位置)
        /// 然后再次對每個小的4劃分...至只有一個格子.
        /// </summary>
        /// <param name="Board"></param>
        /// <param name="InitialRow"></param>
        /// <param name="InitialCol"></param>
        /// <param name="row"></param>
        /// <param name="col"></param>
        /// <param name="size"></param>
        public void DivisionBoard(string[,] Board, int InitialRow, int InitialCol, int row, int col, int size)
        {
            if (size == 1)
            {
                return;
            }
            //It's Important....全局的骨牌數的副本
            int LDominoNumber = LDominoNumberInitial++;
            //判斷特殊位置的界限值
            size /= 2;
            //left up
            if (row < InitialRow + size && col < InitialCol + size)
            {
                //特殊位置在里面
                DivisionBoard(Board, InitialRow, InitialCol, row, col, size);
            }
            else
            {
                //不在里面,在這里面放L骨牌的一角,為下次遞歸做準備..
                if (LDominoNumber < 10)
                {
                    Board[InitialRow + size - 1, InitialCol + size - 1] = "0" + LDominoNumber.ToString();
                }
                else
                {
                    Board[InitialRow + size - 1, InitialCol + size - 1] = LDominoNumber.ToString();
                }
                //Console.ForegroundColor = FC;
                //最左上角
                DivisionBoard(Board, InitialRow, InitialCol, InitialRow + size - 1, InitialCol + size - 1, size);
            }
            //right up
            if (row < InitialRow + size && col >= InitialCol + size)
            {
                DivisionBoard(Board, InitialRow, InitialCol + size, row, col, size);
            }
            else
            {
                if (LDominoNumber < 10)
                {
                    Board[InitialRow + size - 1, InitialCol + size] = "0" + LDominoNumber.ToString();
                }
                else
                {
                    Board[InitialRow + size - 1, InitialCol + size] = LDominoNumber.ToString();
                }
                DivisionBoard(Board, InitialRow, InitialCol + size, InitialRow + size - 1, InitialCol + size, size);
            }
            //left down
            if (row >= InitialRow + size && col < InitialCol + size)
            {
                DivisionBoard(Board, InitialRow + size, InitialCol, row, col, size);
            }
            else
            {
                if (LDominoNumber < 10)
                {
                    Board[InitialRow + size, InitialCol + size - 1] = "0" + LDominoNumber.ToString();
                }
                else
                {
                    Board[InitialRow + size, InitialCol + size - 1] = LDominoNumber.ToString();
                }
                DivisionBoard(Board, InitialRow + size, InitialCol, InitialRow + size, InitialCol + size - 1, size);
            }
            //right down
            if (row >= InitialRow + size && col >= InitialCol + size)
            {
                DivisionBoard(Board, InitialRow + size, InitialCol + size, row, col, size);
            }
            else
            {
                if (LDominoNumber < 10)
                {
                    Board[InitialRow + size, InitialCol + size] = "0" + LDominoNumber.ToString();
                }
                else
                {
                    Board[InitialRow + size, InitialCol + size] = LDominoNumber.ToString();
                }
                DivisionBoard(Board, InitialRow + size, InitialCol + size, InitialRow + size, InitialCol + size, size);
            }
        }
    }
}


//程序運行結果截圖

 

相關文章

  • C#/VB.NET實現在Word文檔中添加頁眉和頁腳

    C#/VB.NET實現在Word文檔中添加頁眉和頁腳

    頁眉位于文檔中每個頁面的頂部區(qū)域,常用于顯示文檔的附加信息;頁腳位于文檔中每個頁面的底部的區(qū)域,常用于顯示文檔的附加信息。今天這篇文章就將為大家展示如何以編程的方式在在?Word?文檔中添加頁眉和頁腳
    2023-03-03
  • C#操作DataGridView獲取或設置當前單元格的內容

    C#操作DataGridView獲取或設置當前單元格的內容

    這篇文章介紹了C#操作DataGridView獲取或設置當前單元格的內容,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#語言async?await工作原理示例解析

    C#語言async?await工作原理示例解析

    這篇文章主要為大家介紹了C#語言async?await工作原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • DataGridView控件顯示行號的正確代碼及分析

    DataGridView控件顯示行號的正確代碼及分析

    今天要用到DataGridView,想給它動態(tài)的顯示行號。于是在網上找了一下解決方法。結果發(fā)現了不少問題。然而就是這么一段有錯的代碼,幾乎充斥著整個互聯(lián)網,千篇一律的COPY,沒有一個人糾正
    2013-08-08
  • C#創(chuàng)建數據庫及導入sql腳本的方法

    C#創(chuàng)建數據庫及導入sql腳本的方法

    這篇文章主要介紹了C#創(chuàng)建數據庫及導入sql腳本的方法,涉及C#針對數據庫的創(chuàng)建、連接、導入等相關操作技巧,需要的朋友可以參考下
    2015-12-12
  • C#的Socket實現UDP協(xié)議通信示例代碼

    C#的Socket實現UDP協(xié)議通信示例代碼

    本篇文章主要介紹了C#的Socket實現UDP協(xié)議通信示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 使用C#編寫自己的區(qū)塊鏈挖礦算法

    使用C#編寫自己的區(qū)塊鏈挖礦算法

    這篇文章主要介紹了使用C#編寫自己的區(qū)塊鏈挖礦算法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • asp.net core項目mvc權限控制:分配權限

    asp.net core項目mvc權限控制:分配權限

    學習的最好方法就是動手去做,這里以開發(fā)一個普通的權限管理系統(tǒng)的方式來從零體驗和學習Asp.net Core。項目的整體規(guī)劃大致如下
    2017-02-02
  • DevExpress獲取TreeList可視區(qū)域節(jié)點集合的實現方法

    DevExpress獲取TreeList可視區(qū)域節(jié)點集合的實現方法

    這篇文章主要介紹了DevExpress獲取TreeList可視區(qū)域節(jié)點集合的實現方法,有一定實用價值,需要的朋友可以參考下
    2014-08-08
  • Path類 操作文件類的實例

    Path類 操作文件類的實例

    下面小編就為大家分享一篇Path類 操作文件類的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11

最新評論

青海省| 保定市| 永年县| 平乡县| 和龙市| 满洲里市| 灌阳县| 西和县| 奉新县| 马关县| 剑河县| 安丘市| 普兰县| 凭祥市| 安徽省| 福清市| 金阳县| 麻城市| 于田县| 巴青县| 雷波县| 新建县| 池州市| 太仆寺旗| 抚州市| 无锡市| 玉屏| 开平市| 大田县| 昆山市| 措勤县| 光山县| 涞水县| 湘乡市| 漳平市| 芦溪县| 锡林郭勒盟| 武功县| 南华县| 临海市| 云阳县|