笑傲江湖之精忠报国,终于做完了
前言
做这个的都是看老九学堂的吧,零零散散做了一个月😂,(800多行代码,也不多),本人英文0级,所以有单词不对,请忽视,所以不多说了,上图
主界面(登陆系统也做了,但没移过来)
菜单与地图的转换是空格
地图:
菜单:
难点 :
1.打印竖排文字(而且还是从右往左打,下面是主要代码 )
还有菜单的竖文字
/* 打印地图介绍 */
j = 2;
n = 0;
for (i = 0; i < desclen; i += 2)
{
if (i != 0 && i % 12 == 0)
{
n = 0;
j += 3;
}
SetPosition(L + 84 - j, 13 + n);
printf("%c%c", desc[i], desc[i + 1]);
n++;
}
2. 清除
(不会双缓冲,有屏闪,自己瞎做了一下,稍微轻那么一点)
地图介绍:
/* 把多余的(挤出屏幕)的文字去除 */
if (desclen > 332)desclen = 332;
/* 清除原地图介绍 */
while(ondesclen != 0)
{//只清除多余的
if (desclen > ondesclen)break;
if (desclen % 24 == 0)
{
clearcount = desclen / 24 * 3;
Clear(L + 1, 13, 8, 83 - clearcount);
break;
}
else
{
clearcount = desclen / 24 * 3 + 4;
Clear(L + 1, 13, 8, 84 - clearcount);
break;
}
}
3.游戏菜单打印
虽然也是竖排文字,但还要选择
菜单:
菜单
自我欣赏
无背包:
有背包:背包总数12个(不包括单个道具数量)
本来想做可以装备道具的操作
打怪
打怪后:
没有怪物后和没有怪物
其他地图
难点
清除残留
if (mapmonsterssum < 12)//怪物总数 < 12
{
tempcount = mapmonsterssum / 4;//得到行数(因数据类型是整型,所以不计算余数)如 10 / 4 = 2
if (mapmonsterssum % 4 == 0)//没有余数时
{ //只有两种情况
if (tempcount == 2)
{
Clear(L + 5, 18, 1, 14);
}
else
{
Clear(L + 5, 16, 1, 14);
}
}
else
{
temp = mapmonsterssum % 4;//得到余数
Clear(L + 5 + temp*(14+8), 14 + tempcount * 2, 1, 14);
/*********************************************************
*Y坐标:整体缩进 + 打印怪物缩进 + 余数 * (怪物 + 空格)
*X坐标:打印怪物的第一行14 + 行数 * 2(*2是因为行和行之间有空行)
*1:清除一行
*14:清除14列,(怪物占14个字节)
**********************************************************/
}
}
选择高亮循环
这是我的笨方法,很笨的 。
rl是左和右的缩写,ud是上和下
/* 控制光标循环 */
if (mapmonsterssum > 12)mapmonsterssum = 12;
if (mapmonsterssum % 4 == 0)
{
if (rl < 0)rl = 3;
if (rl > 3)rl = 0;
if (ud < 0)ud = mapmonsterssum / 4-1;
if (ud > mapmonsterssum / 4-1)ud = 0;
}
else {
if (mapmonsterssum > 4)
{
if (ud < mapmonsterssum / 4 )
{
if (rl < 0)rl = 3;
if (rl > 3)rl = 0;
}
else
{
if (rl < 0)rl = mapmonsterssum % 4 - 1;
if (rl > mapmonsterssum % 4 - 1)rl = 0;
}
if (rl < mapmonsterssum % 4)
{
if (ud < 0)ud = mapmonsterssum / 4 ;
if (ud > mapmonsterssum / 4 )ud = 0;
}
else
{
if (ud < 0)ud = mapmonsterssum / 4-1 ;
if (ud > mapmonsterssum / 4-1 )ud = 0;
}
}
else
{
ud = 0;
if (rl < 0)rl = mapmonsterssum-1;
if (rl > mapmonsterssum-1)rl = 0;
}
}
购买装备
没什么可说的
其他
剩下没有做
就这吧!!!!!!!!!!!!!!!!真·第一次写这个,也不知道怎么写,
其实我是想问我的C语言算是学完了,后面该学什么?c++?c#?
还有如果要源文件,评论或私信,用的vs2017,可能有些地方没有注意,有bug之类的,告诉我。欢迎修改
最后,希望大家编译不报错而且还能得到想要的效果