#include <iostream> #include <string> #include <stdio.h> #include<graphics.h> using namespace std; int Screen_width = 1080; int Screen_height = 720; const char* DF_move_R[16] = { "./DF_move_R/%d.png" }; IMAGE DF_move_R[16]; //当前显示的图片编号 int DF_move_R_index = 1; void DF_run_r() { initgraph(1080, 720); //戴夫的初始坐标和大小 int DF_x = 100; int DF_y = 100; int DF_width = 128; int DF_height = 190; //戴夫奔跑时的速度 int DF_speed = 5; //计算戴夫奔跑时的新坐标 int new_x = DF_x + DF_speed; int new_y = DF_y; //判断新坐标是否超出屏幕范围 if (new_x + DF_width > Screen_width) { new_x = Screen_width - DF_width; } //更新戴夫的坐标 DF_x = new_x; DF_y = new_y; //切换图片 DF_move_R_index = (DF_move_R_index + 1) % 4; cleardevice(); //在新坐标处打印戴夫奔跑的图片 loadimage(&DF_move_R[DF_move_R_index] , "./DF_move_R/%d.png", DF_width, DF_height); }
时间: 2024-02-05 09:05:17 浏览: 70
这段代码出现了一些错误,我来帮你指出并解释一下:
1. `graphics.h`头文件可能无法在某些编译器中使用,需要安装相应的图形库。
2. `DF_move_R`数组的初始化方式不正确,应该使用下面的方式:
```C++
const char* DF_move_R[16] = { "./DF_move_R/1.png", "./DF_move_R/2.png", "./DF_move_R/3.png", "./DF_move_R/4.png", "./DF_move_R/5.png", "./DF_move_R/6.png", "./DF_move_R/7.png", "./DF_move_R/8.png", "./DF_move_R/9.png", "./DF_move_R/10.png", "./DF_move_R/11.png", "./DF_move_R/12.png", "./DF_move_R/13.png", "./DF_move_R/14.png", "./DF_move_R/15.png", "./DF_move_R/16.png" };
```
这样每个元素都是一个字符串,表示对应图片的路径。
3. `loadimage`函数的使用方式不正确,应该使用下面的方式:
```C++
loadimage(&DF_move_R[DF_move_R_index], DF_move_R[DF_move_R_index], DF_width, DF_height);
```
第一个参数是指向IMAGE结构体的指针,第二个参数是表示对应图片的路径,第三和第四个参数是图片的宽度和高度。
4. 在每次更新戴夫坐标之后,应该调用`DF_run_r()`函数,否则动画不会更新。
5. 在程序结束时,应该调用`closegraph()`函数关闭图形界面。
希望我的回答能够帮到你!
阅读全文