#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 20:30:03 浏览: 91
你的代码中绘制了地面直线和斜线,但是没有设置填充颜色。所以即使绘制了这线段,也无法看到地面效果。你可以在设置地面颜色之后,添加以下代码来填充地面:
```cpp
// 填充地面颜色
bar(-400, -180, 400, -179);
```
这样就能够看到地面了。另外,你还需要确保你的绘图环境正常初始化和关闭,在使用 `initgraph()` 初始化绘图窗口之前,确保你已经正确安装了 EasyX 图形库,并且头文件和库文件的路径设置正确。
相关问题
解释代码#include <iostream> #include <cstdio> #include <cstdlib> #include <ctime> #include <conio.h> #include <cmath> #include <windows.h> using namespace std; HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord;
这段代码使用了一些 C++ 语言中的头文件和函数,具体解释如下:
- `#include <iostream>`:包含了标准输入输出流的库函数,如 `std::cout` 和 `std::cin`。
- `#include <cstdio>`:包含了 C 标准库的输入输出函数,如 `printf()` 和 `scanf()`。
- `#include <cstdlib>`:包含了 C 标准库的通用工具函数,如 `malloc()` 和 `free()`。
- `#include <ctime>`:包含了 C 标准库的时间和日期函数,如 `time()` 和 `asctime()`。
- `#include <conio.h>`:包含了控制台输入输出函数,如 `getch()` 和 `clrscr()`。
- `#include <cmath>`:包含了 C 标准库的数学函数,如 `sin()` 和 `cos()`。
- `#include <windows.h>`:包含了 Windows 系统编程相关的函数和数据类型,如 `HANDLE` 和 `COORD`。
其中,`HANDLE` 类型表示一个操作系统句柄,用于访问系统资源;`COORD` 类型表示控制台屏幕上的坐标。该代码段还定义了一个全局变量 `hout`,用于获取标准输出句柄,并定义了一个函数 `SetColor()`,用于设置控制台输出的文本颜色。
#include<iostream> #include<Windows.h> #include<mmsystem.h> #include<conio.h> #include<stdio.h> #pragma comment(lib,"winmm.lib") using namespace std; int main() { mciSendString("open 1.mp3 alias BGM",0, 0, 0); mciSendString("play BGM repeat", 0, 0, 0); }请帮我找出这段代码的错误
这段代码看起来没有明显的语法错误。但是,如果你在编译或运行时遇到了问题,可能是由于以下几个原因:
1. 缺少音乐文件:请确保当前目录下存在名为 "1.mp3" 的音乐文件。
2. 缺少库文件:你使用了 `mciSendString` 函数,需要链接 `winmm.lib` 库文件。请确保在编译时正确链接了该库文件。
3. 编译器错误:在使用 Windows 相关函数时,可能需要使用适当的编译器或编译选项。请确保你正在使用支持 Windows API 的编译器。
如果你能提供更多的错误信息或上下文,我可以帮助你更详细地分析问题。
阅读全文