Форум программистов, компьютерный форум CyberForum.ru

Как сделать так, чтобы значения экземпляров класса не повторялись - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Считывание из текстового файла http://www.cyberforum.ru/cpp-beginners/thread1162632.html
Всем привет. У меня есть текстовый файл в котором, к примеру записана информация:"Фамилия Имя". Как мне из этого файла по словно считать информацию в переменные, то есть что бы переменные а="Фамилия", b="Имя".
C++ Изменение размера массива Допустим в main-е я объявил указатель определенного типа и создал переменную int size, затем адрес указателя и переменной size передаю первую функцию. В ней меняется значение переменной size и объявляется массив динамический массив, адрес которого совпадает с указателем, который я передал. Массив имеет размер size. Всё это возвращается в main, а затем передается в другую функцию, массив очищается... http://www.cyberforum.ru/cpp-beginners/thread1162616.html
C++ Разработать метод, который нечетное число заменяет на 0,а четное число уменьшает в два раза
Разработать метод f (х) , который нечетное число заменяет на 0, а четное число уменьшает в два раза. Продемонстрировать работу данного метода на примере.
Ошибка в конструкторе класса C++
Всем доброго времени суток! Есть простая задачка: Написать реализацию класса и короткую программку, использующую все функции-члены. Есть объявление класса: #ifndef COW_H #define COW_H class Cow {
C++ Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На http://www.cyberforum.ru/cpp-beginners/thread1162604.html
C++ Все целые числа из диапазона от А до В (А В), оканчивающиеся на любую четную цифру Вывести на экран: Замечание. Решите каждую задачу тремя способами - используя операторы цикла while, do while и for. подробнее

Показать сообщение отдельно
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
30.04.2014, 15:09     Как сделать так, чтобы значения экземпляров класса не повторялись
Я пытаюсь написать игру 2048.
Коротко об игре, для тех кто не знает:
Есть поле 4х4 в нем появляются на случайной позиции квадратики с значением 2 или 4, используя клавиши вправо,влево,вверх,вниз то эти квадратики перемещаются в заданном направлении,если два квадратика с одинаковым значением столкнутся,то они сольются в единый квадрат с значением в 2 раза больше.
При каждом движении, появляется новый квадрат на случайном, пустом месте.
Игра продолжается, пока есть свободные места, и есть движения.

Для этих "квадратиков" я сделала класс
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Rect
{
public:
    int x;//позиция по х
    int y;//позиция по y
    int value;//значение в квадрате
    static int id;//количество существующих квадратов
    int myid;//номер квадрата
    Rect();//конструктор(в котором кстате и есть вся проблема)
    Rect(const Rect &copy);
    ~Rect();
    void AddRects(int direction);
};
int Rect::id=0;
Rect *rectangles[16];


Я создала массив указателей, и при каждом движении создаю новый квадратик.
Вот конструктор
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Rect::Rect()
{
    id++;
    this->myid=id;
    this->x=rand()%4;
    this->y=rand()%4;
    /*for(int i=0;i<id;i++)
    {
        if((rectangles[i]->x==this->x)&&(rectangles[i]->y==this->y)&&(rectangles[i]->myid!=this->myid))
        {
            this->x=rand()%4;
            this->y=rand()%4;
        }
 
    }*/
 
    this->value=rand()%10;
    if(this->value==9)
        this->value=2;
    else
        this->value=4;
    glRectf(60+this->x*50,60+this->y*50,90+this->x*50,90+this->y*50);
}

Псевдослучайно я генерирую позицию квадрата, и затем рисую его, все хорошо, но когда добавляю код проверки наличи другого квадрата ,на той позиции программа завершается.
(код закоментирован)

В чем может быть проблема? Сначала, проблема была в том, что я проверяла равенство координат квадрата самим с собой, и они были одинаковые, и менялись, снова проверялись, и так по кругу, но я добавила проверку, если id нашего и проверяемого квадрата одинаковые они игнорируются..

Надеюсь я не запутала все....
В общем, как мне сделать проверку того, не появляется ли квадрат на том же месте что занято
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru