gpt4 book ai didi

C++将SDL_renderer传递给一个类

转载 作者:行者123 更新时间:2023-11-30 05:02:29 27 4
gpt4 key购买 nike

我目前正在学习 SDL2,并且刚刚设法创建了一个乒乓球游戏。一些 friend 告诉我,我应该开始使用类来管理,例如 player1 和 player2。我知道如何创建一个类,但我不明白如何在类之间传递 SDL_Renderer 以便将对象从类内渲染到 main.cpp 文件。

#include "SDL2/SDL.h"
#include "SDL2/SDL_render.h"
#include <iostream>
#include <windows.h>
#include <thread>
#include "player.h"

Player Player; //defining the class

const int WINDOW_WIDTH = 1280;
const int WINDOW_HEIGHT = 720;


int main(int argc, char *args[]) {

SDL_Init(SDL_INIT_EVERYTHING);

SDL_Window *window;
SDL_Renderer *renderer;

window = SDL_CreateWindow ("Test",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
WINDOW_WIDTH,
WINDOW_HEIGHT,
0
);
if (window == NULL) {
std::cout << "Window could not load" << SDL_GetError() << std::endl;
return 0;
}

renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
while (running) //running is a bool (true) {
Player.draw();
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

为了在屏幕上绘制对象,我必须在我的 player.cpp 绘制函数中做什么?

使用 C++ 窗口,使用 g++ main.cpp player.cpp -o main.exe -IC:\MinGW\i686-w64-mingw32\include -LC:\MinGW\i686-w64-mingw32 编译代码\lib -lmingw32 -lSDL2main -lSDL2

最佳答案

在 main.cpp 中

Player.draw(renderer)

(假设您使用与上面相同的代码,只需将“renderer”传递给 Player.draw() 函数即可。)

在player.h中

class Player {
public:
void draw(SDL_Renderer *renderer)
};

在 player.cpp 中

void Player::draw(SDL_Renderer *renderer) {
SDL_Rect object;
object.x = 0;
object.y = 0;
object.h = 10;
object.w = 10;
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderDrawRect(renderer, &object);
SDL_RenderFillRect(renderer, &object);
}
// will draw a white box with at position (0,0)

我相信这是一个简单的方法来做到这一点

关于C++将SDL_renderer传递给一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com