Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Переписать графическую программу из C++ в C#


Автор: tereres 18.3.2006, 13:45
Дана прога на С++ - в основном работа с графикой. Надо перевести её в C#, с использованием System.Drawing - т.е. прога должна работать под Windows... Помогите, если можете. Это задача комовиажора.

Код
#include <iostream.h>
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
#include <dos.h>
//*****************************************************************************
int minimum(int k,...)
{
 int *pi=&k+1;
 int min=*pi;
 for(;k;k--,pi++)
 min = min > *pi ? *pi : min;
 return min;
}
//*****************************************************************************
int mx, my, r = 20;
int x2,x3,x4,x1;
int y2,y3,y4,y1;
int c[5][5];
int i,j,a,b;
char ch;
//*****************************************************************************
void pic(void)
{   clrscr();
    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver, &gmode, "bgi");
    errorcode = graphresult();
    if (errorcode != grOk) {  
        cout<<"Graphics error:"<<grapherrormsg(errorcode)<<endl;
        cout<<"Press any key to halt:"<<endl;
        getch();
        exit(1);
    }



    mx = getmaxx() / 2;
    my = getmaxy() / 6;
    setcolor(4);
    setfillstyle(1,4);
    fillellipse(mx,my,r,r);
    x1=getmaxx()/6;y1=getmaxy()/2;fillellipse(x1,y1,r,r);
    x2=getmaxx()-getmaxx()/6;y2=getmaxy()/2;fillellipse(x2,y2,r,r);
    x3=getmaxx()/3;y3=getmaxy()-getmaxy()/6;fillellipse(x3,y3,r,r);
    x4=getmaxx()-getmaxx()/3;y4=getmaxy()-getmaxy()/6;fillellipse(x4,y4,r,r);

    setcolor(15);
    outtextxy(mx,my-10,"1");
    outtextxy(x1-10,y1,"2");
    outtextxy(x2+10,y2,"3");
    outtextxy(x3,y3+10,"4");
   outtextxy(x4,y4+10,"5");

    setcolor(4);
    setfillstyle(1,4);
//-0->1----------------------------------------------
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1])line(mx,my,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2])line(mx,my,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3])line(mx,my,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4])line(mx,my,x4,y4);
//-1->2----------------------------------------------
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][2])line(x1,y1,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][3])line(x1,y1,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][4])line(x1,y1,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][1])line(x2,y2,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][3])line(x2,y2,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][4])line(x2,y2,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][1])line(x3,y3,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][2])line(x3,y3,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][4])line(x3,y3,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][1])line(x4,y4,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][2])line(x4,y4,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][3])line(x4,y4,x3,y3);
//-2->3----------------------------------------------
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][2] &&
         minimum(2,c[2][3],c[2][4])==c[2][3])line(x2,y2,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][2] &&
         minimum(2,c[2][3],c[2][4])==c[2][4])line(x2,y2,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][3] &&
         minimum(2,c[3][2],c[3][4])==c[3][2])line(x3,y3,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][3] &&
         minimum(2,c[3][2],c[3][4])==c[3][4])line(x3,y3,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][4] &&
         minimum(2,c[4][2],c[4][3])==c[4][2])line(x4,y4,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][4] &&
         minimum(2,c[4][2],c[4][3])==c[4][3])line(x4,y4,x3,y3);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][1] &&
         minimum(2,c[1][3],c[1][4])==c[1][3])line(x1,y1,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][1] &&
         minimum(2,c[1][3],c[1][4])==c[1][4])line(x1,y1,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][3] &&
         minimum(2,c[3][2],c[3][4])==c[3][2])line(x3,y3,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][3] &&
         minimum(2,c[3][2],c[3][4])==c[3][4])line(x3,y3,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][4] &&
         minimum(2,c[4][1],c[4][3])==c[4][1])line(x4,y4,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][4] &&
         minimum(2,c[4][1],c[4][3])==c[4][3])line(x4,y4,x3,y3);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][1] &&
         minimum(2,c[1][2],c[1][4])==c[1][2])line(x1,y1,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][1] &&
         minimum(2,c[1][2],c[1][4])==c[1][4])line(x1,y1,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][2] &&
         minimum(2,c[2][1],c[2][4])==c[2][1])line(x2,y2,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][2] &&
         minimum(2,c[2][1],c[2][4])==c[2][4])line(x2,y2,x4,y4);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][4] &&
         minimum(2,c[4][1],c[4][2])==c[4][1])line(x4,y4,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][4] &&
         minimum(2,c[4][1],c[4][2])==c[4][2])line(x4,y4,x2,y2);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][1] &&
         minimum(2,c[1][2],c[1][3])==c[1][2])line(x1,y1,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][1] &&
         minimum(2,c[1][2],c[1][3])==c[1][3])line(x1,y1,x3,y3);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][2] &&
         minimum(2,c[2][1],c[2][3])==c[2][1])line(x2,y2,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][2] &&
         minimum(2,c[2][1],c[2][3])==c[2][3])line(x2,y2,x3,y3);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][3] &&
         minimum(2,c[3][1],c[3][2])==c[3][1])line(x3,y3,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][3] &&
         minimum(2,c[3][1],c[3][2])==c[3][2])line(x3,y3,x2,y2);
