写一个EasyX无边框的填充矩形下落代码
时间: 2024-12-25 15:29:43 浏览: 6
在 EasyX 中创建一个无边框的填充矩形下落的代码示例,首先需要包含 EasyX 的头文件并设置好窗口和基本的图形绘制函数。假设我们有一个名为 `Game` 的类,其中有一个 `fallRect` 函数负责处理矩形的下落:
```cpp
#include "easyx.h"
class Game {
public:
void init();
void run();
private:
CWinControl* m_win; // 窗口句柄
int rectWidth, rectHeight;
bool isFalling;
void drawRect(float x, float y);
void fallRect();
};
void Game::init() {
// 初始化 EasyX
if (!CWinAPI::instance().initialize())
return;
// 创建窗口
m_win = new CWinControl(CRect(0, 0, 640, 480), L"Fill Rect Example");
m_win->ShowWindow();
// 设置矩形尺寸
rectWidth = 50;
rectHeight = 100;
isFalling = true;
// 设置鼠标监听以便控制矩形移动
m_win->addEventListener(E_MOUSE_DOWN, &Game::onMouseDown);
}
void Game::run() {
while (m_win->isActive()) {
// 清除背景
m_win->clearScreen();
// 下落矩形的逻辑
if (isFalling) {
fallRect();
// 检查是否碰到边界或地面
if (rectY + rectHeight >= m_win->getHeight()) {
isFalling = false;
}
}
// 更新屏幕
m_win->display();
}
}
void Game::drawRect(float x, float y) {
CColor color(255, 0, 0); // 红色
CRect rect(x, y, x + rectWidth, y + rectHeight);
m_win->drawFilledRect(rect, color);
}
void Game::fallRect() {
rectY -= 3; // 假设每帧下降3像素
drawRect(0, rectY);
}
// 鼠标按下事件处理
void Game::onMouseDown(CEventParam& ep) {
// 开始控制矩形上下移动
if (ep.type == E_MOUSE_DOWN && ep.button == E_BUTTON_LEFT) {
isFalling = !isFalling;
}
}
// ... 其他游戏逻辑
int main() {
Game game;
game.init();
game.run();
return 0;
}
```
在这个例子中,当你运行程序时,会看到一个红色填充的矩形从顶部开始下落。当鼠标左键按下时,你可以控制矩形停止或继续下落。
阅读全文