c#日志(一)
2021-04-07 12:24
标签:pause 代码 表达式2 inf gen 声明 erp ret index 使用@字符时能让字符串不识别转义字符 算数运算符 逻辑运算符 异常捕获 5、do-while循环 变量 可以被重新赋值 int a=1; 7、for循环 8、类型转换 int number=0; 9、coutinue 10、三元表达式 11、结构 12、数组 15、方法 return 方法的调用方法 3、不管是实参还是形参,都是在内存中开辟了空间 4、out、ref、params 5、方法的重载 6、方法的递归 通过飞行棋来练习方法 GO !!!! using System; namespace _24飞行棋 } } } } case 2: c#日志(一) 标签:pause 代码 表达式2 inf gen 声明 erp ret index 原文地址:https://www.cnblogs.com/ClanSun/p/9110238.html
关于加法运算符更多的使用;
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(循环条件)
{
循环体;
}
语法:
do
{ 循环体
}
while(循环条件);
常量 不可被重新赋值 const int a=1;
6、枚举
语法:
[public] enum 枚举名
{
值1,
值2,
值3,
。。。。。。
}
public :访问修饰符。公共的,哪的可以访问
enum;声明枚举的关键字
枚举就是一个变量类型
使用: 枚举类型 变量名=枚举类型.值; eg:Gender gender=Gender.男;
语法:
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1一般为声明循环变量,记录循环的次数(int i=0;)
表达式2一般为循环条件(i表达式3一般为改变循环条件的代码,使循环条件终有一天不在成立(i++)
使用convert 进行转换 成功了就成功,失败了就抛异常
int number =int(double).Parse("");
int.TryParse 尝试着将一个字符串转变成Int类型
将字符串类型转换成枚举类型
QQstate state=(QQstate)Enum.Parse(typeof(QQState),s);
bool b=int.TryParse("123",out number)
转换成功 变为字符串
转换失败 变成0
立即结束本次循环,判断循环条件,
如果成立,进入下一次循环;否则,跳出循环
语法:
表达式1?表达式2:表达式3;
表达式一般为关系表达式
表达式1为True 表达式2
表达式2为Flase 表达式3
可以帮助我们一次性声明多个不同类型的变量
public struct 结构名
{
成员;
}
一次性存储多个相同类型的变量
语法:
数组类型[] 数组名 = new 数组类型 [数组长度];
int.MinValue int范围内的最小值
int.MaxValue int范围内的最大值
Array.Sort(nums);
只能针对数组做一个升序的排序
Array.Reverse(nums);
对数组进行反转
函数就是一堆代码进行重用
函数的语法
[public] static 返回值类型 方法名([参数列表])
{
方法体;
}
public: 访问修饰符,公开的,公共的,哪都能访问。
static:静态的
返回值类型:如果不需要写返回值,写void
方法名:
参数列表:完成这个方法所需要提供这个的条件,,小括号不能省略
1、在方法中返回要返回的值
2、立即结束本次方法
类名.方法名
******在某些情况下,类名可以省略,如果方法和Main()在一个类中,可以省略
、out参数。
如果返回不同类型的值时,这是使用OUT参数
、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法
ref参数要求方法外必须赋值
、params可变参数
在方法里数组int[]前面加params 可以将主函数里方法的数组难为数值
指的即是方法的名称相同,但参数不同(跟返回值没有关系)
方法自己调用自己
找出一个文件夹中所有的文件
游戏规则
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
{
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] //循环调用 轮流掷骰子
{
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
{ //数字作为下标赋值给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
{
int index2 = Landmine[i];
Maps[index2] = 2;
}
int[] pause = { 9,27,60,93};//暂停 3 〓
for (int i = 0; i
{
int index3 = pause[i];
Maps[index3] = 3;
}
int[] timetunnel = {20,25,45,63,72,88,90 };//时空隧道 4 卐
for (int i = 0; i
{
int index4 =timetunnel[i];
Maps[index4] = 4;
}
}
public static void DrawMap() //每格相遇的机制
{
Console.WriteLine("图例 の是幸运转盘 Ψ是地雷 〓是暂停 卐是时空隧道");
#region 第一横行
for (int i = 0; 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
{
for (int j = 0; 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
{
Console.WriteLine(DrawstringMap(i));
}
#endregion
#region 第三横行
for (int i = 70; 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;
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();
}
}
}