логика и графика Match3 game( три в ряд)

SFML и C++ Уроки \ Разработка игр Форумы Логика игр логика и графика Match3 game( три в ряд)

В этой теме 7 ответов, 3 участника, последнее обновление LastikPro LastikPro 3 мес., 1 неделя назад.

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Сообщения
  • #4122

    Yakov
    Участник
    Сообщений:3

    Зарегистрирован:
    20.08.2016

    Репутация:0

    Доброго времени суток уважаемые форумчане.Вынужден писать (курсовая работа)  так называемую игру “Три в ряд” суть которой заключается в том, чтобы на поле 9х9 из шариков разных цветов составить три шарика одинакового цвета  в ряд чтобы они исчезли. Разработать игру нужно с использованием ООП. В связи с этим возник ряд проблем которые заключаются в том, что я хреного не очень хорошо понимаю как должна строится структура программы(игры) (сколько классов, как взаимодействовать с объектами и.т.д)   и как в этой игре реализовать  построение поля 9х9 с помощью классов и взаимодействие шаров. Возникнет вопрос почему я собственно приперся на форум по SFML, а потому что игру нужно писать на с++, а наиболее удобная библиотека по работе с графикой и для создания игр, судя по отзывам, это SFML. Я не прошу написать за меня курсовую, я просто ищу наставника, который знаком с SFML,поможет и подтолкнет мое понимание ООП в нужное русло. Приведу код который я с горем пополам написал это класс одного шарика и главная функция которая его отрисовывает. Одна из проблем которая возникла это шарик не отрисовывается на фоне и как создать поле 9х9 из этих шаров с разными цветами (зачатки рандомного распределения цветов уже есть в классе). Над полем есть несколько идей это использовать матрицу, использовать вектор (Vector2i), использовать двумерный массив (думаю что Vector2 i и двумерный массив это одно и тоже ) Связаться со мной можно тут и в вк (https://vk.com/dude_postal)

    Вложения:
    You must be logged in to view attached files.
    #4124
    +1

    barbar
    Участник
    Сообщений:28

    Зарегистрирован:
    27.06.2015

    Репутация:14

    Я когда то писал клон игры Lines, если хочешь могу тебе сорцы скинуть. Там правда нет ООП, но думаю будет не сложно внедрить, там всего лишь 300 строчек. На счёт Vector2 i ты не прав, это аналог одномерного массива из 2х чисел типа int. На счёт того что не отображается спрайт, перепроверь, правильны ли пути.

    #4125

    Yakov
    Участник
    Сообщений:3

    Зарегистрирован:
    20.08.2016

    Репутация:0

    Спасибо за ответ.  По моему Lines это не совсем то, что нужно (возможно я не уверен, просто видел на хабре решение по игре Lines, но это было не то) У меня есть пример таких “шариков” без ООП, но то ли я чутка туговат (а это скорее всего так), то ли написать “шарики” с помощью ООП гораздо труднее чем без. Просто проблема в том что мозг еще не заточен в понимании ООП и в этом и причина моей тугости. Класс одного шарика я создал. Теперь нужно создать поле 9х9 из таких шариков с рандомной генерацией цвета. А потом и логика пойдет.  Приведу  код тех шариков без ООП.( не знаю зачем )

     

    #4126

    barbar
    Участник
    Сообщений:28

    Зарегистрирован:
    27.06.2015

    Репутация:14

    Хм, думаю надо сделать класс для шарика и для сетки. В классе для шарика сделать такие функции как выделение и перемешение, и этот класс опираясь ещё на класс сетки совершал данные действия. Ещё в классе сетки методы сделать для проверки условий. Либо вообще один класс сетки. Я честно говоря для себя редко пишу в ООП, не всегда понимаю его целесообразности. Но если надо то в принципе могу, только не факт что это будет правильно и по всем канонам.

    #4127

    Yakov
    Участник
    Сообщений:3

    Зарегистрирован:
    20.08.2016

    Репутация:0

    Вот и я тоже подумал, что нужно запилить два класса: один с описанием одного шарика, другой с созданием сетки с помощью этого шарика, а все действия и анимацию  я думал прописать в main`e. Остался вопрос как запихать все эти шары в сетку и заставить отображаться в виде  9х9 + рандомные цвета

    #4128
    LastikPro
    LastikPro
    Участник
    Сообщений:93

    Зарегистрирован:
    09.07.2015

    Репутация:57

    Вот вам небольшая наброска того как я вижи решение задачи.Создал два класса: сетки и шариков. Сетка состоит из квадратов 30 на30, а шарики представляют и себя структур которая содержит : объект (круг,цвет,размер,и положение на координатной сетке) и  маркер(красный,зелёный и синий). По маркеру можно будет отличать шарики в проверке на пересечения. В методе void rulechek() небольшой пример: если два красных шара соприкоснуться они удаляються.

     

    #4132

    Yakov
    Участник
    Сообщений:3

    Зарегистрирован:
    20.08.2016

    Репутация:0

    Спасибо большое за ответ. Ваше наброски интересные и основную идею я понял, но пару вопросов в понимании остались (ибо я тугой). Первый вопрос: разве типы для вектора не ограничиваются int, float и unsignet int?(Сразу скажу что с векторами я плохо знаком и в Visual Studio компилятор выдает ошибку  “идентификатор “RectangleShape” не определен” ) Вроде больше вопросов нет. Я набросал два своих класса, но проблема возникла с рандомом он красит все шары в один цвет, а должен в разные. И я пытался и через enum и как только не пытался все равно не выходит сделать их всех разными. А вопрос с сеткой я решил с помощью матрицы, но не уверен что смогу потом с помощью мыши с объектами взаимодействовать

    Вложения:
    You must be logged in to view attached files.
    #4135
    LastikPro
    LastikPro
    Участник
    Сообщений:93

    Зарегистрирован:
    09.07.2015

    Репутация:57

    std:: vector<> принемает любую переменную. sf::RectangleShape  базовый класс SFML,  если он не определен значит у вас проблемы с подключением библиотек.

     

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)

Для ответа в этой теме необходимо авторизоваться.