关于在DEV-C++上跑程序窗口闪退的问题
我在DEV-C++上编辑的,不知为何窗口一直闪退,程序是敲的书上的代码,理论上正确显示为按w、a、s、d后键入回车,“*”移动位置。代码如下#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i, j;
int x = 5, y = 10;
char input;
while(1)
{
system("cls"); //清屏函数
for(i = 0; i < x; i++) //输出飞机位置
printf("\n");
for(j = 0; j < y; j++)
printf(" ");
printf("*"); //输出飞机
printf("\n");
scanf("%c", &input); //根据用户的不同输入来移动
if(input == 'a')
y--;
if(input == 'd')
y++;
if(input == 's')
x--;
if(input == 'w')
x++;
}
return 0;
}
请教一下这是哪里出了问题。 本帖最后由 jackz007 于 2019-1-29 23:02 编辑
楼主的代码在我这里是可以正常编译运行的,不过,我把代码稍作修改,可以直接用数字键盘区的 4 个方向键操纵这架“飞机”,无需每一次都得按下回车键。以下是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
main(void)
{
int i , x = 5 , y = 10 ;
char c ;
for(;;) {
system("cls") ; //清屏
if (x < 0)x = 23 ;
if (x > 23) x = 0 ;
if (y < 0)y = 79 ;
if (y > 79) y = 0 ;
for(i = 0 ; i < x ; i ++) printf("\n") ; //输出飞机位置
for(i = 0 ; i < y ; i ++) printf(" ") ; //输出飞机位置
printf("*\n") ; //输出飞机
c = getch() ;
if (c == 0xffffffe0) {
c = getch() ;
if (c == 0x48) x -- ;
else if (c == 0x50) x ++ ;
else if (c == 0x4b) y -- ;
else if (c == 0x4d) y ++ ;
} else {
if (c == 13 || c == 27 || c == 'Q' || c == 'q') break ;
}
}
printf("game over\n") ;
}
如果按下 ESC 或 回车 或 ‘Q’ 或 ‘q’ 键都会直接退出程序。
我这里操作系统是 Windows XP SP3,编译环境是 TDM-GCC32 5.1.0 + msys2 是编辑器的原因,改成VC++就可以执行了
jackz007 发表于 2019-1-29 22:28
楼主的代码在我这里是可以正常编译运行的,不过,我把代码稍作修改,可以直接用数字键盘区的 4 个方 ...
谢谢,问一下,就是您写代码时那个分号加在一列感觉很清晰,您是直接敲得空格,还是有其他便捷操作 许诺一号 发表于 2019-1-29 23:50
谢谢,问一下,就是您写代码时那个分号加在一列感觉很清晰,您是直接敲得空格,还是有其他便捷操作
不好意思,纯粹体力劳动,习惯而已。
页:
[1]