0 / 0 / 0
Регистрация: 28.09.2020
Сообщений: 7
1

Используя switch и while создать поле и передвигаться по нему с клавиатуры

28.11.2021, 19:39. Показов 612. Ответов 2

Author24 — интернет-сервис помощи студентам
Не могу найти ошибки(

Нужно используя switch и while создать поле и передвигаться по нему с клавиатуры.
1)В классе создать конструктор, который получает размерность матрицы и заполняет ее препятствиями(1) и выводит на экран
Пример:
ввод:5
вывод:
0 0 0 1 0
0 1 1 0 0
0 0 1 0 0
1 0 0 0 1
0 0 1 1 0
Матрица может быть булевая, целочисленная или символьная.
2)Описать метод который по x и y (стартовые координаты) начинает симуляцию.
3)В симуляции организовать считывание команд с клавиатуры. Команды считывать как символы (char), 'w' - движение вверх, 'a' - движение влево, 's' - вниз, 'd' - вправо, 'e' или 'q' - завершение программы. На каждой итерации цикла выводить текущие координаты.
4)Перемещение возможно только если целевая клетка свободна. Пространство за границами матрицы расценивать как препятствие. При попытке пройти сквозь препятствие выводить сообщение, например "Невыполнимая команда - препятствие на пути".
5)Также нужно реализовать деструктор.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
 
using namespace std;
 
class GamingField{
    public:
    bool **A;
    int n,i,j,x,y;
    int w,a,s,d,q,e;
    int Matrix(int dimension){
        n = dimension;
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                A[i][j] = rand()%2+1;
                cout << A[i][j] << " ";
            }
            cout << endl;
        }
    }
    int Coords(int CoordX,int CoordY){
        x = CoordX;
        y = CoordY;
    }
    void Simulation(char command){
        switch(command){
        case 'w':
            y = y - 1;
            cout << '(' << x << ',' << y << ')' << endl;
            if (x < 0 || y < 0 || A[x][y - 1] == 1){
                cout << "Препятствие";
            }
            break;
        case 'a':
            x = x - 1;
            cout << '(' << x << ',' << y << ')' << endl;
            if (x < 0 || y < 0 || A[ - 1][y] == 1){
                cout << "Препятствие";
            }
            break;
        case 's':
            y = y + 1;
            cout << '(' << x << ',' << y << ')' << endl;
            if (x < 0 || y < 0 || A[x][y + 1] == 1){
                cout << "Препятствие";
            }
            break;
        case 'd':
            x = x + 1;
            cout << '(' << x << ',' << y << ')' << endl;
            if (x < 0 || y < 0 || A[x+1][y] == 1){
                cout << "Препятствие";
            }
            break;
        case 'q':
            break;
        case 'e':
            break;
        }
    }
    //~Matrix();
    //~Coords();
};
 
int main(){
    GamingField GF;
    GF.Matrix(3);
    GF.Coords(2,2);
    GF.Simulation('w');
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2021, 19:39
Ответы с готовыми решениями:

НЕ могу найти ошибки (с++)
Написать программу, которая «сжимает» текстовый файл, считывая его и заменяя все повторяющиеся...

не могу найти ошибки
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream.h&gt; class primer { public: void...

Не могу найти ошибки
Не могу в коде найти ошибки. Вроде бы код правильный, но программа ругается. Предисловие. Задача....

Не могу найти ошибки в коде
написал код, но он почему то не работает #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace...

Не могу найти причину ошибки !
#include&lt;locale.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream&gt; #include&lt;time.h&gt; #include&lt;algorithm&gt;...

2
7786 / 6554 / 2983
Регистрация: 14.04.2014
Сообщений: 28,631
29.11.2021, 12:06 2
Память хотя бы выделяй.
0
Вездепух
Эксперт CЭксперт С++
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,053
29.11.2021, 12:14 3
Цитата Сообщение от PaladinTop1 Посмотреть сообщение
Не могу найти ошибки
Какой ошибки?
0
29.11.2021, 12:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2021, 12:14
Помогаю со студенческими работами здесь

Не могу найти ошибки в коде
Имеется код: #include &lt;iostream&gt; using namespace std; long long a, max, min; int s, n, m, k, i,...

Не могу найти тип ошибки OpenSSL
ЗДравствуйте. Юзаю asio standalone в связке с OpenSSL. То есть asio::ssl. Проблема...

Не могу записать параметр в реестр (найти и исправить ошибки)
AnsiString SRT; TRegistry *reg=new TRegistry(); reg-&gt;RootKey=HKEY_LOCAL_MACHINE;...

Ввести целое число N > 0, являющееся некоторой степенью числа 2 Ошибки не могу найти
Ввести целое число N &gt; 0, являющееся некоторой степенью числа 2: N=2K. Найти целое число K —...

Необходимо наставление с решением данной задачи,так как самостоятельно найти ошибки я не могу
Методические указания Рассмотреть пример использования оператора цикла &lt;for&gt; решить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru