1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bupt_xyg-flappy-bird

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

Флаппи Берд

Это итоговая большая работа по C++ для второго курса студентов Пекинского университета почты и телекоммуникаций xyg, yy и zh.

Классы

Представленные ниже классы полностью разъединены и не зависят друг от друга, достаточно включить файл hpp в свой код. Если кто-то из студентов хочет использовать представленные ниже функции, то можно напрямую через #include "foo.hpp" включить эти файлы в свой проект.

Например, включение классов Bird и Controller:

#include "flappy_bird/Bird.hpp"

Bird

Все экземпляры класса Bird имеют уникальный идентификатор (id), который нельзя изменить.

Конструктор

Bird bird;
Bird bird(0,0,1,1,'%');
Bird bird = Bird(0,0,1,1,'%');
// Параметры: x,y,w,h,symbol

Интерфейс

get_*

Интерфейс get_* предоставляет средства для получения соответствующих свойств экземпляра класса Bird.

get_id()
get_x()
get_y()
get_w()
get_h()
get_symbol()
set_*

Интерфейс set_* предоставляет средства для установки соответствующих свойств экземпляра класса Bird.

set_x(fbint)
set_y(fbint)
set_w(fbint)
set_h(fbint)
set_symbol(fbint)
operator

Интерфейс operator предоставляет средства для выполнения операций над свойствами _x и _y экземпляра класса Bird.

add_x(fbint)
add_y(fbint)
Bird bird;

bird.add_y(1);      // Опускаемся на 1 клетку
bird.add_y(-1);     // Поднимаемся на 1 клетку
bird.add_x(1);      // Перемещаемся вперёд на 1 клетку
bird.add_x(-1);         // Перемещаемся назад на 1 клетку

Controller (Class)

Конструктор

Controller controller;
Controller controller('W','A','S','D');
Controller controller = Controller('W','A','S','D');

Интерфейс

bind(Bird&)

Если вы хотите использовать экземпляр класса Controller для управления экземпляром класса Bird, то необходимо связать их с помощью метода Controller.bind.

  • Один экземпляр Controller может быть связан с несколькими экземплярами Bird.
  • При повторной попытке связать один и тот же экземпляр Bird с одним и тем же экземпляром Controller, метод bind вернёт false, указывая на неудачную попытку связывания.
  • Один и тот же экземпляр Bird может быть связан с несколькими экземплярами Controller.
#include <iostream>
Controller ctrl1;
Controller ctrl2;
Bird bird1;
Bird bird2;

// Один экземпляр Controller может быть связан с несколькими экземплярами Bird
ctrl1.bind(bird1);
ctrl1.bind(bird2);

// Один экземпляр Bird может быть связан с несколькими экземплярами Controller
ctrl1.bind(bird1);
ctrl2.bind(bird1);

// Неудачная попытка связать один экземпляр Bird с одним экземпляром Controller несколько раз
// Пример выведет «Ошибка связывания»
if (ctrl1.bind(bird1))
    std::cout << «Связывание успешно» << std::endl;
else
    std::cout << «Ошибка связывания» << std::endl;
action_*

Интерфейс action_* позволяет вручную запускать действия связанного экземпляра Bird.

action_jump()
action_down()
action_forward()
action_backward()
trigger()

Метод trigger() отслеживает, нажаты ли клавиши, установленные в экземпляре Controller, и запускает соответствующие действия.

#include <iostream>
Bird bird1;
Bird bird2;
Controller ctrl('W','J','D','A');
if (control1.bind(test1)) std::cout << bird1.get_id() <<":bind success" << std::endl;
if (control1.bind(test2)) std::cout << bird2.get_id() <<":bind success" << std::endl;
while (1)
{
    control1.trigger();
}

Map (Class)

Menu (Class)

Rank (Class)

Класс Rank — это контейнерный класс, используемый для хранения рейтингов игроков. Класс Rank всегда сохраняет упорядоченное состояние (по убыванию). Экземпляры класса Rank всегда сохраняют данные в исходный файл при уничтожении.

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

Для создания экземпляра класса Rank требуется файл JSON с определёнными данными.

Экземпляры класса Rank сохраняют данные обратно в исходный файл JSON при уничтожении.

Конструктор

При создании экземпляра класса Rank необходимо указать путь к файлу JSON.

using rank = flappy_bird::Rank;
using element = flappy_bird::element;

rank data("foo.json");

Данные JSON

Данные файла JSON, используемые для создания экземпляров класса Rank, должны соответствовать следующим требованиям:

  • Должен быть элемент "data_count" : int, указывающий количество данных в этом экземпляре класса Rank.
  • Должно быть от "1" до "$data_count" объектов, каждый из которых должен иметь элементы "name":string и "score":int.

Пример допустимого содержимого файла JSON:

{
  "data_count": 7,
    "1": {
        "name": "zzy",
        "score": 190
    },
    "2": {
        "name": "xyg",
        "score": 100
    },
    "3": {
        "name": "yy",
        "score": 90
    },
    "4": {
        "name": "xyg",
        "score": 70
    },
    "5": {
        "name": "xyg",
        "score": 20
    },
    "6": {
        "name": "crh",
        "score": 10
    },
    "7": {
        "name": "xyg",
        "score": 10
    }
}

Интерфейс

append

Этот метод используется для добавления данных в экземпляр класса Rank, где данные представлены типом element.

using rank = flappy_bird::Rank;
using element = flappy_bird::element;
rank data;

// Неявное добавление
data.append({10,"xyg"});
data.append({20,"yy"});

// Явное добавление через тип element
data.append(element({100,"wkh"}));

// Цепочка добавления
data.append({10,"xyg"})
    .append({20,"ycy"});
Методы сериализации
dump

Метод dump позволяет сериализовать экземпляр класса Rank в фиксированном формате.

  • Метод dump имеет необязательный параметр int count, который указывает максимальное количество элементов данных для сериализации.
  • После сериализации данные в экземпляре класса Rank остаются упорядоченными.
rank data("foo.json");

cout << data.dump() << endl;
cout << data.dump(5) << endl;

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Информация в запросе не несёт технической направленности. Возможно, это название игры или проекта, но без контекста сложно определить его значение и происхождение. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bupt_xyg-flappy-bird.git
git@api.gitlife.ru:oschina-mirror/bupt_xyg-flappy-bird.git
oschina-mirror
bupt_xyg-flappy-bird
bupt_xyg-flappy-bird
master