C#飞行棋(新手简洁版)
我们要在主函数的顶部写一些全局静态字段 确保能在后续的静态方法中能够获取到这些值和修改
static int[] Maps = new int[100];static string[] PlayerName = new string[2];static int[] PlayerScore = new int[2];static bool[] Flags= new bool[2] {true,true };
static int[] Maps = new int[100]; 这段代码是设置一个整数类数组方便我们存储后续飞行棋的每个格子和格子所具有的特殊功能 以便于后续的取用 100 代表格子个位
static string[] PlayerName = new string[2];这是存储两个玩家的名字的字符串数组 方便后续调用两个玩家
static int[] PlayerScore = new int[2];这是用于存储两位玩家所处的格子位数方便后续获取位置并更改
static bool[] Flags= new bool[2] {true,true };存储两位玩家的回合是否进行 后续暂停回合需要用到
主函数
static void Main(string[] args){GameShow();Console.WriteLine("请输入玩家1的名字:");PlayerName[0] = Console.ReadLine();while (PlayerName[0] == ""){Console.WriteLine("玩家A的姓名不能为空,请重新输入");PlayerName[0] = Console.ReadLine();}Console.WriteLine("请输入玩家2的名字:");PlayerName[1] = Console.ReadLine();while (PlayerName[1] == ""){Console.WriteLine("玩家B的姓名不能为空,请重新输入");PlayerName[0] = Console.ReadLine();}if ( PlayerName[0] == PlayerName[1] ){Console.WriteLine("玩家名字不能相同!请重新输入玩家B的名字");PlayerName[1] = Console.ReadLine();}Console.WriteLine("按回车键开始");Console.ReadLine();Console.Clear();GameShow();Console.WriteLine("玩家A的名字为:{0},玩家B的名字为:{1}", PlayerName[0], PlayerName[1]);InitializeTheMap();FinallyMap();while (PlayerScore [0] < 99 && PlayerScore [1] < 99){for (int i = 0; i < 2; i++){if (Flags[i]){Play (i);}else{Flags[i] = true;}if (PlayerScore[i] == 99){Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("玩家{0}赢了玩家{1}", PlayerName[i], PlayerName[1 - i]);break;}}}Console.WriteLine("按回车键结束游戏");Console.ReadLine();}
GameShow();打印欢迎语
//
Console.WriteLine("请输入玩家1的名字:");
PlayerName[0] = Console.ReadLine();
while (PlayerName[0] == "")
{
Console.WriteLine("玩家A的姓名不能为空,请重新输入");
PlayerName[0] = Console.ReadLine();
}
Console.WriteLine("请输入玩家2的名字:");
PlayerName[1] = Console.ReadLine();
while (PlayerName[1] == "")
{
Console.WriteLine("玩家B的姓名不能为空,请重新输入");
PlayerName[0] = Console.ReadLine();
}
if ( PlayerName[0] == PlayerName[1] )
{
Console.WriteLine("玩家名字不能相同!请重新输入玩家B的名字");
PlayerName[1] = Console.ReadLine();
}
Console.WriteLine("按回车键开始");
Console.ReadLine();
Console.Clear();
// 这段代码是用来输入玩家姓名
InitializeTheMap();设置上面的Maps整数数组的格子类型
FinallyMap();方法 打印格子
//
while (PlayerScore [0] < 99 && PlayerScore [1] < 99)
{
for (int i = 0; i < 2; i++) 两位玩家
{
if (Flags[i])// 上面的Flags已经默认了此回合执行true
{
Play (i);
}
else 上一回合不执行后,下次回合正常执行需要改为true
{
Flags[i] = true;
}
if (PlayerScore[i] == 99)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("玩家{0}赢了玩家{1}", PlayerName[i], PlayerName[1 - i]);
break;
}
}
}
// 这段代码用来判断回合是否暂停
欢迎语方法代码
static void GameShow()
{
//Console.ForegroundColor控制台字体颜色
//Console.BackgroundColor控制台背景颜色
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("************************************");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("************************************");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("************************************");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("*************飞行棋游戏1.4*************");
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("************************************");
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine("************************************");
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.WriteLine("************************************");
Console.ForegroundColor = ConsoleColor.White;
}
static Random random = new Random(); 这是用来重置每次的地图每次地图需要不同
初始化地图
static void InitializeTheMap(){int[] LuckDong = new int[5]; // 幸运◎int[] landMine = new int[5];// 地雷★int l = 0;int[] bomb = new int[5]; // 暂停▲int b = 0;int[] TimeTunnel = new int[5]; // 时光隧穿卍int t = 0;for (int i = 0; i < 20; i++){int num = random.Next(1, 101);Thread.Sleep(15);if (i < 5){LuckDong[i] = num;}else if (i < 10){landMine[l++] = num;}else if (i < 15){bomb[b++] = num;}else if (i < 20){TimeTunnel[t++] = num;}}for (int i = 0; i < LuckDong .Length; i++)Maps[LuckDong [i]] = 1;for (int i = 0; i < landMine.Length; i++)Maps[landMine[i]] = 2;for (int i = 0; i < bomb.Length; i++)Maps[bomb[i]] = 3;for (int i = 0; i < TimeTunnel.Length; i++)Maps[TimeTunnel[i]] = 4;}
//
int[] LuckDong = new int[5]; // 幸运◎
int[] landMine = new int[5];// 地雷★
int l = 0;
int[] bomb = new int[5]; // 暂停▲
int b = 0;
int[] TimeTunnel = new int[5]; // 时光隧穿卍
int t = 0;
for (int i = 0; i < 20; i++)
{
int num = random.Next(1, 101);
Thread.Sleep(15);
if (i < 5)
{
LuckDong[i] = num;
}
else if (i < 10)
{
landMine[l++] = num;
}
else if (i < 15)
{
bomb[b++] = num;
}
else if (i < 20)
{
TimeTunnel[t++] = num;
}
}
// 四种特殊类型的格子用随机数生成所在格子的位置
//
for (int i = 0; i < LuckDong .Length; i++)
Maps[LuckDong [i]] = 1;
for (int i = 0; i < landMine.Length; i++)
Maps[landMine[i]] = 2;
for (int i = 0; i < bomb.Length; i++)
Maps[bomb[i]] = 3;
for (int i = 0; i < TimeTunnel.Length; i++)
Maps[TimeTunnel[i]] = 4;
// 同种格子设置同种的值 位置随机且不同 分别for循环放入Maps数组中 方便后续打印
设置单个格子所代表的图案
static string DrawStringMap(int i){string str = "";if (PlayerScore[0] == PlayerScore[1] && PlayerScore[0] == i){str = "<>";}else if (PlayerScore[0] == i){str = "A";}else if (PlayerScore[1] == i){str = "B";}else{switch (Maps[i]){case 0:Console.ForegroundColor = ConsoleColor.Yellow;str = "□";break;case 1:Console.ForegroundColor = ConsoleColor.Green;str = "◎";break;case 2:Console.ForegroundColor = ConsoleColor.Red;str = "☆";break;case 3:Console.ForegroundColor = ConsoleColor.Blue;str = "▲";break;case 4:Console.ForegroundColor = ConsoleColor.DarkCyan;str = "卐";break;}}return str;}
static string DrawStringMap(int i)
{
string str = "";
if (PlayerScore[0] == PlayerScore[1] && PlayerScore[0] == i)
{
str = "<>"; 起始时两个格子在同一起点用<>表示
}
else if (PlayerScore[0] == i)
{
str = "A";后续用A表示玩家一
}
else if (PlayerScore[1] == i)
{
str = "B";玩家二
}
else
{
switch (Maps[i])
{
case 0:
Console.ForegroundColor = ConsoleColor.Yellow;
str = "□";没有作用的空白格子
break;
case 1:
Console.ForegroundColor = ConsoleColor.Green;
str = "◎";幸运格子
break;
case 2:
Console.ForegroundColor = ConsoleColor.Red;
str = "☆";炸弹
break;
case 3:
Console.ForegroundColor = ConsoleColor.Blue;
str = "▲";暂停
break;
case 4:
Console.ForegroundColor = ConsoleColor.DarkCyan;
str = "卐";时空隧道
break;
}
}
return str;
}
打印全部地图
static void FinallyMap()
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("图例:幸运轮盘:◎\t地雷:☆\t暂停:▲\t时空隧道:卐");
Console.WriteLine("玩家A的名字为:{0},玩家B的名字为:{1}", PlayerName[0], PlayerName[1]);
Console.WriteLine(PlayerName[0] + " " + PlayerScore[0] + " " + PlayerName[1] + " " + PlayerScore[1]);
Console.ForegroundColor = ConsoleColor.White;
// 第一横行
for (int i = 0; i < 30; i++)
{
Console.Write(DrawStringMap(i));
Console.ForegroundColor = ConsoleColor.White;
}
Console.WriteLine();
// 第一竖行
for (int i = 30; i < 35; i++)
{
for (int j = 0; j <= 28; j++)
{
Console.Write(" ");
}
Console.Write(DrawStringMap(i));
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
}
// 第二横行
for (int i = 64; i >= 35; i--)
{
Console.Write(DrawStringMap(i));
Console.ForegroundColor = ConsoleColor.White;
}
Console.WriteLine();
// 第二竖行
for (int i = 65; i <= 69; i++)
{
Console.WriteLine(DrawStringMap(i));
Console.ForegroundColor = ConsoleColor.White;
}
// 第三横行
for (int i = 70; i <= 99; i++)
{
Console.Write(DrawStringMap(i));
Console.ForegroundColor = ConsoleColor.White;
}
Console.WriteLine();
}
static void FinallyMap(){Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("图例:幸运轮盘:◎\t地雷:☆\t暂停:▲\t时空隧道:卐");Console.WriteLine("玩家A的名字为:{0},玩家B的名字为:{1}", PlayerName[0], PlayerName[1]);Console.WriteLine(PlayerName[0] + " " + PlayerScore[0] + " " + PlayerName[1] + " " + PlayerScore[1]);Console.ForegroundColor = ConsoleColor.White;// 第一横行for (int i = 0; i < 30; i++){Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}Console.WriteLine();// 第一竖行for (int i = 30; i < 35; i++){for (int j = 0; j <= 28; j++){Console.Write(" "); }Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;Console.WriteLine();}// 第二横行for (int i = 64; i >= 35; i--){Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}Console.WriteLine();// 第二竖行for (int i = 65; i <= 69; i++){Console.WriteLine(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}// 第三横行for (int i = 70; i <= 99; i++){Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}Console.WriteLine();}
掷骰子的方法
static void Play(int num )
{
Random random = new Random();
int dice = random.Next(1, 7);
Console.WriteLine("按回车键开始掷骰子");
Console.ReadLine();
Console.WriteLine("{0}掷出了{1}点", PlayerName[num], dice);
PlayerScore[num] += dice;
ChangePlayerScore();
Console.WriteLine("按回车键继续");
Console.ReadLine();
上述代码用于获取随机掷骰子的点数
‘
’
if (PlayerScore[num] == PlayerScore[1-num ])
{
Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}后退6格", PlayerName[num], PlayerName[1 - num], PlayerName[1 - num]);
PlayerScore[1 - num] -= 6;
ChangePlayerScore();该方法是用来防止玩家位置出现在地图外
Console.WriteLine("按回车键继续");
Console.ReadLine();
}
两种情况
else
{
switch (Maps[PlayerScore[num]])
{
case 0:
{
Console.WriteLine("玩家{0}踩到了什么,无事发生", PlayerName[num]);
break;
}
case 1:
{
Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerName[num]);
string input = Console.ReadLine();
while (true)
{
if (input == "1")
{
Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerName[num], PlayerName[1 - num]); ;
Console.ReadKey();
int temp = PlayerScore[num];
PlayerScore[num] = PlayerScore[1 - num];
PlayerScore[1 - num] = temp;
Console.WriteLine("交换完成!!!按任意键继续游戏!!!");
Console.ReadKey();
break;
}
else if (input == "2")
{
Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}后退6格", PlayerName[num], PlayerName[1 - num], PlayerName[1 - num]);
PlayerScore [1 - num] -= 6;
ChangePlayerScore();
Console.ReadKey();
break;
}
else
{
Console.WriteLine("只能输入1或者2 1--交换位置 2--轰炸对方");
input = Console.ReadLine();
}
}
break;
}
case 2:
Console.WriteLine("玩家{0}踩到了地雷,后退6格", PlayerName[num]);
Console.ReadKey();
PlayerScore [num] -= 6;
ChangePlayerScore();
break;
case 3:
Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerName[num]);
Flags[num] = false;
Console.ReadKey();
break;
case 4:
Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerName[num]);
PlayerScore [num] += 10;
ChangePlayerScore();
Console.ReadKey();
break;
}
}
Console .Clear();
FinallyMap();
}
static void Play(int num )
{Random random = new Random();int dice = random.Next(1, 7);Console.WriteLine("按回车键开始掷骰子");Console.ReadLine();Console.WriteLine("{0}掷出了{1}点", PlayerName[num], dice);PlayerScore[num] += dice;ChangePlayerScore();Console.WriteLine("按回车键继续");Console.ReadLine();if (PlayerScore[num] == PlayerScore[1-num ]){Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}后退6格", PlayerName[num], PlayerName[1 - num], PlayerName[1 - num]);PlayerScore[1 - num] -= 6;ChangePlayerScore();Console.WriteLine("按回车键继续");Console.ReadLine();}else{switch (Maps[PlayerScore[num]]){case 0:{Console.WriteLine("玩家{0}踩到了什么,无事发生", PlayerName[num]);break;}case 1:{Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerName[num]);string input = Console.ReadLine();while (true){if (input == "1"){Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerName[num], PlayerName[1 - num]); ;Console.ReadKey();int temp = PlayerScore[num];PlayerScore[num] = PlayerScore[1 - num];PlayerScore[1 - num] = temp;Console.WriteLine("交换完成!!!按任意键继续游戏!!!");Console.ReadKey();break;}else if (input == "2"){Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}后退6格", PlayerName[num], PlayerName[1 - num], PlayerName[1 - num]);PlayerScore [1 - num] -= 6;ChangePlayerScore();Console.ReadKey();break;}else{Console.WriteLine("只能输入1或者2 1--交换位置 2--轰炸对方");input = Console.ReadLine();}}break;}case 2:Console.WriteLine("玩家{0}踩到了地雷,后退6格", PlayerName[num]);Console.ReadKey();PlayerScore [num] -= 6;ChangePlayerScore();break;case 3:Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerName[num]);Flags[num] = false;Console.ReadKey();break;case 4:Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerName[num]);PlayerScore [num] += 10;ChangePlayerScore();Console.ReadKey();break;}}Console .Clear();FinallyMap();}
FinallyMap(); 在玩的方法中由于玩家位置发生改变所以要重新打印一次地图
static void ChangePlayerScore()
{
for (int i = 0; i < 2; i++)
{
if (PlayerScore [i] < 0 )
{
PlayerScore[i]= 0;
}
if (PlayerScore[i] > 99 )
{
PlayerScore [i] = 99;
}
}
}
这方法是用来判断玩家位置是否出界如果出界默认在段端点
完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace 飞行棋游戏
{internal class Program{static int[] Maps = new int[100];static string[] PlayerName = new string[2];static int[] PlayerScore = new int[2];static bool[] Flags= new bool[2] {true,true };static void Main(string[] args){GameShow();Console.WriteLine("请输入玩家1的名字:");PlayerName[0] = Console.ReadLine();while (PlayerName[0] == ""){Console.WriteLine("玩家A的姓名不能为空,请重新输入");PlayerName[0] = Console.ReadLine();}Console.WriteLine("请输入玩家2的名字:");PlayerName[1] = Console.ReadLine();while (PlayerName[1] == ""){Console.WriteLine("玩家B的姓名不能为空,请重新输入");PlayerName[0] = Console.ReadLine();}if ( PlayerName[0] == PlayerName[1] ){Console.WriteLine("玩家名字不能相同!请重新输入玩家B的名字");PlayerName[1] = Console.ReadLine();}Console.WriteLine("按回车键开始");Console.ReadLine();Console.Clear();GameShow();Console.WriteLine("玩家A的名字为:{0},玩家B的名字为:{1}", PlayerName[0], PlayerName[1]);InitializeTheMap();FinallyMap();while (PlayerScore [0] < 99 && PlayerScore [1] < 99){for (int i = 0; i < 2; i++){if (Flags[i]){Play (i);}else{Flags[i] = true;}if (PlayerScore[i] == 99){Console.ForegroundColor = ConsoleColor.Blue;Console.WriteLine("玩家{0}赢了玩家{1}", PlayerName[i], PlayerName[1 - i]);break;}}}Console.WriteLine("按回车键结束游戏");Console.ReadLine();}static void GameShow(){//Console.ForegroundColor控制台字体颜色//Console.BackgroundColor控制台背景颜色Console.ForegroundColor = ConsoleColor.Yellow;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.White;Console.WriteLine("*************飞行棋游戏1.4*************");Console.ForegroundColor = ConsoleColor.Cyan;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.DarkMagenta;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.DarkBlue;Console.WriteLine("************************************");Console.ForegroundColor = ConsoleColor.White;}static Random random = new Random();static void InitializeTheMap(){int[] LuckDong = new int[5]; // 幸运◎int[] landMine = new int[5];// 地雷★int l = 0;int[] bomb = new int[5]; // 暂停▲int b = 0;int[] TimeTunnel = new int[5]; // 时光隧穿卍int t = 0;for (int i = 0; i < 20; i++){int num = random.Next(1, 101);Thread.Sleep(15);if (i < 5){LuckDong[i] = num;}else if (i < 10){landMine[l++] = num;}else if (i < 15){bomb[b++] = num;}else if (i < 20){TimeTunnel[t++] = num;}}for (int i = 0; i < LuckDong .Length; i++)Maps[LuckDong [i]] = 1;for (int i = 0; i < landMine.Length; i++)Maps[landMine[i]] = 2;for (int i = 0; i < bomb.Length; i++)Maps[bomb[i]] = 3;for (int i = 0; i < TimeTunnel.Length; i++)Maps[TimeTunnel[i]] = 4;}static void FinallyMap(){Console.ForegroundColor = ConsoleColor.Green;Console.WriteLine("图例:幸运轮盘:◎\t地雷:☆\t暂停:▲\t时空隧道:卐");Console.WriteLine("玩家A的名字为:{0},玩家B的名字为:{1}", PlayerName[0], PlayerName[1]);Console.WriteLine(PlayerName[0] + " " + PlayerScore[0] + " " + PlayerName[1] + " " + PlayerScore[1]);Console.ForegroundColor = ConsoleColor.White;// 第一横行for (int i = 0; i < 30; i++){Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}Console.WriteLine();// 第一竖行for (int i = 30; i < 35; i++){for (int j = 0; j <= 28; j++){Console.Write(" "); }Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;Console.WriteLine();}// 第二横行for (int i = 64; i >= 35; i--){Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}Console.WriteLine();// 第二竖行for (int i = 65; i <= 69; i++){Console.WriteLine(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}// 第三横行for (int i = 70; i <= 99; i++){Console.Write(DrawStringMap(i));Console.ForegroundColor = ConsoleColor.White;}Console.WriteLine();}static string DrawStringMap(int i){string str = "";if (PlayerScore[0] == PlayerScore[1] && PlayerScore[0] == i){str = "<>";}else if (PlayerScore[0] == i){str = "A";}else if (PlayerScore[1] == i){str = "B";}else{switch (Maps[i]){case 0:Console.ForegroundColor = ConsoleColor.Yellow;str = "□";break;case 1:Console.ForegroundColor = ConsoleColor.Green;str = "◎";break;case 2:Console.ForegroundColor = ConsoleColor.Red;str = "☆";break;case 3:Console.ForegroundColor = ConsoleColor.Blue;str = "▲";break;case 4:Console.ForegroundColor = ConsoleColor.DarkCyan;str = "卐";break;}}return str;}static void Play(int num ){Random random = new Random();int dice = random.Next(1, 7);Console.WriteLine("按回车键开始掷骰子");Console.ReadLine();Console.WriteLine("{0}掷出了{1}点", PlayerName[num], dice);PlayerScore[num] += dice;ChangePlayerScore();Console.WriteLine("按回车键继续");Console.ReadLine();if (PlayerScore[num] == PlayerScore[1-num ]){Console.WriteLine("玩家{0}踩到了玩家{1},玩家{2}后退6格", PlayerName[num], PlayerName[1 - num], PlayerName[1 - num]);PlayerScore[1 - num] -= 6;ChangePlayerScore();Console.WriteLine("按回车键继续");Console.ReadLine();}else{switch (Maps[PlayerScore[num]]){case 0:{Console.WriteLine("玩家{0}踩到了什么,无事发生", PlayerName[num]);break;}case 1:{Console.WriteLine("玩家{0}踩到了幸运轮盘,请选择 1--交换位置 2--轰炸对方", PlayerName[num]);string input = Console.ReadLine();while (true){if (input == "1"){Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerName[num], PlayerName[1 - num]); ;Console.ReadKey();int temp = PlayerScore[num];PlayerScore[num] = PlayerScore[1 - num];PlayerScore[1 - num] = temp;Console.WriteLine("交换完成!!!按任意键继续游戏!!!");Console.ReadKey();break;}else if (input == "2"){Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{2}后退6格", PlayerName[num], PlayerName[1 - num], PlayerName[1 - num]);PlayerScore [1 - num] -= 6;ChangePlayerScore();Console.ReadKey();break;}else{Console.WriteLine("只能输入1或者2 1--交换位置 2--轰炸对方");input = Console.ReadLine();}}break;}case 2:Console.WriteLine("玩家{0}踩到了地雷,后退6格", PlayerName[num]);Console.ReadKey();PlayerScore [num] -= 6;ChangePlayerScore();break;case 3:Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerName[num]);Flags[num] = false;Console.ReadKey();break;case 4:Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerName[num]);PlayerScore [num] += 10;ChangePlayerScore();Console.ReadKey();break;}}Console .Clear();FinallyMap();}static void ChangePlayerScore(){for (int i = 0; i < 2; i++){if (PlayerScore [i] < 0 ){PlayerScore[i]= 0;}if (PlayerScore[i] > 99 ){PlayerScore [i] = 99;}}}}
}
相关文章:
C#飞行棋(新手简洁版)
我们要在主函数的顶部写一些全局静态字段 确保能在后续的静态方法中能够获取到这些值和修改 static int[] Maps new int[100];static string[] PlayerName new string[2];static int[] PlayerScore new int[2];static bool[] Flags new bool[2] {true,true }; static int[]…...
【OpenCV】图像转换
理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用 2D离散傅里叶变换(DFT) 查找频域。快速算法称为 快速傅立叶变换(FFT) 用于计算DFT。 Numpy中的傅立叶变换 首先,我们将看到如何使用Numpy查…...
力扣 重排链表-143
重排链表-143 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next)…...
【Kubernetes理论篇】容器集群管理系统Kubernetes(K8S)
Kubernetes集群部署基本管理实战 这么好的机会,还在等什么! 01、Kubernetes 概述 K8S是什么 K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,写”。不如整个缩写 K8s 作为缩写的结果…...
Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令
Kubernetes(简称 K8s)作为一种开源的容器编排工具,已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中,熟悉常用操作对于高效地管理集群资源至关重要。本文将详…...
爬虫基础之Web网页基础
网页的组成 网页可以分为三大部分–HTML、CSS 和 JavaScript。如果把网页比作一个人,那么 HTML 相当于骨架、JavaScript 相当于肌肉、CSS 相当于皮肤,这三者结合起来才能形成一个完善的网页。下面我们分别介绍一下这三部分的功能。 HTML HTML(Hypertext…...
k8s, deployment
控制循环(control loop) for {实际状态 : 获取集群中对象X的实际状态(Actual State)期望状态 : 获取集群中对象X的期望状态(Desired State)if 实际状态 期望状态{什么都不做} else {执行编排动作…...
使用ensp搭建OSPF+BGP和静态路由,底层PC使用dhcp,实现PC互通
1.4种方式,实现PC2可以互通底层的所有设备 OSPF:OSPF是一种用于互联网协议网络的链路状态路由协议 BGP:是一种用于互联网上进行路由和可达性信息传递的外部网关协议(EGP) 静态路由: 静态路由是一种路由方…...
TÜLU 3: Pushing Frontiers in Open Language Model Post-Training
基本信息 📝 原文链接: https://arxiv.org/abs/2411.15124👥 作者: Nathan Lambert, Jacob Morrison, Valentina Pyatkin, Shengyi Huang, Hamish Ivison, Faeze Brahman, Lester James V. Miranda, Alisa Liu, Nouha Dziri, Shane Lyu, Yuling Gu, Sau…...
深入解读 MySQL EXPLAIN 与索引优化实践
MySQL 是当今最流行的关系型数据库之一,为了提升查询性能,合理使用 EXPLAIN 工具和优化索引显得尤为重要。本文将结合实际示例,探讨如何利用 EXPLAIN 分析查询执行计划,并分享索引优化的最佳实践。 一、EXPLAIN 工具简介 EXPLAIN …...
Flume——进阶(agent特性+三种结构:串联,多路复用,聚合)
目录 agent特性ChannelSelector描述: SinkProcessor描述: 串联架构结构图解定义与描述配置示例Flume1(监测端node1)Flume3(接收端node3)启动方式 复制和多路复用结构图解定义描述配置示例node1node2node3启…...
ragflow连ollama时出现的Bug
ragflow和ollama连接后,已经添加了两个模型但是ragflow仍然一直warn:Please add both embedding model and LLM in Settings > Model providers firstly.这里可能是我一开始拉取的镜像容器太小,容不下当前添加的模型,导…...
基于centos7.7编译Redis6.0
背景: OS:CentOs 7.7 Redis: 6.0.6 编译构建报错如下: In file included from server.c:30:0: server.h:1044:5: error: expected specifier-qualifier-list before ‘_Atomic’_Atomic unsigned int lruclock; /* Clock for LRU eviction …...
uni-app项目无法在Android Studio模拟器上运行
目录 1 问题描述2 尝试解决3 引发原因4 解决方法4.1 换用 MuMu 模拟器 5 结语 1 问题描述 在使用 uni-app 开发 Pad 端 App 时,初始化项目后打算先运行一下确保初始化正常。打开 Android Studio 模拟器后,然后在 HbuilderX 中选择使用 App 标准基座 运…...
第一部分:Linux系统(基础及命令)
Linux操作系统的实操性非常强,纯操作,不适用于日常的办公使用 1.初始Linux 1.1 操作系统概述 1.1.1 了解OS的作用 OS:是计算机软件的一种,主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬…...
No module named ‘_ssl‘ No module named ‘_ctypes‘
如果你使用的是基于 yum 的 Linux 发行版(例如 CentOS、RHEL、Fedora),安装 libc6-dev 的方式稍有不同。在这些系统中,通常对应的包是 glibc-devel。 No module named ‘_ctypes’ 使用 yum 安装 glibc-devel 更新系统的软件包列…...
【QT】编写第一个 QT 程序 对象树 Qt 编程事项 内存泄露问题
目录 1. 编写第一个 QT 程序 1.1 使用 标签 实现 🐇 图形化界面实现 🐇 纯代码形式实现 1.2 使用 按钮 实现 🐋 图形化界面实现 🐋 纯代码形式实现 1.3 使用 编辑框 实现 🥝 图形化界面实现 ᾕ…...
VTK编程指南<六>:VTK可视化管线与渲染详解
1、VTK渲染引擎 回顾前几章节的RenderCylinder示例 可以找到以下的类: vtkProp; ytkAbstractMapper; vtkProperty; vtkCamera; vtkLight; vtkRenderer; vtkRenderWindow; vtkRenderWindowInteractor vtkTransform; vtkLookupTable;可以发现这些类都是与数据显示或渲染相关的。…...
基于STM32的智能计步器
引言 随着健康意识的提高,计步器逐渐成为人们日常生活中重要的健康管理工具。本文将指导你如何使用STM32微控制器制作一个智能计步器。该计步器通过加速度传感器检测步伐,并使用OLED显示屏显示步数。通过这个项目,你将学习到STM32开发的基本流…...
VB.NET 从入门到精通:开启编程进阶之路
摘要: 本文全面深入地阐述了 VB.NET 的学习路径,从基础的环境搭建与语法入门开始,逐步深入到面向对象编程、图形用户界面设计、数据访问、异常处理、多线程编程以及与其他技术的集成等核心领域,通过详细的代码示例与理论讲解&…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