//-3->4----------------------------------------------
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][2] &&
         minimum(2,c[2][3],c[2][4])==c[2][3] &&
         minimum(1,c[3][4])==c[3][4])line(x3,y3,x4,y4);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][2] &&
         minimum(2,c[2][3],c[2][4])==c[2][4] &&
         minimum(1,c[4][3])==c[4][3])line(x4,y4,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][3] &&
         minimum(2,c[3][2],c[3][4])==c[3][2] &&
         minimum(1,c[2][4])==c[2][4])line(x2,y2,x4,y4);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][3] &&
         minimum(2,c[3][2],c[3][4])==c[3][4] &&
         minimum(1,c[4][2])==c[4][2])line(x4,y4,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][4] &&
         minimum(2,c[4][2],c[4][3])==c[4][2] &&
         minimum(1,c[2][3])==c[2][3])line(x2,y2,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][1] &&
         minimum(3,c[1][2],c[1][3],c[1][4])==c[1][4] &&
         minimum(2,c[4][2],c[4][3])==c[4][3] &&
         minimum(1,c[3][2])==c[3][2])line(x3,y3,x2,y2);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][1] &&
         minimum(2,c[1][3],c[1][4])==c[1][3] &&
         minimum(1,c[3][4])==c[3][4])line(x3,y3,x4,y4);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][1] &&
         minimum(2,c[1][3],c[1][4])==c[1][4] &&
         minimum(1,c[4][3])==c[4][3])line(x4,y4,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][3] &&
         minimum(2,c[3][1],c[3][4])==c[3][1] &&
         minimum(1,c[1][4])==c[1][4])line(x1,y1,x4,y4);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][3] &&
         minimum(2,c[3][1],c[3][4])==c[3][4] &&
         minimum(1,c[4][1])==c[4][1])line(x4,y4,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][4] &&
         minimum(2,c[4][1],c[4][3])==c[4][1] &&
         minimum(1,c[1][3])==c[1][3])line(x1,y1,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][2] &&
         minimum(3,c[2][1],c[2][3],c[2][4])==c[2][4] &&
         minimum(2,c[4][1],c[4][3])==c[4][3] &&
         minimum(1,c[3][1])==c[3][1])line(x3,y3,x1,y1);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][1] &&
         minimum(2,c[1][2],c[1][4])==c[1][2] &&
         minimum(1,c[2][4])==c[2][4])line(x2,y2,x4,y4);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][1] &&
         minimum(2,c[1][2],c[1][4])==c[1][4] &&
         minimum(1,c[4][2])==c[4][2])line(x4,y4,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][2] &&
         minimum(2,c[2][1],c[2][4])==c[2][1] &&
         minimum(1,c[1][4])==c[1][4])line(x1,y1,x4,y4);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][2] &&
         minimum(2,c[2][1],c[2][4])==c[2][4] &&
         minimum(1,c[4][1])==c[4][1])line(x4,y4,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][4] &&
         minimum(2,c[4][1],c[4][2])==c[4][1] &&
         minimum(1,c[1][2])==c[1][2])line(x1,y1,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][3] &&
         minimum(3,c[3][1],c[3][2],c[3][4])==c[3][4] &&
         minimum(2,c[4][1],c[4][2])==c[4][2] &&
         minimum(1,c[2][1])==c[2][1])line(x2,y2,x1,y1);

    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][1] &&
         minimum(2,c[1][2],c[1][3])==c[1][2] &&
         minimum(1,c[2][3])==c[2][3])line(x2,y2,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][1] &&
         minimum(2,c[1][2],c[1][3])==c[1][3] &&
         minimum(1,c[3][2])==c[3][2])line(x3,y3,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][2] &&
         minimum(2,c[2][1],c[2][3])==c[2][1] &&
         minimum(1,c[1][3])==c[1][3])line(x1,y1,x3,y3);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][2] &&
         minimum(2,c[2][1],c[2][3])==c[2][3] &&
         minimum(1,c[3][1])==c[3][1])line(x3,y3,x1,y1);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][3] &&
         minimum(2,c[3][1],c[3][2])==c[3][1] &&
         minimum(1,c[1][2])==c[1][2])line(x1,y1,x2,y2);
    if (minimum(4,c[0][1],c[0][2],c[0][3],c[0][4])==c[0][4] &&
         minimum(3,c[4][1],c[4][2],c[4][3])==c[4][3] &&
         minimum(2,c[3][1],c[3][2])==c[3][2] &&
         minimum(1,c[2][1])==c[2][1])line(x2,y2,x1,y1);






    getch();
    closegraph();
}

//*****************************************************************************
void cost(void)
{clrscr();
 for(i=0;i<5;i++)
    { for(j=0;j<5;j++)
          {cout<<"Vedite stoimost iz goroda "<<i+1<<" v gorod "<<j+1<<" ";cin>>c[i][j];cout<<endl;}
            cout<<"\n\n";
    }
 getche();
}
//*****************************************************************************


int main(void)
{
 do{
 clrscr();
 cout<<"1-Zapisat stoimost\n";
 cout<<"2-Prosmotret marshrut\n";
 cout<<"0-Vixod\n";
 cin>>ch;
 if(ch=='1')cost();
 if(ch=='2')pic();
 }while(ch!='0');
    return 0;
}

Автор: DENNN 18.3.2006, 14:29
За такой код нужно убивать

Автор: Ch0bits 18.3.2006, 17:34
smile
Ой! Мама... роди меня обратно! smile

Автор: mr.DUDA 18.3.2006, 21:55
Второй раз подряд отредактировал сообщение (в первый раз делал это в разделе по .NET). Добавил тэг CODE... В Опере появляется "Undefined", и невозможно сообщение отредактировать, и вообще ссылки все перестали работать на мессагах. А так вообще,


 ! 
mr.DUDA
tereres, пожалуйста используйте тэг CODE (выпадающее меню "Код" над сообщением) ! Спасибо !!

Автор: Nemesis 19.3.2006, 16:31
Я бы сказал не перевести прогу, а вообще просто заново ее написть. Это вообще что за код такой??? smile Там ведь в этих условных операторах везде используется line(...), единственный способ который я вижу для "перевода" - это переопределить функцию line...

жесткач...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)