【发布时间】:2017-03-15 06:33:17
【问题描述】:
[已解决]
我在 Win10 上使用 CodeBlocks (C++)。我尝试创建一个简单的图形程序 - 我下载了某个图形包(graphics.h 和其他两个与 BGI 相关的文件 - 我在设置等中添加了 lib)。我试过这个程序,但标记的行似乎有问题。我以正确的方式或至少部分地从 Pascal 移植了这个(作为我的老师 - 是的,这是关于大学的 - 只向我们展示 Pascal 程序)。问题肯定出在指针上(解决后编辑:不是!,检查我的答案)。如果需要,我会提供更多详细信息。
问题:我在哪里犯了错误以及如何纠正它们(写什么,添加什么,删除什么),以便它可以正常工作?如果代码没有错误,但我需要一些图形文件才能在我的编译器上运行,这些文件是什么,从哪里获取它们以及放在哪里?
错误(不完全是,现在是“警告”):
deprecated conversion from string constant to 'char*' [-Wwrite-strings]
(请参阅下面的代码)
请阅读:对于我的程序的固定版本,我将非常感激。参考是无用的,所以除非您真的想帮助我(谢谢!),否则请离开此页面。我唯一相关的能力是比较一个程序的两个版本,它们打算做同样的事情,但一个有错误(或更多)。
代码(更新!):
#include<iostream>
#include<graphics.h>
#include<conio.h>
using namespace std;
int main(){
int gr,xmax,ymax,r;
int gm,gd;
gd=DETECT;
gm=0;
initgraph(&gd, gm, "C:\\TC\\BGI"); /*edit(solved): followed the tutorial linked in my answer; not a directory in my PC.*/
gr=graphresult();
if(gr!=grOk) cout<<"Error!";
else {xmax=getmaxx();
ymax=getmaxy();
cout<<"Resol.: "<<xmax+1<<"x"<<ymax+1;}
setcolor(7);rectangle(0,0,xmax,ymax);setcolor(5);line(0,0,xmax,ymax);line(0,ymax,xmax,0);setcolor(3);
for(r=(ymax+1)/2;r>=0;r--) circle((xmax+1)/2,(ymax+1)/2,r);
getch();
closegraph();
return 0;
}
graphics.h 来源和指南:http://www.codewithc.com/how-to-include-graphics-h-in-codeblocks/
【问题讨论】:
-
我听说我需要一些 .bgi 文件 - 驱动程序(init 中的第三个“参数”与它们有关)。我没有。我可以尝试将它们放在程序的目录中(因为我知道将在程序(主要是.cpp)所在的目录中搜索.bgi-s。)
-
-得到 egavga.bgi -
-
请删除
gm声明中的*。这是错的。如果DETECT不起作用,您可以尝试gd = VGA; gm = VGAHI;(或相应的整数常量)。并在initgraph()的调用中在gm之前插入&。 -
到它上面,结果是 2 分钟
-
比以前更大的错误i66.tinypic.com/1zx0bjd.jpg
标签: c++ graphics codeblocks deprecated bgi