C++ 传输 SDL_renderer 到 class
C++ transfer SDL_renderer to a class
我目前正在学习 SDL2 并且刚刚设法创建了一个乒乓球游戏。一些朋友告诉我,我应该开始使用 classes 来管理,例如 player1 和 player2。我知道如何创建 class 但我不明白如何在 class 之间传递 SDL_Renderer 以便从 class 中渲染对象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++ windows,使用 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)
我相信这是一种简单的方法
我目前正在学习 SDL2 并且刚刚设法创建了一个乒乓球游戏。一些朋友告诉我,我应该开始使用 classes 来管理,例如 player1 和 player2。我知道如何创建 class 但我不明白如何在 class 之间传递 SDL_Renderer 以便从 class 中渲染对象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++ windows,使用 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)
我相信这是一种简单的方法