#include<graphics.h> #include<conio.h> #include<iostream> using namespace std; class CObject { public: virtual void Draw() = 0; virtual void Update(float t) = 0; }; class Cball :public CObject { private: float m_x; float m_y; int m_r; int m_color; float m_Vy; public: Cball(float x, float y, int r, int color) { m_x = x; m_y = y; m_r = r; m_color = color; m_Vy = 0; } void Draw() { COLORREF color = getfillcolor(); setfillcolor(m_color); solidcircle(m_x, m_y, m_r); } void Update(float t) { m_Vy += -9.8 * t; m_y += m_Vy * t + 0.5 * (-9.8) * t * t; if (m_y < m_r - 200) { m_Vy = -0.8 * m_Vy; m_y = m_r - 200; } } }; int main() { initgraph(800, 600); setorigin(400, 300); setaspectratio(1, -1); cleardevice(); static const COLORREF groundColor = RGB(100, 100, 100); // 绘制地面直线 line(-400, -180, 400, -180); // 绘制地面斜线 for (int i = -400; i < 400; i += 10) { // 绘制斜线 line(i,-181 , i,-179 ); } // 设置地面颜色 setcolor(groundColor); Cball ball(20, 200, 20, RED); //BeginBatchDraw(); for (int i = 0; i < 1000; ++i) { BeginBatchDraw(); cleardevice(); ball.Draw(); ball.Update(0.05); Sleep(30); EndBatchDraw(); } //EndBatchDraw(); _getch(); closegraph(); return 0; }为什么我的代码运行后不出现大地,只出现小球运动呢
时间: 2024-04-12 16:30:03 浏览: 82
#include "graphics.h" #include "graphics.h"
你的代码中绘制了地面直线和斜线,但是没有设置填充颜色。所以即使绘制了这线段,也无法看到地面效果。你可以在设置地面颜色之后,添加以下代码来填充地面:
```cpp
// 填充地面颜色
bar(-400, -180, 400, -179);
```
这样就能够看到地面了。另外,你还需要确保你的绘图环境正常初始化和关闭,在使用 `initgraph()` 初始化绘图窗口之前,确保你已经正确安装了 EasyX 图形库,并且头文件和库文件的路径设置正确。
阅读全文