c#日志(一)

使用@字符时能让字符串不识别转义字符
关于加法运算符更多的使用;
1、字符串相加 用来连接两个字符串 返回一个字符串
2、当一个字符串跟一个数字相加的话,首先把数字转变成字符串,然后连接起来结果是字符串

算数运算符
前++:先自加1,再运算;
后++:先运算,在自加1;

逻辑运算符
&& 逻辑与  都为真 才为真
|| 逻辑或  有一个为真,就为真 //在同一个式 逻辑与的优先级大于逻辑或
! 逻辑非中
逻辑表达式的结果同样是BOOL类型
&和&&的区别       &&判断错了一个后,就不接着判断
                  & 判断错了一个后,还需要判断


顺序结构:程序从Main函数进入,从上到下一行一行的执行,不会落下任何一行
分支结构:if if-else
选择结构:if else-if  switch-case
循环结构:while do-while for foreach  

异常捕获
1、让代码变得坚强一点 需要使用try-catch来进行异常捕获
语法:
try
{可能会出现异常的代码;
}catch
{异常后要执行的代码出现
}


switch-case   (判断闰年一般用 ((year%400==0)||(year%4==0&&year%100!=0))
语法:
switch(变量或者表达式的值)
{case "值1":要执行的代码;
 break;
 case "值2":要执行的代码;
 break;
 case "值3":要执行的代码;
 break;
 。。。。。。
 default:要执行的代码;
 break;
}


4、循环结构
while循环:
while(循环条件)
{
循环体;
}

5、do-while循环
语法:
do
{   循环体
}
while(循环条件);



 变量 可以被重新赋值 int a=1;
 常量 不可被重新赋值 const int a=1;


6、枚举
语法:
[public] enum 枚举名
{
 值1,
 值2,
 值3,
 。。。。。。
}
public :访问修饰符。公共的,哪的可以访问
enum;声明枚举的关键字
枚举就是一个变量类型
使用: 枚举类型 变量名=枚举类型.值;  eg:Gender gender=Gender.男;

7、for循环
语法:
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1一般为声明循环变量,记录循环的次数(int i=0;)
表达式2一般为循环条件(i<10)
表达式3一般为改变循环条件的代码,使循环条件终有一天不在成立(i++)

8、类型转换
使用convert 进行转换 成功了就成功,失败了就抛异常
int number =int(double).Parse("");
int.TryParse 尝试着将一个字符串转变成Int类型


将字符串类型转换成枚举类型
QQstate state=(QQstate)Enum.Parse(typeof(QQState),s);

int number=0;
bool b=int.TryParse("123",out number)
转换成功 变为字符串
转换失败 变成0

9、coutinue
立即结束本次循环,判断循环条件,
如果成立,进入下一次循环;否则,跳出循环

10、三元表达式
语法:
表达式1?表达式2:表达式3;
表达式一般为关系表达式
表达式1为True  表达式2
表达式2为Flase 表达式3

11、结构
可以帮助我们一次性声明多个不同类型的变量
public struct 结构名
{
  成员;
}

12、数组
一次性存储多个相同类型的变量
语法:
数组类型[] 数组名 = new  数组类型 [数组长度];
int.MinValue int范围内的最小值
int.MaxValue int范围内的最大值
Array.Sort(nums);
只能针对数组做一个升序的排序
Array.Reverse(nums);
对数组进行反转

15、方法
函数就是一堆代码进行重用
函数的语法
[public] static 返回值类型 方法名([参数列表])
{
  方法体;
}
public: 访问修饰符,公开的,公共的,哪都能访问。
static:静态的
返回值类型:如果不需要写返回值,写void
方法名:
参数列表:完成这个方法所需要提供这个的条件,,小括号不能省略

return
1、在方法中返回要返回的值
2、立即结束本次方法

方法的调用方法
类名.方法名
******在某些情况下,类名可以省略,如果方法和Main()在一个类中,可以省略

3、不管是实参还是形参,都是在内存中开辟了空间

4、out、ref、params
<1>、out参数。
如果返回不同类型的值时,这是使用OUT参数
<2>、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法
ref参数要求方法外必须赋值
<3>、params可变参数
      在方法里数组int[]前面加params   可以将主函数里方法的数组难为数值

5、方法的重载
   指的即是方法的名称相同,但参数不同(跟返回值没有关系)

6、方法的递归
  方法自己调用自己
  找出一个文件夹中所有的文件

通过飞行棋来练习方法


游戏规则

  1. 两名玩家AB轮流掷骰子,谁先走完100格谁i就胜利
  2. 期间遇到4种情况  暂停(停止一回合) 地雷(后退4格) 时空隧道(前进10格) 幸运转盘(两种选择 1交换位置 2轰炸)



GO !!!!

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

namespace _24飞行棋
{
    class Program
    {
        public static int[] Maps = new int[100];
        public static int[] playerpos = new int[2];
        static string[] playername = new string[2];
        static void Main(string[] args)                            //主函数
        {
            
            Gameshow();                                                 //调用函数Gameshow   画地图头
            #region 输入玩家姓名                                   //玩家姓名的输入
            Console.WriteLine("请输入玩家A的姓名");
           playername[0] = Console.ReadLine();
            while (playername[0]=="")
            {
                Console.WriteLine("玩家A的姓名不能为空");
                Console.WriteLine("请输入玩家A的姓名");
                playername[0] = Console.ReadLine();

            }
            Console.WriteLine("请输入玩家B的姓名");
            playername[1] = Console.ReadLine();
            while (playername[1] == ""||playername[1]==playername[0])
            {
                if (playername[1] == "")
                {
                    Console.WriteLine("玩家B的姓名不能为空,请重新输入");
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("玩家B的姓名不能和玩家A的姓名相同,请重新输入");
                    Console.ReadLine();
                }
                
                

            }
            #endregion  //清屏清屏
            Console.Clear();                                                                 //清屏
            Gameshow();                                                                     //画地图头
            Console.WriteLine("玩家{0}的姓名用A代替",playername[0]);  
            Console.WriteLine("玩家{0}的姓名用B代替", playername[1]);
            initailmap();                                                                      //调用方法  特殊地点
            DrawMap();                                                                      //画地图变化
            while (playerpos[0] < 99 && playerpos[1] < 99)               //循环调用  轮流掷骰子
            {
                playgame(0);
                playgame(1);
                
            }  //while
            Console.ReadKey();
        }
        public static void Gameshow()                                                       //游戏地图头
        {
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("\t\t\t\t********************");
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\t\t\t\t********************");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("\t\t\t\t********************");
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("\t\t\t\t***NM的飞行棋游戏***");
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("\t\t\t\t********************");
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("\t\t\t\t********************");
        }
        public static void initailmap()                                       //特定地点
        {
            int[] Luckyturn ={ 6, 23, 40, 55, 69, 83 };//幸运转盘;  1の
            for (int i = 0; i < Luckyturn.Length; i++)//做一个FOR循环,最先I为下标,把数字里的
            {                                          //数字作为下标赋值给Maps数组,再赋值为1
                int index1 = Luckyturn[i];
                Maps[index1] = 1; ;
            }
            int[] Landmine = { 5,13,17,33,38,50,64,80,94};//地雷;  2 Ψ
            for (int i = 0; i < Landmine.Length; i++)
            {
                int index2 = Landmine[i];
                Maps[index2] = 2;
            }
            int[] pause = { 9,27,60,93};//暂停                      3  〓
            for (int i = 0; i < pause.Length; i++)
            {
                int index3 = pause[i];
                Maps[index3] = 3;
            }
            int[] timetunnel = {20,25,45,63,72,88,90 };//时空隧道    4 卐
            for (int i = 0; i < timetunnel.Length; i++)
            {
                int index4 =timetunnel[i];
                Maps[index4] = 4;
            }
        }
        public static void DrawMap()                                                    //每格相遇的机制
        {
            Console.WriteLine("图例 の是幸运转盘 Ψ是地雷 〓是暂停 卐是时空隧道");
            #region 第一横行
            for (int i = 0; i < 30; i++)
            {
                if (playerpos[0] == playerpos[1] && playerpos[0] == i)
                {
                    Console.Write("<>");
                }
                else if (playerpos[0] == i)
                {
                    Console.Write("A");
                }
                else if (playerpos[1] == i)
                {
                    Console.Write("B");
                }
                else
                {
                    switch (Maps[i])
                    {
                        case 0:
                            Console.ForegroundColor = ConsoleColor.Gray;
                            Console.Write("□");
                            break;
                        case 1:
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.Write("の");  //幸运转盘
                            break;
                        case 2:
                            Console.ForegroundColor = ConsoleColor.DarkGreen;
                            Console.Write("Ψ");  //地雷
                            break;
                        case 3:
                            Console.ForegroundColor = ConsoleColor.Blue;
                            Console.Write("〓");  //暂停
                            break;
                        case 4:
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.Write("卐");  //时空隧道
                            break;
                    }
                }
            }
            #endregion
            Console.WriteLine();
            #region 第一竖行
            for (int i = 30; i < 35; i++)
                {
                    for (int j = 0; j < 29; j++)
                    {
                        Console.Write("  ");
                }
                    DrawstringMap(i);
                Console.Write(DrawstringMap(i));
                Console.WriteLine();
                }
            #endregion
            #region 第二横行
            for (int i = 64; i > 35; i--)
            {
                Console.Write(DrawstringMap(i));
            }
            #endregion
            #region 第二竖行
            for (int i = 65; i < 71; i++)
            {
                Console.WriteLine(DrawstringMap(i));
            }
            #endregion
            #region 第三横行
            for (int i = 70; i < 100; i++)
            {
                Console.Write(DrawstringMap(i)) ;
            }
            #endregion
            Console.WriteLine();
       }
        public static string DrawstringMap(int i)                               //特殊地点
        {
            #region 画图
            string str = "";
            if (playerpos[0] == playerpos[1] && playerpos[0] == i)
            {
                str ="<>";
            }
            else if (playerpos[0] == i)
            {
                str="A";
            }
            else if (playerpos[1] == i)
            {
                str="B";
            }
            else
            {
                switch (Maps[i])
                {
                    case 0:
                        Console.ForegroundColor = ConsoleColor.Gray;
                        str="□";
                        break;
                    case 1:
                        Console.ForegroundColor = ConsoleColor.Red;
                        str="の";  //幸运转盘
                        break;
                    case 2:
                        Console.ForegroundColor = ConsoleColor.DarkGreen;
                        str="Ψ";  //地雷
                        break;
                    case 3:
                        Console.ForegroundColor = ConsoleColor.Blue;
                        str="〓";  //暂停
                        break;
                    case 4:
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        str="卐";  //时空隧道
                        break;
                }
            }
            #endregion
            return str;
        }
        public static void playgame(int playnumber)                                                 //过程
        {
            Console.WriteLine("{0}按任意键开始掷骰子", playername[playnumber]);
            Console.ReadKey(true);Random n = new Random();
            int n1 = n.Next(1, 6);
            Console.WriteLine("{0}掷出了{1}", playername[playnumber],n1);

            playerpos[playnumber] += 4;
            Console.ReadKey(true);
            Console.WriteLine("{0}按任意键开始行动", playername[playnumber]);
            Console.ReadKey(true);
            Console.WriteLine("{0}行动完了", playername[playnumber]);
            Console.WriteLine(true);
            if (playerpos[playnumber] == playerpos[1-playnumber])
            {
                Console.WriteLine("玩家{0}踩到了玩家{1},玩家{1}推6格", playername[playnumber], playername[1- playnumber]);
                playerpos[1- playnumber] -= 6;
                Console.ReadKey(true);
            }
            else
            {
                switch (Maps[playerpos[playnumber]])
                {
                    case 0:
                        Console.WriteLine("玩家{0}踩到方块,安全", playername[1-playnumber]);
                        Console.ReadKey(true);
                        break;
                    case 1:
                        Console.WriteLine("玩家{0}踩到幸运转盘,请选择,1---交换位置,2---轰炸对方", playername[playnumber]);
                        string zhuanpan = Console.ReadLine();
                        if (zhuanpan == "1")
                        {
                            Console.WriteLine("玩家{0}选择交换位置", playername[playnumber]);
                            int temp = playerpos[playnumber];
                            playerpos[playnumber] = playerpos[1-playnumber];
                            playerpos[1-playnumber] = temp;
                            Console.WriteLine("交换完成");
                            Console.ReadKey(true);

                        }
                        else if (zhuanpan == "2")
                        {
                            Console.WriteLine("玩家{0}选择轰炸对方", playername[playnumber]);
                            playerpos[1] -= 6;
                            Console.WriteLine("轰炸完成");
                            Console.ReadKey(true);

                        }
                        else
                        {
                            Console.WriteLine("请输入正确数字");
                            zhuanpan = Console.ReadLine();
                        }
                        break;

                    case 2:
                        Console.WriteLine("玩家{0}踩到地雷,向后退6格", playername[playnumber]);
                        Console.ReadKey(true);
                        playerpos[0] -= 6;
                        Console.WriteLine("后退完成");
                        Console.ReadKey(true);
                        break;
                    case 3:
                        Console.WriteLine("玩家{0}遇到暂停", playername[playnumber]);
                        Console.ReadKey(true);
                        break;
                    case 4:
                        Console.WriteLine("玩家{0}遇到时空隧道", playername[playnumber]);
                        playerpos[playnumber] += 10;
                        Console.ReadKey(true);
                        break;
                } //switch
            }  //else
            Console.Clear();
            DrawMap();
            Gameshow();
            
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/ClanSun/p/9110238.html