前言
这个是去年做的一个控制台小游戏,当时只上传了资源,现在再附上一篇实现思路
游戏画面
游戏内容
操控上
键盘输入按键控制是否自动演算,自动演算速度
开始时键入存档可选择我预制的存档,结束时键入Y/N进行继续游戏的确认
画面上
左上角是主画面图,右上角是对应的碰撞显示图(debug查看有无缺失阻挡)
左下角是一个消息列表,该列表播报所有单位每轮进行的动作
右下角是一个队伍列表,该列表记录目前所有队伍的KD,最高个人击杀
玩法上
编辑方法:玩家在指定的函数体内编写生成代码,然后自己编译执行(别问我这么抽象的编辑方法算不算游戏)
手动生成:提供按直线,按圆心半径进行批量生成游戏单位,可指定其队伍id,在主画面中的样子,属性,攻击范围等的函数,开始时就会放到舞台上。
自动生成:提供单位生成器,可放入一个单位作为模板进行复制或者按输入的单位属性进行复制,可自己设置生成多少个单位后销毁。
单位能力:单位会自动寻找距离其最近的敌方单位进攻,生成器会检测自己周围8格是否有空间进行生成。
游戏实现
主函数
游戏整体简单,主函数是一目了然就可以看出做了什么
int main()
{
Init();//系统初始化
int input = 1;
while (input == 1)
{
GameInit();//游戏每次重试的初始化
Render();//渲染第一帧
while (Flag)
{
Input();//接收输入
Logic();//逻辑运算
Render();//渲染
}
End();//结算
//输入选择是否终止
gotoxy(MAPW / 6, MAPH / 2 + 1);
cout << "是否重试? 1 :同意,2:拒绝 :";
cin >> input;
}
system("color 0F");
return 0;
}
功能实现
游戏界面
使用简化的代码来保证能够聚焦于逻辑部分,一共四个主要部分
//每帧渲染
void Render()
{
————————————————————————————主地图显示—————————————————————————