Найти в Дзене
Dull

Как сделать кликер в SDL2 C++

В этом руководстве мы создадим простую игру-кликер с использованием библиотеки SDL2 и C++. Игра будет отслеживать количество кликов мыши и отображать это количество на экране. Мы будем использовать библиотеку SDL_ttf для отображения текста. Перед тем как начать, убедитесь, что у вас установлены библиотеки SDL2 и SDL_ttf. Вы можете скачать их с официального сайта SDL или установить через пакетный менеджер вашей операционной системы. Для Ubuntu это можно сделать с помощью команды: sudo apt-get install libsdl2-dev libsdl2-ttf-dev Вот полный код нашей игры-кликера: #include <SDL2/SDL.h> #include <SDL2/SDL_ttf.h> #include <iostream> #include <string>
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
void drawText(SDL_Renderer *ren, TTF_Font *font, SDL_Color colorFont, int clicked) {
std::string text = "Simple clicker: " + std::to_string(clicked);
SDL_Surface *surfaceFont = TTF_RenderText_Solid(font, text.c_str(), colorFont);
SDL_Texture *textureFont = SDL_CreateText
Оглавление

В этом руководстве мы создадим простую игру-кликер с использованием библиотеки SDL2 и C++. Игра будет отслеживать количество кликов мыши и отображать это количество на экране. Мы будем использовать библиотеку SDL_ttf для отображения текста.

Установка SDL2 и SDL_ttf

Перед тем как начать, убедитесь, что у вас установлены библиотеки SDL2 и SDL_ttf. Вы можете скачать их с официального сайта SDL или установить через пакетный менеджер вашей операционной системы.

Для Ubuntu это можно сделать с помощью команды:

sudo apt-get install libsdl2-dev libsdl2-ttf-dev

Исходный код

Вот полный код нашей игры-кликера:

#include <SDL2/SDL.h> #include <SDL2/SDL_ttf.h> #include <iostream> #include <string>
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;

void drawText(SDL_Renderer *ren, TTF_Font *font, SDL_Color colorFont, int clicked) {
std::string text = "Simple clicker: " + std::to_string(clicked);
SDL_Surface *surfaceFont = TTF_RenderText_Solid(font, text.c_str(), colorFont);
SDL_Texture *textureFont = SDL_CreateTextureFromSurface(ren, surfaceFont);
SDL_FreeSurface(surfaceFont);

int fontW, fontH;
SDL_QueryTexture(textureFont, nullptr, nullptr, &fontW, &fontH);
SDL_Rect rectQuad = {(SCREEN_WIDTH - fontW) / 2, (SCREEN_HEIGHT - fontH) / 2, fontW, fontH};
SDL_RenderCopy(ren, textureFont, nullptr, &rectQuad);
SDL_DestroyTexture(textureFont);
}

int main(int argc, char **argv) {
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
SDL_Window *win = SDL_CreateWindow("Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, 0);
SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
SDL_Event e;

int clicked = 0;

TTF_Font *font = TTF_OpenFont("fonts/font.ttf", 40);
SDL_Color colorFont = {255, 255, 255};

bool running = true;
while (running)
{
while (SDL_PollEvent(&e))
{
switch (e.type)
{
case SDL_QUIT:
running = false;
break;

case SDL_MOUSEBUTTONDOWN:
clicked += 1;
std::cout << clicked << std::endl;
break;

default:
break;
}
}

SDL_SetRenderDrawColor(ren, 100, 30, 80, 255);
SDL_RenderClear(ren);
drawText(ren, font, colorFont, clicked);
SDL_RenderPresent(ren);
}

TTF_CloseFont(font);
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
TTF_Quit();
SDL_Quit();

return 0;
}

Объяснение кода

Подключение библиотек

В начале кода мы подключаем необходимые библиотеки: SDL2 для работы с графикой и SDL_ttf для работы с текстом.

Константы экрана

Мы определяем ширину и высоту экрана:

const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;

Функция drawText

Эта функция отвечает за отрисовку текста на экране. Мы создаем текстуру из строки, которая содержит количество кликов, и отображаем ее в центре экрана.

Основная функция main

  1. Инициализация SDL и TTF: Мы инициализируем SDL и TTF, создаем окно и рендерер.
  2. Основной цикл: В этом цикле мы обрабатываем события, такие как закрытие окна и нажатие кнопки мыши. При каждом нажатии кнопки мы увеличиваем счетчик кликов и выводим его в консоль.
  3. Очистка и отрисовка: Мы очищаем экран, устанавливаем цвет фона, вызываем функцию drawText для отображения текста и обновляем экран.
  4. Освобождение ресурсов: После выхода из основного цикла мы закрываем шрифт, уничтожаем рендерер и окно, а затем завершаем работу SDL и TTF.

Заключение

Теперь у вас есть простая игра-кликер на C++ с использованием SDL2. Вы можете расширить функциональность игры, добавив, например, различные уровни сложности, таймеры или специальные эффекты. Экспериментируйте и создавайте свои уникальные игры!