Консультация № 189303
04.05.2016, 21:40
0.00 руб.
05.05.2016, 09:47
0 0 0
Здравствуйте! У меня возникли сложности с таким вопросом:
Задание:

В реализации интерактивной игры необходимо отслеживать перемещение, в
пределах игрового поля, объекта, управляемого игроком. Представим в программе игровое поле
массивом целых значений Агеа(20Х20). В начале все элементы имеют значение ноль. Положение
перемещаемого объекта в конкретный момент времени можем задать, изменяя значение нужного
элемента Area с нуля на единицу. После нескольких перемещений "след", оставляемый объектом будет
выглядеть как цепочка единиц в поле нулей. Напишите собственную функцию int move(), которая, с
помощью функции int getch() (прототип в файле conio.h), возвращающей код нажатой клавиши,
определяет, в какую сторону сместился объект за один ход и возвращает 0, если сделан неправильный
ход, -1, если сделан шаг влево, 1 - шаг вправо, -11 - вверх и 11 - вниз (можно использовать любые другие
значения). Пользователь должен нажимать на клавиши с символами L или I, R или г, U или u, D ИЛИ d,
соответственно. Используйте оператор switch. Напишите программу тест, создающую игровое поле, вы-
зывающую некоторое число раз функцию move и отображающую на экране результат.


Программа:
[code h=200]int move()
{
int key;
key = _getch();
switch (key)
{
case 119: return 1;
case 115: return 2;
case 97: return 3;
case 100: return 4;

default: return 0;
break;
}
return key;
}

int main()
{
const int line = 20;
const int col = 20;
int Area[line][col];
int key = 0;

for (int i = 0; i < line; i++)
for (int j = 0; j < col; j++)
{
Area[i][j] = 0;
cout << Area[i][j] << " ";
if (j == col - 1) cout << endl;
}

int i = 0, j = 0;
while (1 < 2)
{
key = move();
switch (key)
{
case 1:
{
system("cls");
if (i != 0)
i--;

Area[i][j] = 1;
for (int l = 0; l < line; l++)
for (int k = 0; k < col; k++)
{
cout << Area[l][k] << " ";
if (k == col - 1) cout << endl;
}

} break;

case 2:
{
system("cls");
if (i != line - 1)
i++;
Area[i][j] = 1;
for (int l = 0; l < line; l++)
for (int k = 0; k < col; k++)
{
cout << Area[l][k] << " ";
if (k == col - 1) cout << endl;
}
}break;
case 3:
{
system("cls");
if (j != 0)
j--;
Area[i][j] = 1;
for (int l = 0; l < line; l++)
for (int k = 0; k < col; k++)
{
cout << Area[l][k] << " ";
if (k == col - 1) cout << endl;
}
}break;
case 4:
{
system("cls");
if (j != col - 1)
j++;
Area[i][j] = 1;
for (int l = 0; l < line; l++)
for (int k = 0; k < col; k++)
{
cout << Area[l][k] << " ";
if (k == col - 1) cout << endl;
}
}break;

default: break;

}

}
}
[/code]

можете объяснить следующее:
1. while (1 < 2) почему тут 1<2?
2.


[code h=200]case 1:
{
system("cls");
if (i != 0)
i--;

Area[i][j] = 1;
for (int l = 0; l < line; l++)
for (int k = 0; k < col; k++)
{
cout << Area[l][k] << " ";
if (k == col - 1) cout << endl;
}

} break;[/code]



это объяснить, как оно работает?

Обсуждение

Форма ответа