网站建设毕业读书笔记,陕西网站建设多少钱,自己做网站要买服务器吗,如何做网络推广君兮_的个人主页 即使走的再远#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们#xff0c;这里是君兮_#xff0c;最近开始正式的步入学习游戏开发的正轨#xff0c;想要通过写博客的方式来分享自己学到的知识和经验#xff0c;这就是开设本专栏的目的。希望… 君兮_的个人主页 即使走的再远也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们这里是君兮_最近开始正式的步入学习游戏开发的正轨想要通过写博客的方式来分享自己学到的知识和经验这就是开设本专栏的目的。希望这些独立的C#小项目能对做游戏的你有所帮助毕竟学会游戏开发的最好的上手方式就是自己做一款游戏 勇士救公主 前言一.勇士救公主流程图二.项目实现1.游戏流程2.项目解析3.初始的设置4.开始界面5.该模块源码 总结 前言
本专栏主要是分享一些纯C#的项目开发流程后面如有结合Unity开发的游戏会有专门的专栏同时由于任何一个独立的项目都是非常复杂的哪怕是简单的小项目做完整都至少需要4~500行代码因此本专栏的独立项目多半会分不同的板块来分批次讲解这样一是能拆分板块减小项目开发难度二也能够便于大家理解方便大家跟着博客自己上手设计。还在更新中的项目会在更新之后把相关链接放在本博客的开头我也会在开设一个新项目时尽快更完方便大家查阅的同时在每个项目的开头都会把本项目的流程图放在开头方便大家检索当然我更加希望大家在学习一段时间后能不看我的讲解只看流程图就能把这个项目给实现了能做到这样那么恭喜你真正入门了。
一.勇士救公主流程图 二.项目实现
1.游戏流程
该游戏的大体流程是玩家通过打败恶龙来到公主身边拯救公主。如果挑战成功救出公主则游戏胜利如果不幸被恶龙击败则游戏结束。 开始界面 游戏界面 营救公主 游戏结束界面 麻雀虽小五脏俱全游戏的制作正是要从这种简单的项目一步一步来的废话不多说开始我们的学习吧 2.项目解析
该项目主要分为几块场景设置开始界面的设置和切换游戏界面的地图的设计及角色的初始化玩家的移动逻辑以及游戏的战斗逻辑救出公主的逻辑胜利或者失败后进入的结束界面的设置。今天我们主要来讲初始的一些设置以及开始界面的布置。
3.初始的设置
首先我们需要先来完成一些基础的设置。由于我们是一个控制台窗口的小游戏因此我们需要先设置一下控制台窗口以及缓冲区的大小 int w 60;int h 40;Console.SetWindowSize(w, h);//控制台窗口大小Console.SetBufferSize(w, h);//缓冲区大小其实这两个函数第一个传入的参数为设置的宽度第二个传入的参数为设置的高度 此时在你的电脑上还有光标闪烁我们需要把光标给隐去
//隐藏光标Console.CursorVisible false;//false为隐去true为显示好了做了以上的基本设置我们来进行开始界面的设置
4.开始界面
在开始之前我们不妨想想我们这个游戏有三个界面我们要怎么实现不同界面的切换呢在这里我们可以考虑到用switch来进行分组用不同的条件来区别不同的界面然后在不同的case下实现不同界面的不同功能。这样在切换不同界面时我们只需改变条件让程序进入不同case即可。
int nowSceneID 1;
//不同的场景进行不同的逻辑处理
switch (nowSceneID)
{//开始界面case 1:break;//游戏界面case 2:break;//结束界面case 3:break;default:break;
}这样我们就能通过在代码中改变nowScene的值来切换不同的场景了同时我们要注意不能让游戏主动退出而是通过玩家的输入才能退出因此我们不妨将以上的逻辑放入一个死循环中这样我们就能通过控制循环来控制游戏的退出了。 下面我们就这case 1里实现我们开始界面的功能我们的开始界面首先得有我们的游戏名称吧
case 1:Console.Clear();//清屏Console.SetCursorPosition(w/2-5,10);//设置输入坐标Console.WriteLine(勇士斗恶龙);先介绍一下SetCursorPosition函数。我们的控制台坐标的坐标轴00在左上角因此增加传入参数的大小输入位置是往右往下的关于坐标的设置相信聪明的你自己动手试一下就能明白其中的原理 注意如果你这里一直闪屏是由于你一直在循环清屏造成的属于正常现象不要慌等下会解决的我们继续 好了接下来是开始界面中最复杂的一段我们怎么实现按W键和S键点亮”开始游戏“或“结束游戏”来提醒玩家目前的选项呢 这里我们来分析一下其实逻辑是非常简单的首先当刚进入时我们让程序进入让开始游戏亮退出游戏不亮的场景而玩家按下“S”就切换到“退出游戏”亮上再按下“W”就切回“开始游戏”亮的情况。 哎是不是和刚才的场景切换逻辑有亿点点相像呢没错这是也可以通过while结合switch的方法实现 //当前选项的编号int nowSelIndex 0;//因为要输入 我们可以构造一个开始界面的死循环//专门用来处理 开始场景相关的逻辑while (true){//显示内容检测输入//设置光标位置再显示内容Console.SetCursorPosition(w / 2 - 4, 12);//根据当前选择的编号来决定是否变色Console.ForegroundColor nowSelIndex 0 ? ConsoleColor.Red : ConsoleColor.White;//三目操作符结合设置字体颜色的函数Console.Write(开始游戏);Console.SetCursorPosition(w / 2 - 4, 14);Console.ForegroundColor nowSelIndex 1 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(退出游戏);//检查玩家输入的键并且不会在控制台上显示输入内容char input Console.ReadKey(true).KeyChar;switch (input){case W:case w:nowSelIndex 0;break;case S:case s:nowSelIndex 1;break;}}很简单的逻辑通过 nowSelIndex的值进行标记初始为0如果按下“S”键就让nowSelIndex 1此时开始游戏为白退出游戏为红想再切换为开始游戏为红退出游戏为白就按下”W“键即可。这里是你需要注意的地方 //检查玩家输入的键并且不会在控制台上显示输入内容char input Console.ReadKey(true).KeyChar;当ReadKey括号中的值为true时输入的值就不会显示在控制台上了同时我们由于每次进入下一次循环中都会清屏也不会影响游戏的运行。这样就达到了我们的目的我们来进行下一步。同时我们实现“开始游戏”和“退出游戏”的标记提醒后该进行选择了这里我们就通过来按“J”来进行下一步在“开始游戏”高亮时按J切换到游戏场景在退出游戏时高亮按J就退出程序。 case j:case J:if(nowSelIndex 0){//1.改变场景ID进入游戏场景nowSceneID 2;//2.要退出内层循环whileisQuitWhile true;}else{//关闭控制台Environment.Exit(0);}break;if (isQuitWhile true)break;这里我们定义了一个bool类型的isQuitWhile来实现切换场景的目的由于我们这里的break都是switch都是里的只能退出switch因此需要通过这个bool类型的变量达到退出内层循环进入外层的switch里重新选择的目的而由于此时我们改变了 nowSceneID的值自然就可以切换进入游戏场景了。 5.该模块源码
由于上面的讲述是分步拆分的下面为大家提供该部分的源码来帮助大家理解该部分的内容
namespace 勇士斗恶龙
{class Program{static void Main(string[] args){int w 60;int h 40;Console.SetWindowSize(w, h);Console.SetBufferSize(w, h);//隐藏光标Console.CursorVisible false;int nowSceneID 1;while (true){//不同的场景进行不同的逻辑处理switch (nowSceneID){case 1:Console.Clear();Console.SetCursorPosition(w / 2 - 5, 10);Console.WriteLine(勇士斗恶龙);//当前选项的编号int nowSelIndex 0;//因为要输入 我们可以构造一个开始界面的死循环//专门用来处理 开始场景相关的逻辑while (true){//用一个标识用来退出此循环bool isQuitWhile false;//显示内容检测输入//设置光标位置再显示内容Console.SetCursorPosition(w / 2 - 4, 12);//根据当前选择的编号来决定是否变色Console.ForegroundColor nowSelIndex 0 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(开始游戏);Console.SetCursorPosition(w / 2 - 4, 14);Console.ForegroundColor nowSelIndex 1 ? ConsoleColor.Red : ConsoleColor.White;Console.Write(退出游戏);//检查玩家输入的键并且不会在控制台上显示输入内容char input Console.ReadKey(true).KeyChar;switch (input){case W:case w:nowSelIndex 0;break;case S:case s:nowSelIndex 1;break;case j:case J:if (nowSelIndex 0){//1.改变场景IDnowSceneID 2;//2.要退出内层循环whileisQuitWhile true;}else{//关闭控制台Environment.Exit(0);}break;}if (isQuitWhile true)break;}break;case 2:break;case 3:break;default:break;}}}}
} 总结
今天的内容到这里就结束了总的来说这部分的内容还是比较简单的不妨跟着博主自己动手尝试一下毕竟很多问题只有自己动手试过了才能发现如果你在实现过程中遇到任何问题欢迎在评论区指出或者私信我后面的内容很快更新感兴趣不妨关注一下错过后面的内容哦(小小预告一下接下来就开始我们游戏界面的内容啦这一块才是真正的重头戏) 新人博主创作不易如果感觉文章内容对你有所帮助的话不妨三连一下再走呗。你们的支持就是我更新的动力 **可莉请求你们三连支持一下博主点击下方评论点赞收藏帮帮可莉吧**