@lion221133

Не работает консольная программа, сразу же закрывается. Что делать?

Привет! Вот, начал изучать язык недавно, немного простых прог, а потом решил перейти к чему-то более сложному. Программа для управления решеткой влево/вправо/вверх/вниз клавишами wasd с использованием conio.h. К сожалению закрывается при запуске.
Код:
#include <iostream>
#include <conio.h>
using namespace std;
int x=30;
int y=30;
int dir=0;
void DrawPoint(){
	system ("cls");
	if (dir==0){
		for (int i =0; i<x; i++){
			cout <<" ";
			for (int j=0;j<y;j++){
				cout<<endl;
				if (i==x && j==y){
					cout <<"#";
				}
			}
		}
}
       if (dir==1){
        for (int i=0;i<x;i++){
        	if (i==x){
        		cout <<"#";
        		x++;}
        	else{
        		cout <<" ";
        	      x++;
        	}	
}
       }
       if (dir==2){
       	for (int i=0; i<x;i++){
       		if (i==x){
       		cout <<"#";
       		x=x-1;}
       		else {
       			cout <<" ";
       		}
       	}
       }
       if (dir==3){
       	for (int i=0;i<x;i++){
       		cout <<" ";
       		for (int j=0;j<y;j++){
       			if (i==x && j==y){
                   cout <<"#";
       			y++;
       			}
       			else {
       				cout <<endl;
       				y++;
       			}
       			
       		}
       	}
       }
        if (dir==4){
        	for (int i=0;i<x;i++){
        		cout <<" ";
        		for (int j=0;j<y;j++){
        			if (i==x && j==y){
        			cout <<"#";
        			y=y-1;
        			}
        			else {
        				cout <<endl;
        				y=y-1;
        		}
        	}
        }
}
}
void logic(){
	switch (_getch()){

		case 'w':
  	dir = 3;
   	break;

		case 's':
  	dir = 4;
   	break;

		case 'a':
  	dir = 2;
   	break;

		case 'd':
  	  	dir = 1;
   	break;

		default :
	  dir = 0;
   	break;	
}
}
int main(){
	void logic();
	void DrawPoint();
}
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
@nrgian
Программа выполняет ровно то, что вы ей и приказали.
Вы не приказали программе чтобы она ожидала что либо или повторяла (вечно) какое-то действие - вот она и завершает.

Вангую, что вы хотите, а для этого нужно завернуть сей код:
void logic();
void DrawPoint();

в вечный цикл.

P.S.:
Откройте для себя pretty formatter
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mmmaaak
@mmmaaak
добавь в конец считывание ввода от пользователя, тогда будет ждать пока юзер как минимум нажмет энтер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы