繁体   English   中英

我正在尝试运行这个程序,但它给出了错误 initwindow() not initialized

[英]I am trying to run this program but it gives error initwindow() not initialized

该代码基本上实现了 B-MFR 路由协议。 这可能是一个微不足道的错误,但我无法解决。

#include <graphics.h>
        #include<conio.h>
        #include<stdio.h>
        #include<stdlib.h>
        #include<math.h>
        #include<string.h>
        #include<time.h>
        #define RADI 125
        
        int points[100][2];
        int dist[25][25];
        int k;
        int path[25];
        
        int distance(int x1,int y1,int x2,int y2)
        {
              return (int)sqrt(pow(x1-x2,2)+pow(y1-y2,2));
        }
        
        
        void printscreen()
        {
             char str[5];
             //cleardevice();
             for(int i=0; i<25; i++)
            {
                     circle(points[i][0],points[i][1],3);
                     itoa(i+1,str,10);
                     outtextxy(points[i][0]+3,points[i][1]+3,str);
            }
        }
        void drawgraphics(int x1,int y1,int x2,int y2, int rad)
        {
             int x=RADI;
             while(x!=rad)
             {
                          //printscreen();
                          setcolor(15);
                          circle(x1,y1,x);
                          printscreen();
                          delay(15);
                          setcolor(0);
                          setfillstyle(EMPTY_FILL ,0);
                          circle(x1,y1,x);
                          x--;
             }
                   setcolor(15);
                   printscreen();
                   line(x1,y1,x2,y2);
                   //circle(x1,y1,rad);
                   delay(100);
        }
        void getpath(int start,int end,int rad)
        {
             int flag,current=start,min,prev;
             path[0]=start+1;
             k=1;
             while (current!=end)
             {
                   rad=RADI;
                   flag=1;
                   prev=current;
                   while (flag)
                   {
                         min=1000;
                         for (int i=0;i<25;i++)
                         {
                             if (rad==dist[current][i]&&dist[current][end]>dist[i][end])
                             {
                                flag=0;
        
                                if (min>dist[i][end])
                                {
                                   min=dist[i][end];
                                   current=i;
                                }
                             }
                         }
                         rad--;
                         if(rad<0)
                         {
                                  printf("\nNo Node found in Radius.\n");
                                  return;
                         }
                   }
                   path[k]=current+1;
                   drawgraphics(points[prev][0],points[prev][1],points[current][0],points[current][1],rad+1);
                   k++;
             }
        }
        int main()
        {
            initwindow(640,480,"B-MFR Routing Protocol");
            srand (time(NULL));
        
            for(int i=0; i<25; i++)
            {
                     points[i][0]= rand() % 550 + 50;
                     points[i][1]= rand() % 400 + 50;
            }
            printscreen();
        
            for(int i=0; i<25; i++)
            {
                    for(int j=0; j<25; j++)
                    {
                            dist[i][j]=distance(points[i][0],points[i][1],points[j][0],points[j][1]);
                    }
            }
        
            int start,end;
            printf("Enter start:");
            scanf("%d",&start);
            printf("Enter end:");
            scanf("%d",&end);
            start--;
            end--;
        
            getpath(start,end,RADI);
            printf("\n");
            printf("%d ",path[0]);
            for(int i=1;i<k;i++)
            {
                    printf("%d ",path[i]);
                    line(points[path[i-1]-1][0],points[path[i-1]-1][1],points[path[i]-1][0],points[path[i]-1][1]);
            }
            getche();
        }

黑暗当然看起来是在正确的轨道上。 openbgi header 文件均未提及 initwindow。 一个initgraph

void initgraph(int   *graphdriver, int   *graphmode, const char  *pathtodriver);

我确实找到了一个相当古老的 BGI 引用,它有一个 graphics.h,其中包含似乎丢失的 initwindow 声明。

在不知道 OP 使用的是哪个第三方代码集合的情况下,很难说这里到底发生了什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM