Другие языки программирования и технологии

Пацаны помогите найти логическую ошибку в C++

#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");

char ch = 'a';

int x = 10;

int y = 10;

cout << "Для выхода нажмите ENTER"<< endl;
while ( ch != ' \r ')
{
cout << " \nВАШИ КОРДИНАТЫ" << x << " . " << y;
cout << " \nВЫБЕРИТЕ НАПРАВЛЕНИЕ ( n, s, e, w ) ";
ch = getche();

if ( ch == ' n ' )
y--;
else
if ( ch == ' s ' )
y++;
else
if ( ch == ' e ')
x--;
else
if ( ch == ' w ')
x++;

}
cin.get();
}
Morgoth Bauglir
Morgoth Bauglir
74
// Для перемещения используйте клавиши стрелок
#include <iostream>
#include <Windows.h>
#include <conio.h>
using namespace std;
enum DIRECTION {
LEFT = 75,
UP = 72,
RIGHT = 77,
DOWN = 80
};
COORD move(COORD, unsigned char, unsigned char, SHORT, SHORT);
int main() {
COORD coord;
coord.X = 0;
coord.Y = 0;
const SHORT limit_x = 79;
const SHORT limit_y = 24;
CONSOLE_CURSOR_INFO cursor = { 1, false };
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor);
unsigned char marker = 0xDB;
cout << marker;
unsigned char direction;
while (true) {
if (_getch() == 0xE0) {
direction = _getch();
coord = move(coord, direction, marker, limit_x, limit_y);
}
}
return 0;
}
COORD move(COORD coord, unsigned char direction, unsigned char marker, SHORT limit_x, SHORT limit_y) {
bool attemp = true;
switch (direction) {
case LEFT:
if (coord.X) --coord.X;
else attemp = false;
break;
case RIGHT:
if (coord.X < limit_x) ++coord.X;
else attemp = false;
break;
case DOWN:
if (coord.Y < limit_y) ++coord.Y;
else attemp = false;
break;
case UP:
if (coord.Y) --coord.Y;
else attemp = false;
break;
default:
attemp = false;
break;
}
if (attemp) {
system("cls");
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
cout << marker;
}
return coord;
}
Юрий Петров
Юрий Петров
98 096
Лучший ответ
зачем нужно cin.get(); ?
Тима Romantik может имелось в виду:
_getch(); с режимом ожидания закрытия консоли? ))
шестая в первом ряду четвертого ряда с лева третья
АП
Антон Перлов
21 138
Короче, пацан, расклад такой:
ch = getche();
гетчё - это не по понятиям, по понятиям - естьчё?, а особо ровные пацаны используют getch(char);
И чтобы не выглядеть беспредельщиком в глазах правильных сидельцев, а также показать своё знание понятий - на малявах следует изображать switch(char){case:...}, вместо кодлы if`ов.
Петя Кристев getch тоже не особо по понятиям ISO =)