Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Изменяется значения двух ссылок при изменении одной.

14K
05 сентября 2007 года
2504
33 / / 27.03.2007
Пишу змейку.
Не могу понять почему координата хвоста и головы меняются одновременно.
Т.Е. Head->X=45;

//то и Tail->X==45

Tail->X=13;
//то и Head->X==13
ПОЧЕМУ???????


Код:
#define StX 24
#define StY 12

using namespace std;

class Part
{
public:
    char data;
    int X, Y;
    Part *next, * prev;
    Part()
    {
        X=StX;
        Y=StY;
        data='$';
        next = prev = NULL;

    }
   
};

class Snake:public Part
{
    Part *Head;
    Part *Tail;
    int Count;
public:
    Snake()
    {
        Head = Tail = NULL;
        Count = 0;
    }
    void Add(char c = '$',int key = 75)
    {
        Part *temp = new Part;
        temp->data = c;
        temp->prev = 0;
        temp->next = Tail;
       
        // Если элементы есть?
        if(Tail != 0){
            Tail->prev = temp;
            temp->X = Tail->X;
            temp->Y = Tail->Y;
            Tail->X = next->X;
            Tail->Y = next->Y;
        }

       // Если элемент первый, то он одновременно и голова и хвост
       if(Count == 0)
          Head = Tail = temp;
       else
          // иначе новый элемент - tail
          Tail = temp;

       Count++;
    }






void Move(int key = 75)
    {
        if(75 == key)// 75 Left
        {
            Head->X=45;
            Tail->X=13;
               }
7.8K
05 сентября 2007 года
Tingo
201 / / 17.05.2007
Я не очень разбираюсь в этом но думаю проблема крется здесь:
Part *Head;
Part *Tail;
ты их вроде обявляеш, да не инициализируеш.

может быть я не прав.
245
05 сентября 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Выдели память для

Part *Head;
Part *Tail;

или, что я думаю в данном случае, будет лучше, объяви статично:

Part Head;
Part Tail;
8.9K
06 сентября 2007 года
Kulti
77 / / 29.07.2006
Может ты пытаешься к змейке из одного элемента это применить? Там у тебе Head=Tail.

И вообще, я бы тебе посоветовал использовать стандартный связный список, а не свой лепить.
361
06 сентября 2007 года
Odissey_
661 / / 19.09.2006
Хм... ну во-первых непонятно почему Snake наследуется от Part?
То есть получаем в классе Snake кроме Part *next, * prev, еще и Part *Head с Part *Tail... зачем?
Ну да ладно... может чего то недопонял.
Из кода не видно как меняются этот next и prev.
 
Код:
Tail->X = next->X;
Tail->Y = next->Y;

что выше происходит загадка.
Цитата:
И вообще, я бы тебе посоветовал использовать стандартный связный список, а не свой лепить.


Иногда студентов просят реализовать двусвязный список самостаятельно. Возможно это как раз такой случай?

8.9K
06 сентября 2007 года
Kulti
77 / / 29.07.2006
Цитата: Odissey_
что выше происходит загадка.


Вот поэтому я и посоветовал STL использоватью:) Что это может идти в разрез с заданием как-то не подумал :o

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог