鱼C论坛

 找回密码
 立即注册
查看: 3013|回复: 4

关于在DEV-C++上跑程序窗口闪退的问题

[复制链接]
发表于 2019-1-29 20:56:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我在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;
}
请教一下这是哪里出了问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-29 22:28:44 | 显示全部楼层
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-29 23:35:45 | 显示全部楼层
是编辑器的原因,改成VC++就可以执行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-29 23:50:49 | 显示全部楼层
jackz007 发表于 2019-1-29 22:28
楼主的代码在我这里是可以正常编译运行的,不过,我把代码稍作修改,可以直接用数字键盘区的 4 个方 ...

谢谢,问一下,就是您写代码时那个分号加在一列感觉很清晰,您是直接敲得空格,还是有其他便捷操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-29 23:53:51 | 显示全部楼层
许诺一号 发表于 2019-1-29 23:50
谢谢,问一下,就是您写代码时那个分号加在一列感觉很清晰,您是直接敲得空格,还是有其他便捷操作

    不好意思,纯粹体力劳动,习惯而已。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 14:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表