@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();
}
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@nrgian
Программа выполняет ровно то, что вы ей и приказали.
Вы не приказали программе чтобы она ожидала что либо или повторяла (вечно) какое-то действие - вот она и завершает.

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

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

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

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

Похожие вопросы