即使走的再远,也勿忘启程时的初心
C/C++ 游戏开发
Hello,米娜桑们,这里是君兮_,最近开始正式的步入学习游戏开发的正轨,想要通过写博客的方式来分享自己学到的知识和经验,这就是开设本专栏的目的。希望这些独立的C#小项目能对做游戏的你有所帮助,毕竟学会游戏开发的最好的上手方式就是自己做一款游戏!!
int w = 60;
int h = 40;
Console.SetWindowSize(w, h);//控制台窗口大小
Console.SetBufferSize(w, h);//缓冲区大小
//隐藏光标
Console.CursorVisible = false;//false为隐去,true为显示
int nowSceneID = 1;
//不同的场景进行不同的逻辑处理
switch (nowSceneID)
{
//开始界面
case 1:
break;
//游戏界面
case 2:
break;
//结束界面
case 3:
break;
default:
break;
}
case 1:
Console.Clear();//清屏
Console.SetCursorPosition(w/2-5,10);//设置输入坐标
Console.WriteLine("勇士斗恶龙");
先介绍一下SetCursorPosition函数。我们的控制台坐标的坐标轴(0,0)在左上角,因此增加传入参数的大小输入位置是往右往下的,关于坐标的设置,相信聪明的你自己动手试一下就能明白其中的原理
注意:如果你这里一直闪屏是由于你一直在循环清屏造成的,属于正常现象,不要慌,等下会解决的,我们继续
这里我们来分析一下,其实逻辑是非常简单的,首先,当刚进入时,我们让程序进入让开始游戏亮,退出游戏不亮的场景,而玩家按下“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;
}
}
//检查玩家输入的键并且不会在控制台上显示输入内容
char input = Console.ReadKey(true).KeyChar;
case 'j':
case 'J':
if(nowSelIndex == 0)
{
//1.改变场景ID,进入游戏场景
nowSceneID = 2;
//2.要退出内层循环while
isQuitWhile = true;
}
else
{
//关闭控制台
Environment.Exit(0);
}
break;
if (isQuitWhile == true)
break;
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.改变场景ID
nowSceneID = 2;
//2.要退出内层循环while
isQuitWhile = true;
}
else
{
//关闭控制台
Environment.Exit(0);
}
break;
}
if (isQuitWhile == true)
break;
}
break;
case 2:
break;
case 3:
break;
default:
break;
}
}
}
}
}
新人博主创作不易,如果感觉文章内容对你有所帮助的话不妨三连一下再走呗。你们的支持就是我更新的动力!!!
**(可莉请求你们三连支持一下博主!!!点击下方评论点赞收藏帮帮可莉吧)**