C# - 飞行棋小游戏4-两个玩家依次投掷骰子 059

C# - 飞行棋小游戏4-两个玩家依次投掷骰子 059

首页休闲益智欢乐飞行棋更新时间:2024-04-29

1)为绘制地图方法添加3句代码,一是显示玩家坐标,二是将光标移到下一行显示

static void DrawMap() { Console.WriteLine("● 地雷(-6) ▲ 暂停(0) ◎ 飞盘( 10)"); Console.WriteLine(""); Console.WriteLine("玩家A的坐标: {0}", pos[0]); Console.WriteLine("玩家B的坐标: {0}", pos[1]); //绘制地图的代码(拷贝省略...) //使光标移到下一行 Console.WriteLine(""); }

如果不想使用默认玩家名称,可自己编写自定义玩家名称;实现逻辑一般包括1)玩家名称不能为空 2)两个玩家名称不能相同;本程序暂时跳过此环节只使用默认的名称

控制棋子行走的逻辑

1 整体实现逻辑:

1)通过循环控制两个玩家依次投掷骰子(1-6之间的随机数),按骰子数改变当前玩家的坐标,循环条件是玩家A或玩家B的坐标没有一个超过99,如果哪一个超过99,表示哪个玩家赢

2)每次投掷骰子后都要判断玩家当前坐标是普通关卡还是地雷,暂停,飞盘关卡(之后以其他代指三种类型的关卡),如果是普通关卡则将当前玩家坐标加上骰子数后,清屏重新绘制地图,如果是其他关卡,给用户一个选择提示,用户选择后改变当前玩家坐标,清屏重新绘制地图

所有关卡的逻辑判断代码都在清屏重绘地图方法前面完成

2 具体实现与代码

2.1使用循环控制玩家依次投掷骰子

两个玩家依次投掷骰子

static void Main(string[] args) { ShowMapInfo(); InitData(); DrawMap(); //用于产生随机数 Random r = new Random(); int rdm = 0;//用于接收产生的随机数 //循环条件不能使用或 || while (pos[0] <= 99 && pos[1] <= 99) { Console.WriteLine("玩家A按任意键开始投掷骰子"); Console.ReadKey(true);//true 不显示所按的是什么键 rdm = r.Next(1, 7);//产生1-6之间任意的整数 Console.WriteLine("玩家A骰子数为{0}",rdm); Console.WriteLine("按任意键玩家A开始行走"); Console.ReadKey(true); Console.WriteLine(""); //清屏 Console.Clear(); //重新绘制地图 DrawMap(); //================================== Console.WriteLine("玩家B按任意键开始投掷骰子"); Console.ReadKey(true);//true 不显示所按的是什么键 rdm = r.Next(1, 7);//产生1-6之间任意的整数 Console.WriteLine("玩家B骰子数为{0}", rdm); Console.WriteLine("按任意键玩家B开始行走"); Console.ReadKey(true); //清屏 Console.Clear(); //重新绘制地图 DrawMap(); } Console.ReadKey(); }

2.2 通过投掷的骰子数,改变当前玩家的坐标(其他关卡暂时未验证)

static void Main(string[] args) { ShowMapInfo(); InitData(); DrawMap(); //用于产生随机数 Random r = new Random(); int rdm = 0;//用于接收产生的随机数 while (pos[0] <= 99 && pos[1] <= 99) { Console.WriteLine("玩家A按任意键开始投掷骰子"); Console.ReadKey(true);//true 不显示所按的是什么键 rdm = r.Next(1, 7);//产生1-6之间任意的整数 Console.WriteLine("玩家A骰子数为{0}",rdm); Console.WriteLine("按任意键玩家A开始行走"); Console.ReadKey(true); //骰子数就是玩家A马上行走的关卡数 pos[0] = pos[0] rdm; //清屏 Console.Clear(); //重新绘制地图 DrawMap(); //玩家B的逻辑控制代码就是冗余代码 //最后会将代码进行优化 Console.WriteLine("玩家B按任意键开始投掷骰子"); Console.ReadKey(true);//true 不显示所按的是什么键 rdm = r.Next(1, 7);//产生1-6之间任意的整数 Console.WriteLine("玩家B骰子数为{0}", rdm); Console.WriteLine("按任意键玩家B开始行走"); Console.ReadKey(true); pos[1] = pos[1] rdm; //清屏 Console.Clear(); //重新绘制地图 DrawMap(); } Console.ReadKey(); }

玩家B再走就走出地图了,因此需要在每次绘制地图前进行检测玩家当前坐标

// 检测当前玩家坐标 static void CheckPos() { for (int i = 0; i < pos.Length; i ) { //假设骰子数为3,地图中下标为3的是地雷 //按照规则退6步,玩家坐标就会变为-3 //因此需要限制玩家坐标在0-99 if (pos[i] < 0) { pos[i] = 0; } if (pos[i] > 99) { pos[i] = 99; } } }

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved