已经测试了当满足条件时if内语句可以正常运行,可为什么输出不了文字?
并且在这个else if上面还有十个和这个相似的else if是可以正常输出
加载了easyx插件
大一机械狗 不专业格式有点不好……
问题位于bewalk最后部分跳转到talk01最后部分的时候
void bewalk()
{
if (gload != 0)
putimage(x, y, 45, 60, &people, 0, 0,SRCINVERT); //判断是否有存档信息
else if ( do1==0 )//游戏开始时出生位置默认于沙发旁
{
x=200; y=100;
}
else if (do1==1) //如果不是第一次到达地图 则于楼梯口处出现
{
x=295; y=100;
}
BeginBatchDraw();
while (walk==0)
{
if (kbhit()) // 判断是否有输入
{
input = getch();
if (y<=106)
{
if (input == 'a') // 左移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);//重新绘制地图
left_i++;
if (x>200) // 没有达到右边的墙,才移动小人的坐标
x = x - 5; //控制小人右移速度
putimage(x, y, 45, 60, &people, left_i * 45, 60, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (left_i == 3)
left_i = 0;
}
else if (input == 'd') // 右移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);
right_i++;
if (x<390) // 没有达到右边的墙,才移动小人的坐标
x = x + 5; //控制小人右移速度
putimage(x, y, 45, 60, &people, right_i * 45, 180, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (right_i == 3)
right_i = 0;
}
}
else if (y>100 && y<=135)
{
if (input == 'a') // 左移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);//重新绘制地图
left_i++;
if (x>230) // 没有达到左边的墙,才移动小人的坐标
x = x - 5; //控制小人左移速度
putimage(x, y, 45, 60, &people, left_i * 45, 60, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (left_i == 3)
left_i = 0;
}
else if (input == 'd') // 右移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);
right_i++;
if (x<390) // 没有达到右边的墙,才移动小人的坐标
x = x + 5; //控制小人右移速度
putimage(x, y, 45, 60, &people, right_i * 45, 180, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (right_i == 3)
right_i = 0;
}
}
else if (y>100 && y<=340)
{
if (input == 'a') // 左移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);//重新绘制地图
left_i++;
if (x>230) // 没有达到左边的墙,才移动小人的坐标
x = x - 5; //控制小人左移速度
putimage(x, y, 45, 60, &people, left_i * 45, 60, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (left_i == 3)
left_i = 0;
}
else if (input == 'd') // 右移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);
right_i++;
if (x<295) // 没有达到右边的墙,才移动小人的坐标
x = x + 5; //控制小人右移速度
putimage(x, y, 45, 60, &people, right_i * 45, 180, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (right_i == 3)
right_i = 0;
}
}
if (x >= 230 && x<=390)
{
if (input == 'w') // 上移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);//重新绘制地图
up_i++;
if (y > 100) // 没有达到上边的墙,才移动小人的坐标
y = y - 5; //控制小人上移速度
putimage(x, y, 45, 60, &people, up_i * 45, 120, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (up_i == 3)
up_i = 0;
}
else if (input == 's') // 下移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);
down_i++;
if (y < 135) // 没有达到下边的墙,才移动小人的坐标
y = y + 5; //控制小人下移速度
putimage(x, y, 45, 60, &people, down_i * 45, 0, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (down_i == 3)
down_i = 0;
}
}
if (x >= 230 && x<=295)
{
if (y>=135)
{
if (input == 'w') // 上移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);//重新绘制地图
up_i++;
if (y > 100) // 没有达到上边的墙,才移动小人的坐标
y = y - 2; //控制小人上移速度
putimage(x, y, 45, 60, &people, up_i * 45, 120, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (up_i == 3)
up_i = 0;
}
else if (input == 's') // 下移
{
clearrectangle(x, y, x + 45, y + 60); // 清空画面全部矩形区域
putimage(0, 0, &bk1);
down_i++;
if (y < 335) // 没有达到下边的墙,才移动小人的坐标
y = y + 5; //控制小人下移速度
putimage(x, y, 45, 60, &people, down_i * 45, 0, SRCINVERT);
FlushBatchDraw();
Sleep(1);
if (down_i == 3)
down_i = 0;
}
}
}
if (x>=235 && x<=255)
w1_01=1;
if (y<=340 && y>=300)
w1_02=1;
if (x<=390 && x>=380)
w1_03=1;
if (w1_01==1 && w1_02==1 && w1_03==1 && x>=285 && x<=300 && y<=110 && y>=95)
{
talk=0; //开启对话的while循环
do1=1;
walk=1; //关闭行走的while循环
}
}
}
}
void talk01() //控制第一个场景的对话文本信息
{
MOUSEMSG m; // 定义鼠标消息
while (talk==0)
{
m = GetMouseMsg();
if (talk1==1)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(105, 660, "早晨,你在沙发上醒来……");
talk1=2;
walk=1;
}
else if (talk1==2)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "你甩了甩头,发现自己还在昨晚团建的轰趴馆里");
talk1++;
}
}
else if (talk1==3)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "可周围却不是熟悉的伙伴,而是一群陌生人");
talk1++;
}
}
else if (talk1==4)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "你来不及细想这是为什么");
talk1++;
}
}
else if (talk1==5)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "因为你看了看手机上的时间");
talk1++;
}
}
else if (talk1==6)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "发现C语言课就要开始了!");
talk1++;
}
}
else if (talk1==7)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "你马上从沙发上翻了个跟头滚了下去");
putimage(200, 100, 45, 60, &people, 0, 0,SRCINVERT);
talk1++;
}
}
else if (talk1==8)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "不顾周围异样的目光,寻找着你的书本");
talk1++;
}
}
else if (talk1==9)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "并祈祷能按时抵达教室……");
talk1++;
}
}
else if (talk1==10)
{
if (m.uMsg == WM_LBUTTONDOWN)
{
Sleep(1000);
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(270, 620, "<游戏开始>");
outtextxy(230, 660, "所在地点:轰趴馆");
outtextxy(130, 700, "游戏目标:找到书本并抵达教室");
talk1++;
talk=1; //关闭对话的while循环
walk=0; //开启行走的while循环
}
}
else if (talk1==11)
{
clearrectangle(0, 588, 700, 800);
setcolor(RGB(43,138,232));
settextstyle(30,0, _T("黑体"));
outtextxy(30, 660, "似乎这里并没有你的书本,是否前往下一个地方");
talk1++;
}
}
}
void gamestar() //控制游戏整体逻辑
{
while (1)
{
be();
talk01();
bewalk();
//initgraph(700, 800);
}
}
虽然我没学过easyx,但能猜到你这个outtextxy函数是用来在窗口指定位置显示文本的
1.查看窗口是否有其他元素遮挡文本
2.你的坐标说不定超出了窗口的范围
3.如果这两项都没问题,你再看看这个语句块与上面的有什么不一样,为什么最后一个语句块没有进行嵌套再判断,就直接执行,并且也没有sleep,
如果上面的建议对你有用,点击右上角给个采纳哦~