Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SDL.h>
- #include <SDL_ttf.h>
- #include <iostream>
- #include <SDL_image.h>
- #include <fstream>
- #define WIDTH 1024
- #define HEIGHT 680
- #define PLAYER_SPRITE_RED "player_red.jpg"
- #define PLAYER_SPRITE_GREEN "player_green.jpg"
- #define START_MONEY 500000
- #define PRISON_POS 10
- #define MAX_POS 30
- /*
- /**\
- / \
- / || \
- / || \
- / == \
- |____________|
- - ТЕКСТУРЫ ЗАГРУЖАТЬ ЧЕРЕЗ ФУНКЦИИ!
- - ЧИСТИТЬ РЕСУРСЫ (ОЧЕНЬ ЖЕЛАТЕЛЬНО)
- - ДЕФАЙНИТЬ ЧАСТОИСПОЛЬЗУЕМЫЕ ЗНАЧЕНИЯ
- - ДЕЛАТЬ МНОГО ОТСТУПОВ И ПИСАТЬ ПРОСТО
- - КОММЕНТИРОВАТЬ КОД
- */
- SDL_Texture* createTextTexture(SDL_Renderer* ren, const char* text, TTF_Font* font, SDL_Color col, SDL_Rect* resultRect) {
- SDL_Surface* surf = TTF_RenderText_Blended(font, text, col);
- *resultRect = { 0, 0, surf->w, surf->h };
- SDL_Texture* texture = SDL_CreateTextureFromSurface(ren, surf);
- SDL_FreeSurface(surf);
- return texture;
- }
- SDL_Texture* loadTexture(SDL_Renderer* ren, const char* file, SDL_Rect* resultRect) {
- SDL_Surface* surf = IMG_Load(file);
- SDL_Texture* texture = SDL_CreateTextureFromSurface(ren, surf);
- resultRect->w = surf->w / 4;
- resultRect->h = surf->h;
- SDL_FreeSurface(surf);
- return texture;
- }
- class Player {
- unsigned int pos;
- int money;
- bool inPrison;
- SDL_Texture* texture;
- SDL_Rect textureRect;
- public:
- Player() {
- pos = 0;
- money = START_MONEY;
- inPrison = false;
- texture = NULL;
- textureRect = { 0, 0, 0, 0 };
- }
- Player(SDL_Renderer* ren, const char* spriteFile) {
- pos = 0;
- money = 0;
- inPrison = false;
- texture = loadTexture(ren, spriteFile, &textureRect);
- }
- ~Player() {
- // Сообщение о выходе из игры to do!
- }
- // METHODS
- void goOn(unsigned int cnt) {
- while (cnt) {
- // Чекать мосты to do!
- cnt--;
- }
- }
- void goToStart() {
- goOn(MAX_POS - pos + 1);
- }
- void goToPrison() {
- goOn(PRISON_POS - pos);
- inPrison = true;
- }
- // Чтобы вычесть деньги, передайте отрицательное значение
- void addMoney(int m) {
- money += m;
- if (money < 0)
- delete this;
- }
- };
- int main(int argc, char** argv) {
- if (SDL_Init(SDL_INIT_EVERYTHING))
- return 0;
- SDL_Event event;
- // WINDOW
- SDL_Window* win = SDL_CreateWindow("Platformer", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
- if (!win) {
- SDL_Quit();
- return 0;
- }
- SDL_Renderer* ren = SDL_CreateRenderer(win, -1, 0);
- if (!ren) {
- SDL_DestroyWindow(win);
- SDL_Quit();
- return 0;
- }
- // FONTS
- TTF_Init();
- TTF_Font* font1 = TTF_OpenFont("trebuc.ttf", 25);
- if (!font1) {
- SDL_DestroyRenderer(ren);
- SDL_DestroyWindow(win);
- SDL_Quit();
- return 0;
- }
- TTF_Font* font2 = TTF_OpenFont("trebuc.ttf", 20);
- if (!font2) {
- TTF_CloseFont(font1);
- SDL_DestroyRenderer(ren);
- SDL_DestroyWindow(win);
- SDL_Quit();
- return 0;
- }
- // TEXTURES
- // VARIABLES
- int ot = SDL_GetTicks(),
- nt, dt;
- bool quit = false;
- // STRUCTURE INSTANCES
- SDL_Color fg1 = { 255, 0, 0, 255 };
- SDL_Color fg2 = { 0, 0, 255, 255 };
- SDL_Rect livesRect, timeRect;
- // OBJECTS
- Player* player[2]; // Сменное количество игроков to do!
- player[0] = new Player(ren, PLAYER_SPRITE_RED);
- player[1] = new Player(ren, PLAYER_SPRITE_GREEN);
- while (!quit) {
- while (SDL_PollEvent(&event)) {
- switch (event.type) {
- case SDL_QUIT:
- quit = true;
- break;
- case SDL_KEYDOWN:
- if (event.key.keysym.sym == SDLK_SPACE) {
- }
- break;
- }
- }
- // FPS
- nt = SDL_GetTicks();
- dt = nt - ot;
- ot = nt;
- // DRAW
- SDL_SetRenderDrawColor(ren, 0, 0, 0, 0);
- SDL_RenderClear(ren);
- SDL_RenderPresent(ren);
- }
- // DESTRUCTION
- SDL_DestroyRenderer(ren);
- SDL_DestroyWindow(win);
- SDL_Quit();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement