在Snake游戏中使用SDL_FillRect
Using SDL_FillRect in a Snake game
我在SDL中使用链表将"body"(单个正方形)输出到屏幕上时遇到问题。
我有一个node
,它有两个数据变量:指向下一个的node
指针和SDL_Rect
值。
这就是我调用SDL_FillRect
函数的方式:
node* tmp;
SDL_FillRect(screen, &tmp->body, white);
这是我的节点类:
class node{
friend class map;
private:
node* next;
SDL_Rect body;
public:
node() : next(NULL) {body.h = 15, body.w = 15, body.x = 390, body.y = 290;}
};
然而,当我打电话给时
node tmp;
SDL_FillRect(screen, &tmp.body, white);
在node
不是指针的情况下,方形输出良好。
关于如何使用指向节点的指针来实现这一点,有什么技巧吗?
node* tmp;
SDL_FillRect(screen, &tmp->body, white);
您似乎没有分配对象tmp。某个地方应该有一个tmp = new node;
。
执行此操作时:
node* tmp;
你只声明了一个指向类"node"中对象的指针,但没有实例化该类中的对象(如果你想在里面获取SDL_Rect,它上什么都没有,只是一个指针)。
另一种方式:
node tmp;
如果你想传递一个指针,而不是像在这里所做的那样传递方向,那么你正在实例化类,这是一种正确的方式:
SDL_FillRect(screen, &tmp->body, white);
你应该用这种方式实例化类,使你的指针指向某种东西:
node*tmp=新节点;
只有这样,你才能从你的指针中获得这样的东西:
SDL_FillRect(screen, tmp->body, white);
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- SDL 窗口不会弹出
- SDL 操纵杆按钮按下/C++
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- SDL 映像:无法打开映像,仅显示错误消息
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- "Undefined symbols for architecture x86_64" 在 SDL 2 (macOS) 中
- 为什么 SDL 在 Mac 上比 Linux 慢得多?
- 在 OSX 上打开 SDL 窗口时不要打开终端窗口
- SDL + OpenGL ES 2.0 使用着色器显示纹理
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- 在 cmake 中找不到 SDL 库
- SDL/C++: 如何平滑但随机地移动矩形?
- 如何与 SDL 库链接?
- 为什么我的C++代码不呈现 SDL 矩形?
- 为什么要在初始化SDL之前在SDL中声明指针
- C++/SDL 如何覆盖数组?
- 在 SDL 中水平减小静态图像进度条