企业网站建设和管理,品牌网站建设h5,好设计官网,网站右侧二维码代码项目名称
木木夕营救公主
项目介绍
这是一个小游戏#xff0c;你将扮演一个英雄#xff08;木木夕#xff09;#xff0c;去打败恶龙#xff0c;拯救出公主#xff0c;该项目采用回合制战斗模式#xff0c;由于角色的血量和攻击为随机数#xff0c;所以需要靠运气才…项目名称
木木夕营救公主
项目介绍
这是一个小游戏你将扮演一个英雄木木夕去打败恶龙拯救出公主该项目采用回合制战斗模式由于角色的血量和攻击为随机数所以需要靠运气才能通关噢 简单需求分析
开始界面控制台输入输出控制台颜色变化
游戏界面控制台输入输出控制台颜色变化回合制战斗随机数循环条件判断
结束界面 控制台输入输出控制台颜色变化
界面间相互切换
项目代码含详细说明
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace CSharp入门_实践
{class Program{static void Main(string[] args){#region 控制台基础设置int width 50;int height 30;//隐藏光标Console.CursorVisible false;//设置控制台大小Console.SetWindowSize(width, height);//设置缓冲区大小Console.SetBufferSize(width, height);#endregion#region 多场景//约定 1是开始游戏界面2是游戏界面3是结束界面int nowId 1;string gameOverInfo ;while (true){//不同的场景id进行不同的逻辑switch (nowId){#region 开始场景逻辑//开始场景case 1:Console.Clear();//每次场景切换需要把上一次的场景清除Console.SetCursorPosition(width / 2 - 7, 8);//设置下面文字的位置Console.Write(木木夕营救公主);int nowSelIndex 0;//当前选项编号 0开始游戏 1结束游戏//输入while (true){bool isQuit false;//退出循环标志Console.SetCursorPosition(width / 2 - 4, 12);//改变开始游戏的颜色Console.ForegroundColor nowSelIndex 0 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(开始游戏);Console.SetCursorPosition(width / 2 - 4, 14);//改变结束游戏的颜色Console.ForegroundColor nowSelIndex 1 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(退出游戏);//说明Console.SetCursorPosition(width / 2 - 16, 16);Console.ForegroundColor ConsoleColor.White;Console.Write(说明按W,S进行上下选择J键确定);Console.SetCursorPosition(width / 2 - 10, 18);Console.Write(操作时按WASD进行移动);Console.ForegroundColor ConsoleColor.Green;Console.SetCursorPosition(width / 2 - 10, 20);Console.Write(★);Console.ForegroundColor ConsoleColor.White;Console.Write(为boss);Console.ForegroundColor ConsoleColor.Yellow;Console.SetCursorPosition(width / 2 - 10, 21);Console.Write(●);Console.ForegroundColor ConsoleColor.White;Console.Write(为玩家木木夕);Console.ForegroundColor ConsoleColor.Blue;Console.SetCursorPosition(width / 2 - 10, 22);Console.Write(▲);Console.ForegroundColor ConsoleColor.White;Console.Write(为公主);Console.SetCursorPosition(width / 2 - 18, 23);Console.Write(找到boss进行挑战按J键进行一次攻击);//检测玩家输入根据输入内容进行跳转char input Console.ReadKey(true).KeyChar;//检测输入并赋值不显示在控制台switch (input){case w:case W:--nowSelIndex;if (nowSelIndex 0){nowSelIndex 0;}break;case s:case S:nowSelIndex;if (nowSelIndex 1){nowSelIndex 1;}break;case j:case J://确定按钮if (nowSelIndex 0){//进入游戏//改变当前场景idnowId 2;//退出内层while循环isQuit true;}else{//关闭控制台Environment.Exit(0);}break;}if (isQuit true){break;//跳出该层循环}}break;#endregion//游戏场景case 2:Console.Clear();#region 红墙Console.ForegroundColor ConsoleColor.Red;//设置颜色//画墙for (int i 0; i width-2; i 2){//上方Console.SetCursorPosition(i, 0);//设置位置Console.Write(■);//下方Console.SetCursorPosition(i, height - 2);//设置位置Console.Write(■);//中间Console.SetCursorPosition(i, height - 7);//设置位置Console.Write(■);}for (int i 0; i height-1; i){//左边Console.SetCursorPosition(0, i);//设置位置Console.Write(■);//右边Console.SetCursorPosition(width-2, i);//设置位置Console.Write(■);}#endregion#region boss属性相关//boss位置int xBoss 24;int yBoss 15;//boss攻击范围int bossAtkMin 9;int bossAtkMax 16;//boss血量int bossHP 100;//boss图标string bossIcon ★;//boss颜色ConsoleColor bossColor ConsoleColor.Green;#endregion#region 玩家属性相关//Player位置int xPlayer 4;int yPlayer 5;//Player攻击范围int playerAtkMin 8;int playerAtkMax 15;//Player血量int playerHP 100;//Player图标string playerIcon ●;//Player颜色ConsoleColor playerColor ConsoleColor.Yellow;//玩家输入的内容char playerInput;#endregion#region 公主属性int xprincess 24;int yprincess 5;string princessIcon ▲;ConsoleColor princessColor ConsoleColor.Blue;#endregion#region 玩家战斗状态bool isFight false;bool isOver false;//跳出while#endregion//游戏场景死循环while (true){//boss活着if (bossHP 0){//绘制bossConsole.SetCursorPosition(xBoss, yBoss);Console.ForegroundColor bossColor;Console.Write(bossIcon);}#region 公主模块else{Console.SetCursorPosition(xprincess, yprincess);Console.ForegroundColor princessColor;Console.Write(princessIcon);}#endregion#region 玩家移动//绘制玩家Console.SetCursorPosition(xPlayer, yPlayer);Console.ForegroundColor playerColor;Console.Write(playerIcon);//玩家移动//得到玩家输入playerInput Console.ReadKey(true).KeyChar;//判断是否为战斗状态if (isFight){//执行战斗状态逻辑if (playerInput j|| playerInput J){//判断boss和玩家是否死亡if (playerHP 0){//游戏结束nowId 3;//结束游戏gameOverInfo 游戏失败;break;}else if (bossHP 0){//营救公主//先把boss擦除Console.SetCursorPosition(xBoss, yBoss);Console.Write( );isFight false;}else{//玩家攻击bossRandom rd new Random();int atk rd.Next(playerAtkMin, playerAtkMax);bossHP - atk;//打印信息Console.ForegroundColor ConsoleColor.Green;//擦除信息Console.SetCursorPosition(2, height - 4);Console.Write( );//再写新的信息Console.SetCursorPosition(2, height - 4);Console.Write(你对boss造成了{0}伤害,boss剩余血量为{1}, atk, bossHP);//boss攻击玩家if (bossHP 0){atk rd.Next(bossAtkMin, bossAtkMax);playerHP - atk;//打印信息Console.ForegroundColor ConsoleColor.Yellow;//擦除信息Console.SetCursorPosition(2, height - 3);Console.Write( );//再写新的信息//玩家死亡if (playerHP 0){Console.SetCursorPosition(2, height - 3);Console.Write(很遗憾你未能通过boss的试炼战败了(按J结束));}else{Console.SetCursorPosition(2, height - 3);Console.Write(boss对你造成了{0}伤害,你的剩余血量为{1}, atk, playerHP);}}else{//擦除战斗信息Console.SetCursorPosition(2, height - 5);Console.Write( );Console.SetCursorPosition(2, height - 4);Console.Write( );Console.SetCursorPosition(2, height - 3);Console.Write( );//显示胜利信息Console.SetCursorPosition(2, height - 5);Console.Write(你战胜了boss快去营救公主先按J键解除战斗));Console.SetCursorPosition(2, height - 4);Console.Write(请前往公主身边按J键进行营救);}}}}else{//执行非战斗状态逻辑//擦除Console.SetCursorPosition(xPlayer, yPlayer);//设置光标位置Console.Write( );//擦除//改位置switch (playerInput){case w:case W:--yPlayer;if (yPlayer 1){yPlayer 1;}//主角与boss重合但是boss没有死else if (xPlayer xBoss yPlayer yBoss bossHP 0){//拉回去yPlayer;}else if (xPlayer xprincess yPlayer yprincess bossHP 0){//拉回去yPlayer;}break;case a:case A:xPlayer - 2;if (xPlayer 2){xPlayer 2;}//主角与boss重合但是boss没有死else if (xPlayer xBoss yPlayer yBoss bossHP 0){//拉回去xPlayer 2;}else if (xPlayer xprincess yPlayer yprincess bossHP 0){//拉回去xPlayer 2;}break;case s:case S:yPlayer;if (yPlayer height - 8){yPlayer height - 8;}//主角与boss重合但是boss没有死else if (xPlayer xBoss yPlayer yBoss bossHP 0){//拉回去--yPlayer;}else if (xPlayer xprincess yPlayer yprincess bossHP 0){//拉回去--yPlayer;}break;case d:case D:xPlayer 2;if (xPlayer width - 4){xPlayer width - 4;}//主角与boss重合但是boss没有死else if (xPlayer xBoss yPlayer yBoss bossHP 0){//拉回去xPlayer - 2;}else if (xPlayer xprincess yPlayer yprincess bossHP 0){//拉回去xPlayer - 2;}break;case j:case J://开始战斗玩家不再移动下方显示信息if ((xPlayer xBoss yPlayer yBoss - 1 ||xPlayer xBoss yPlayer yBoss 1 ||yPlayer yBoss xPlayer xBoss - 2 ||yPlayer yBoss xPlayer xBoss 2) bossHP 0){isFight true;//满足上述条件可以开始战斗Console.SetCursorPosition(2, height - 5);Console.ForegroundColor ConsoleColor.White;Console.Write(开始和boss战斗了按J键继续);Console.SetCursorPosition(2, height - 4);Console.Write(玩家当前血量为{0}, playerHP);Console.SetCursorPosition(2, height - 3);Console.Write(Boss当前血量为{0}, bossHP);}//判断是否在公主身边else if ((xPlayer xprincess yPlayer yprincess - 1 ||xPlayer xprincess yPlayer yprincess 1 ||yPlayer yprincess xPlayer xprincess - 2 ||yPlayer yprincess xPlayer xprincess 2) bossHP0){nowId 3;gameOverInfo 游戏通关;isOver true;break;}break;}}#endregionif (isOver){break;}}break;//结束场景case 3:Console.Clear();Console.SetCursorPosition(width / 2 - 5, 5);Console.ForegroundColor ConsoleColor.White;Console.Write(GAME OVER);//失败和成功提示不一样Console.SetCursorPosition(width / 2 - 4, 7);Console.ForegroundColor ConsoleColor.Green;Console.Write(gameOverInfo);int nowSelEndId 0;while (true){bool isQuitEnd false;Console.SetCursorPosition(width / 2 - 6, 9);Console.ForegroundColor nowSelEndId 0 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(回到开始界面);Console.SetCursorPosition(width / 2 - 4, 11);Console.ForegroundColor nowSelEndId 1 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(退出游戏);char input Console.ReadKey(true).KeyChar;switch (input){case w:case W:--nowSelEndId;if (nowSelEndId 0){nowSelEndId 0;}break;case s:case S:nowSelEndId;if (nowSelEndId 1){nowSelEndId 1;}break;case j:case J:if (nowSelEndId 0){nowId 1;isQuitEnd true;}else{Environment.Exit(0);}break;}//为了从switch中跳出whileif (isQuitEnd){break;}}break;}}#endregion}}
}项目演示 木木夕营救公主