零基础c#学习day5【笔记】

1.方法的重载:

概念:方法的重载指的就是方法的名称相同,但是参数不同.
参数不同,分为两种情况;
第一种情况:如果参数类型相同,参数个数就不能相同;
第二种情况:如果参数个数相同,参数类型就不能相同;
***方法的重载跟返回值没有关系;

2.方法的递归:

方法自己调用自己
找出一个文件夹中的所有文件;

3.return 跳出结束方法 ,

只能跳出一次 且是当前方法,所以递归调用几次 就要跳出几次方法 类似于压栈出栈;

飞行棋

1.游戏头

显示在开始界面的内容;
给文字上颜色:Console.ForegroundColor = ConsoleColor.Yellow;

2.初始化地图

(加载地图所需要的资源):把数字变成字符串的过程就是初始化的过程,一般用int 形数组;

3.绘制地图

将数组地址对应的数字指向各种符号图形;

4.逻辑构造

写游戏的规则功能;

5.随机数

Random r = new Random();
int rnumber = r.Next(1,7);

6.完整代码

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

namespace _01飞行棋
{
    class Program
    {
        public static int[] _Map = new int[100];//地图
        public static int[] _PlayPos = new int[2];//玩家坐标
        public static string[] _PlayerName = new string[2];//玩家姓名


        static void Main(string[] args)
        {
            _PlayPos[0] = 0;
            _PlayPos[1] = 0;

            Program.GameShow();
            Program.PlayerName();
            Console.Clear();//清屏
            Program.GameShow();
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("{0}的飞机用A表示", _PlayerName[0]);
            Console.WriteLine("{0}的飞机用B表示", _PlayerName[1]);
            Program.InitailMap();
            Program.DrawMap();
           
            Program.PlayGame();



            Console.ReadKey();
        }

        /// <summary>
        /// 游戏头
        /// </summary>
        public static void GameShow()
        {
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("************************************************************");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("************************************************************");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("*************************飞行棋******************************");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("************************************************************");
            Console.ForegroundColor = ConsoleColor.DarkGray;
            Console.WriteLine("************************************************************");

        }



        /// <summary>
        ///  初始化地图
        /// </summary>
        public static void InitailMap()
        {

            int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘✔
            for (int i = 0; i < luckyturn.Length; i++)
            {
                _Map[luckyturn[i]] = 1;//把luckyturn中的数组坐标循环遍历到地图数组中;
            }

            int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷■
            for (int j = 0; j < landMine.Length; j++)
            {
                _Map[landMine[j]] = 2;
            }

            int[] pause = { 9, 27, 60, 93 };// 暂停▷
            for (int k = 0; k < pause.Length; k++)
            {
                _Map[pause[k]] = 3;
            }

            int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道☆
            for (int l = 0; l < timeTunnel.Length; l++)
            {
                _Map[timeTunnel[l]] = 4;
            }
        }

        /// <summary>
        /// 绘制地图重复代码的封装;
        /// </summary>
        public static string DemoDeawMap(int i)
        {
            string str = "";
            if (_PlayPos[0] == _PlayPos[1] && _PlayPos[0] == i)//如果玩家一的坐标等于玩家二的坐标;
            {
                Console.ForegroundColor = ConsoleColor.Red;
                str = "<>";
                return str; //玩家站一起打印尖括号;
            }
            else if (_PlayPos[0] == i)//玩家A在地图上;
            {
                Console.ForegroundColor = ConsoleColor.Green;
                str = "A";
                return str;
            }
            else if (_PlayPos[1] == i)//玩家B在地图上;
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                str = "B";
                return str;
            }

            else if (_Map[i] == 0)
            {
                Console.ForegroundColor = ConsoleColor.Gray;
                str = "□";
                return str; //在正常位置打印普通方块;
            }
            else if (_Map[i] == 1)
            {
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                str = "○";
                return str;//在幸运轮盘打印○;
            }
            else if (_Map[i] == 2)
            {
                Console.ForegroundColor = ConsoleColor.DarkCyan;

                str = "■";
                return str; //在地雷打印■;
            }
            else if (_Map[i] == 3)
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                str = "…";
                return str; //在暂停打印…;
            }
            else if (_Map[i] == 4)
            {
                Console.ForegroundColor = ConsoleColor.Magenta;
                str = "☆";
                return str;//在时空隧道打印☆;
            }
            return str;
        }


        /// <summary>
        /// 绘制地图
        /// </summary>
        public static void DrawMap()
        {
            Console.WriteLine("特殊区域: 幸运轮盘:○; 地雷:■; 暂停:…; 时空隧道:☆ ");
            for (int i = 0; i < 30; i++)//打印第一行地图;
            {
                string str = Program.DemoDeawMap(i);
                Console.Write(str);

            }//第一横行;

            for (int i = 30; i < 35; i++)
            {
                Console.WriteLine("");
                for (int j = 0; j < 29; j++)
                {
                    Console.Write("  ");
                }
                string str = Program.DemoDeawMap(i);
                Console.Write(str);
            }//第一竖行;

            Console.WriteLine("");

            for (int i = 64; i >= 35; i--)//第二横行;
            {
                string str = Program.DemoDeawMap(i);
                Console.Write(str);
            }//第二横行;

            for (int i = 65; i < 70; i++)
            {
                Console.WriteLine("");

                string str = Program.DemoDeawMap(i);
                Console.Write(str);
            }//第二竖行;

            Console.WriteLine("");

            for (int i = 70; i < 100; i++)
            {
                string str = Program.DemoDeawMap(i);
                Console.Write(str);
            }//第三横行;

            Console.WriteLine("");
        }

        /// <summary>
        /// 玩家姓名
        /// </summary>
        public static void PlayerName()
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("请输入玩家A的姓名:");
            _PlayerName[0] = Console.ReadLine();

            while (true)
            {

                if (_PlayerName[0] == "")
                {
                    Console.WriteLine("玩家A姓名不能为空,请重新输入");
                    _PlayerName[0] = Console.ReadLine();
                }
                else
                {
                    break;
                }
            }

            while (true)
            {
                Console.WriteLine("请输入玩家B的姓名:");
                _PlayerName[1] = Console.ReadLine();

                if (_PlayerName[1] == "")
                {
                    Console.WriteLine("玩家B姓名不能为空,请重新输入");
                }

                else if (_PlayerName[1] == _PlayerName[0])
                {
                    Console.WriteLine("玩家B姓名不能与玩家A相同,请重新输入");
                }
                else
                {
                    break;
                }

            }


        }

        /// <summary>
        /// 玩游戏
        /// </summary>
        public static void PlayGame()
        {
            while (_PlayPos[0] < 99 && _PlayPos[1] < 99)
            {
                Random r = new Random();
                int rnumber = r.Next(1,7);
                Console.WriteLine("玩家{0}按任意键开始掷骰子", _PlayerName[0]);
                Console.ReadKey(true);
                Console.WriteLine("玩家{0}掷出了{1}", _PlayerName[0],rnumber);
                _PlayPos[0] += rnumber;
                Program.ChangePos();//判断界限
                Console.ReadKey(true);
                Console.WriteLine("玩家{0}按任意键开始行动", _PlayerName[0]);
                Console.ReadKey(true);
                Console.Clear();//清屏
                Program.InitailMap();//初始化地图
                Program.DrawMap();//绘制地图



                if (_PlayPos[0] == _PlayPos[1]) //判断玩家A是否踩到玩家B;
                {
                    Console.WriteLine("玩家A踩到玩家B了,玩家B退六格");
                    Console.ReadKey(true);
                    _PlayPos[1] -= 6; //如果踩到了,玩家B就退六格;
                    Program.ChangePos();//判断界限
                    Console.Clear();//清屏
                    Program.InitailMap();//初始化地图
                    Program.DrawMap();//绘制地图
                }
                else//判断是否踩到其他方块;正常块;幸运轮盘:○; 地雷:■; 暂停:…; 时空隧道:☆
                {
                    switch (_Map[_PlayPos[0]]) //可能有0;1;2;3;4
                    {
                        case 0:
                            Console.WriteLine("玩家A踩到了正常块,无事发生");
                            break;
                        case 1:
                            Console.WriteLine("玩家A踩到了幸运轮盘,前进六格");
                            Console.ReadKey(true);
                            _PlayPos[0] += 6;
                            Program.ChangePos();//判断界限
                            Console.Clear();//清屏
                            Program.InitailMap();//初始化地图
                            Program.DrawMap();//绘制地图
                            break;
                        case 2:
                            Console.WriteLine("玩家A踩到了地雷,后退六格");
                            Console.ReadKey(true);
                            _PlayPos[0] -= 6;
                            Program.ChangePos();//判断界限
                            Console.Clear();//清屏
                            Program.InitailMap();//初始化地图
                            Program.DrawMap();//绘制地图
                            break;
                        case 3:
                            Console.WriteLine("玩家A踩到了暂停,暂停一回合");
                            Console.ReadKey(true);
                            Console.Clear();//清屏
                            Program.InitailMap();//初始化地图
                            Program.DrawMap();//绘制地图
                            break;
                        case 4:
                            Console.WriteLine("玩家A踩到了时空隧道,可以选择是否与玩家B交换位置");
                            Console.ReadKey(true);
                            Console.WriteLine("输入1交换位置,输入2轰炸对手");
                            Console.ReadKey(true);
                            while (true)
                            {
                                string button = "";
                                button = Console.ReadLine();
                                if (button == "1")
                                {
                                    Console.WriteLine("玩家A与B位置交换");
                                    Console.ReadKey(true);
                                    int temp = _PlayPos[0];
                                    _PlayPos[0] = _PlayPos[1];
                                    _PlayPos[1] = temp;
                                    Console.Clear();//清屏
                                    Program.InitailMap();//初始化地图
                                    Program.DrawMap();//绘制地图
                                    break;
                                }
                                else if (button == "2")
                                {
                                    Console.WriteLine("玩家A选择轰炸玩家B,玩家B退六格");
                                    Console.ReadKey(true);
                                    _PlayPos[1] -= 6;
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("选择错误清重新选择");
                                    Console.ReadKey(true);
                                    button = Console.ReadLine();
                                    continue;
                                }
                            }
                            break;
                    }
                }
                Console.WriteLine("玩家{0}行动完了", _PlayerName[0]);
                Console.ReadKey(true);







                Console.WriteLine("玩家{0}按任意键开始掷骰子", _PlayerName[1]);
                Console.ReadKey(true);
                Console.WriteLine("玩家{0}掷出了{1}", _PlayerName[1],rnumber);
                _PlayPos[1] += rnumber;
                Program.ChangePos();//判断界限
                Console.ReadKey(true);
                Console.WriteLine("玩家{0}按任意键开始行动", _PlayerName[1]);
                Console.ReadKey(true);
                Console.Clear();//清屏
                Program.InitailMap();//初始化地图
                Program.DrawMap();//绘制地图


                if (_PlayPos[1] == _PlayPos[0]) //判断玩家B是否踩到玩家A;
                {
                    Console.WriteLine("玩家B踩到玩家A了,玩家A退六格");
                    Console.ReadKey(true);
                    _PlayPos[0] -= 6; //如果踩到了,玩家A就退六格;
                    Program.ChangePos();//判断界限
                    Console.Clear();//清屏
                    Program.InitailMap();//初始化地图
                    Program.DrawMap();//绘制地图
                }
                else//判断是否踩到其他方块;正常块;幸运轮盘:○; 地雷:■; 暂停:…; 时空隧道:☆
                {
                    switch (_Map[_PlayPos[1]]) //可能有0;1;2;3;4
                    {
                        case 0:
                            Console.WriteLine("玩家B踩到了正常块,无事发生");
                            Console.ReadKey(true);
                            break;
                        case 1:
                            Console.WriteLine("玩家B踩到了幸运轮盘,前进六格");
                            Console.ReadKey(true);
                            _PlayPos[1] += 6;
                            Program.ChangePos();//判断界限
                            Console.Clear();//清屏
                            Program.InitailMap();//初始化地图
                            Program.DrawMap();//绘制地图
                            break;
                        case 2:
                            Console.WriteLine("玩家B踩到了地雷,后退六格");
                            Console.ReadKey(true);
                            _PlayPos[1] -= 6;
                            Program.ChangePos();//判断界限
                            Console.Clear();//清屏
                            Program.InitailMap();//初始化地图
                            Program.DrawMap();//绘制地图
                            break;
                        case 3:
                            Console.WriteLine("玩家B踩到了暂停,暂停一回合");
                            Console.ReadKey(true);
                            Console.Clear();//清屏
                            Program.InitailMap();//初始化地图
                            Program.DrawMap();//绘制地图
                            break;
                        case 4:
                            Console.WriteLine("玩家B踩到了时空隧道,可以选择是否与玩家A交换位置");
                            Console.ReadKey(true);
                            Console.WriteLine("输入1交换位置,输入2轰炸对方");
                            Console.ReadKey(true);
                            while (true)
                            {
                                string button = "";
                                button = Console.ReadLine();
                                if (button == "1")
                                {
                                    Console.WriteLine("玩家B与玩家A位置交换");
                                    Console.ReadKey(true);
                                    int temp = _PlayPos[0];
                                    _PlayPos[0] = _PlayPos[1];
                                    _PlayPos[1] = temp;
                                    Console.Clear();//清屏
                                    Program.InitailMap();//初始化地图
                                    Program.DrawMap();//绘制地图
                                    break;
                                }
                                else if (button == "2")
                                {
                                    Console.WriteLine("玩家B选择轰炸玩家A,玩家A退六格");
                                    Console.ReadKey(true);
                                    _PlayPos[0] -= 6;
                                    Program.ChangePos();//判断界限
                                    Console.Clear();//清屏
                                    Program.InitailMap();//初始化地图
                                    Program.DrawMap();//绘制地图
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("选择错误清重新选择");
                                    Console.ReadKey(true);
                                    button = Console.ReadLine();
                                    continue;
                                }
                            }
                            break;
                    }
                }
                Console.WriteLine("玩家{0}行动完了", _PlayerName[1]);
                Console.ReadKey(true);
            }


        }

        /// <summary>
        /// 界定玩家的范围不会到地图外面去;
        /// </summary>
        public static void ChangePos()
        {
            if(_PlayPos[0]<0)
            {
                _PlayPos[0] = 0;
            }
            else if(_PlayPos[0]>99)
            {
                _PlayPos[0] = 99;
            }
            if (_PlayPos[1] < 0)
            {
                _PlayPos[1] = 0;
            }
            else if (_PlayPos[1] > 99)
            {
                _PlayPos[1] = 99;
            }
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值