Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] траектория черепахи


Автор: Randol 5.8.2007, 16:11
нужно на массив 20 на 20 начерчит траекторию черепахи который передвигается спомощю клавиш на С++.

сначало все элементы массива равны нульу. элементы движения черепахи равниваются нульу.

1-вперет, 2-направа, 3-налево, 4-назад, шаг черепахи ведется после ведение стороны, 6-печатает на екран переделанный массив и 9-останавливает движения.
Я незнаю как сохранить место черепахи и передать ее заново в функцию.

помагите с задачой, как оно решается?


M
Kuvaldis
Не забываем указывать язык программирования в названии темы!

Автор: Solomon 5.8.2007, 16:17
Цитата(Randol @  5.8.2007,  15:11 Найти цитируемый пост)
 начерчит траекторию черепахи который передвигается спомощю клавиш

а эта траектория как должна задаватся? 0- не ходи тут.. 1- ходила7 или 1-первый шаг 2-второй n-энный или как?

Код

int array[20][20];

int CoordX=0;//типа текущие координаты
int CoordY=0;

if(CoordX>0 && (нажата клавиша влево))
CoordX--;

if(CoordX<19 && (нажата клавиша вправо))
CoordX++;


if(CoordY>0 && (нажата клавиша вверх))
CoordY--;

if(CoordY<19 && (нажата клавиша вниз))
CoordY++;


это такое приблезительное описание...
и потом из переменных 
 CoordX=0;//типа текущие координаты
CoordY=0;
ты в любой момент сможеш получить текущие координаты


M
Guedda
Пользуйтесь кнопкой "Код"!

Автор: Randol 5.8.2007, 16:24
черепаха сначало стаит на позиций 0; 0 на массиве.
и допустим начинаю ходить:
Код

2   15 
4   15
3   15
1   15
9
press any key to continue


на этом движения заканчивается.
если до "9" вести 6 то нужно печатася квадрат из единиц на 15 элементов.

Автор: Solomon 5.8.2007, 16:39
Цитата(Randol @ 5.8.2007,  15:24)
черепаха сначало стаит на позиций 0; 0 на массиве.
и допустим начинаю ходить:
Код

2   15 
4   15
3   15
1   15
9
press any key to continue


на этом движения заканчивается.
если до "9" вести 6 то нужно печатася квадрат из единиц на 15 элементов.

А что такое число 15 в протоколе выполнения?

Автор: JAPH 5.8.2007, 20:01
Solomon, как далеко ходить, вроде smile
Randol, приведите сам квадрат. Желательно, для такого ввода:
Код

2 4
4 4
3 2
2 4
1 2
3 4
6
9

Что есть вперёд-назад-вправо-влево? Может, вверх-вниз-вправо-влево?
Цитата
Я незнаю как сохранить место черепахи и передать ее заново в функцию.

Функцию в студию smile

P.S. А где в заголовке [C++]?

Автор: Rockie 6.8.2007, 12:20
Цитата(Randol @  5.8.2007,  16:11 Найти цитируемый пост)
Я незнаю как сохранить место черепахи и передать ее заново в функцию.

Можно сделать позицию черепахи полем класса


Автор: Rockie 6.8.2007, 14:15
Код

#include <iostream>
#include <conio.h>

using namespace std;

class Game{
    int field[20][20];  // поле для черепахи
    int x, y;           // координаты черепахи  
public:
    Game();             // инициализируем поле и координаты 
    void Display();     // показываем поле
    void Move();        // "передвигаемся"
};

Game::Game()            // инициализируем поле и координаты
{    
    for(int i=0;i<20;i++)
     for(int j=0;j<20;j++)
         field[i][j]=0;
    x = y = 0;
}

void Game::Display()    // показываем поле
{
    system("cls");      // очистка экрана
    for(int i=0;i<20;i++)
    { 
      for(int j=0;j<20;j++)
       { if(i==x && j==y) cout<<'T';  // позиция черепахи
           else cout<<field[i][j];
       } cout<<'\n';
    }
}

void Game::Move()
{
      char t = getch();
      // двигаем черепаху, здесь надо добавить проверку на выход за предел массива
      if(t == 's') x++;             
      if(t == 'a') y--;
      if(t == 'd') y++;
      if(t == 'w') x--;
}

int main()
{
    Game obj;
    obj.Display();

    for(int i=0;i<10;i++)            // 10 ходов черепахи
    {
        obj.Move();
        obj.Display();
    }

    return 0;
}

Автор: Randol 7.8.2007, 17:12
ВСЕ!
зделал. нетак как хотелось но всеравно получилось.
спосибо всем.


M
Guedda
Не забываем отмечать вопрос решенным!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)