Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mvgreen
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 15
#1

Препятствия в "Черепашке" - C++

15.10.2013, 21:10. Просмотров 445. Ответов 6
Метки нет (Все метки)

Написал следующую программу, некое подобие школьной "Черепашки"
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main(){
    int j, i, x, y;
    char a, tab[31][31];
    x=0;y=0;
    for(;;){
    system("cls");
        for (j=0; j<10; j++){
            for (i=0; i<10; i++){
                if (x==i && y==j) tab[j][i]='X';
                else tab[j][i]='O';
                cout << tab [j][i];
                }
                cout << "\n";
            }
            vvod:
           a=getch();
           switch(a){
                     case 119: y--; break;
                     case 115: y++; break;
                     case 97: x--; break;
                     case 100: x++; break;
                     default: goto vvod;
                     }}
           return 0; 
        }
Хочется добавить сюда препятствия, т.е. тайлы, на которые невозможно переместиться. помогите сделать это как-нибудь элегантно, у самого получилось очень громоздко, с сильным усложнением всей схемы, и то вставил лишь одно препятствие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 21:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Препятствия в "Черепашке" (C++):

Небольшой пример. Игра "змейка" - как в ней делают препятствия - C++
Здравствуйте сегодня случайно увидел старенькую игру &quot;змейка&quot; и меня заинтересовало как именно они делают там препятствия чтобы их нужно...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

6
yll3
1 / 1 / 2
Регистрация: 19.11.2012
Сообщений: 12
16.10.2013, 12:36 #2
Цитата Сообщение от mvgreen Посмотреть сообщение
for(;;){
Для чего он нужен?
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,553
Завершенные тесты: 1
16.10.2013, 13:22 #3
Цитата Сообщение от yll3 Посмотреть сообщение
Для чего он нужен?
Бесконечный цикл.

Добавлено через 12 минут
Цитата Сообщение от mvgreen Посмотреть сообщение
некое подобие школьной "Черепашки"
Это что-то типа вот этого?
0
mvgreen
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 15
16.10.2013, 14:48  [ТС] #4
да,только не рисующая. мне сложно было подобрать более подходящее описание. суть в том,что 'Х' передвигается по полю при помощи клавиш WASD
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,553
Завершенные тесты: 1
16.10.2013, 15:26 #5
mvgreen, заполните массив tab какими-нибудь отличительными символами, и, при нажатии на кнопку, проверяйте ячейку, в которую хотите переместиться.

C++
1
2
3
4
5
6
7
           switch(a){
                     case 119: if(!tab[x][y-1]=='6') y--; break;
                     case 115: if(!tab[x][y+1]=='6') y++; break;
                     case 97:  if(!tab[x-1][y]=='6') x--; break;
                     case 100: if(!tab[x+1][y]=='6') x++; break;
                     default: goto vvod;
                     }
Добавлено через 6 секунд
Где
C++
1
'6'
стена или яма с кислотой.
1
mvgreen
0 / 0 / 0
Регистрация: 08.10.2013
Сообщений: 15
16.10.2013, 18:46  [ТС] #6
Цитата Сообщение от SatanaXIII Посмотреть сообщение
заполните массив tab какими-нибудь отличительными символами
А как это сделать? очень не дружен с символьными массивами
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,553
Завершенные тесты: 1
16.10.2013, 19:15 #7
Ну для начала у вас вообще он нигде изначально не заполняется.
Второе - он объявлен как
C++
1
tab[31][31];
То есть размер поля тридцать один на тридцать один. А обходите вы его как
C++
1
2
        for (j=0; j<10; j++){
            for (i=0; i<10; i++){
То есть только до десятого элемента. Десять на десять.

Чтобы не возникало таких проблем лучше завести отдельную переменную (или две) под размер и везде писать ее. Таким образом вы сможете изменив только в одном месте значение этой переменной, изменить ее во всей программе:
C++
1
2
3
4
const int n = 31;
tab[n][n];
       for (j=0; j<n; j++){
            for (i=0; i<n; i++){
Теперь по поводу изменения массива - рисования препятствий.
Вам нужно либо в голове представить где у вас будут стены и вручную заполнить именно эти элементы массива:
C++
1
2
3
4
5
6
tab[3][7] = '6';
tab[1][3] = '6';
tab[2][6] = '6';
tab[14][29] = '6';
tab[11][11] = '6';
tab[19][19] = '6';
либо более-менее наглядно:
C++
1
2
3
4
5
6
7
8
9
10
tab[31][31] = { {'O','O','O','O','6','6','6','O','O','O','O','O','O','6','6','6','6','6','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'O','O','O','O','O','O','6','O','O','O','O','O','O','6','O','O','O','6','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'O','O','O','O','O','O','6','O','O','O','O','O','O','6','O','O','O','6','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'6','6','6','6','O','O','6','O','O','O','O','O','O','6','O','O','O','6','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'O','O','O','6','O','O','6','O','O','O','O','O','O','6','6','6','6','6','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'O','O','O','6','O','O','6','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'O','O','O','6','O','O','6','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O'},
                {'O','O','O','6','O','O','6','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O'},
/*Так 31 раз*/ 
}
Добавлено через 5 минут
На большом пол наверное не совсем хорошо видно:
C++
1
2
3
4
5
tab[4][4] = { {'O','O','6','O',},
              {'6','O','6','O',},
              {'6','O','6','6',},
              {'6','O','O','O',}
}
1
16.10.2013, 19:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2013, 19:15
Привет! Вот еще темы с ответами:

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие &quot;зарплата&quot; не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include &lt;iostream&gt; #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru