Rafia Shafique Ответов: 1

Как я могу охватить java - код для программирования на C++


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include<fstream>
using namespace std;
char pos='1';
struct food
{
    int x,y;
    char ch;
};
struct snake
{
    int x,y;
    char ch;
    struct snake *next;
};
void incr(struct snake *s);
void change(struct snake *s,char c);
void genfood(struct food *f);
void crbox(char board[20][80],struct snake *s,struct food *f);
void incr(struct snake *s)
{
    struct snake *temp=(struct snake *)malloc(sizeof(struct snake));
    temp->x=s->x;
    temp->y=s->y;
    temp->ch='#';
    temp->next=s->next;
    s->next=temp;
    change(s,pos);
}
void change(struct snake *s,char c)
{
    int a=0,b=0,p,q,r,t;
    struct snake *temp=s;
    if(pos=='1'&&c=='3')
        c='1';
    else if(pos=='3'&&c=='1')
        c='3';
    else if(pos=='2'&&c=='5')
        c='2';
    else if(pos=='5'&&c=='2')
        c='5';
    else if(c!='1'&&c!='2'&&c!='3'&&c!='5')
        c=pos;
    pos=c;
    if(pos=='1')
        b=-1;
    else if(pos=='2')
        a=1;
    else if(pos=='3')
        b=1;
    else if(pos=='5')
        a=-1;
    r=temp->x;
    t=temp->y;
    while(temp->next!=NULL)
    {
        p=temp->next->x;
        q=temp->next->y;
        temp->next->x=r;
        temp->next->y=t;
        temp=temp->next;
        r=p;
        t=q;
    }
    temp=s;
    temp->x=temp->x+a;
    temp->y=temp->y+b;
    if(temp->x==-1)
        temp->x=19;
    if(temp->x==20)
        temp->x=0;
    if(temp->y==-1)
        temp->y=79;
    if(temp->y==80)
        temp->y=0;
}
void genfood(struct food *f)
{
    srand(time(0));
    f->x=rand()%20;
    f->y=rand()%80;
}
void crbox(char board[20][80],struct snake *s,struct food *f)
{
    struct snake *temp=s;
    board[f->x][f->y]=f->ch;
    char c=pos;
    while(temp!=NULL)
    {
        board[temp->x][temp->y]=temp->ch;
        temp=temp->next;
    }
    for(int i=0;i<20;++i)
    {
        for(int j=0;j<80;++j)
            printf("%c",board[i][j]);
        printf("\n");
    }
    temp=s;
    while(temp!=NULL)
    {
        board[temp->x][temp->y]=' ';
        temp=temp->next;
    }
    board[f->x][f->y]=' ';
    while(1)
    {
        system("cls");
        if(f->x==s->x&&f->y==s->y)
        {
            genfood(f);
            incr(s);
        }
        temp=s;
        if(kbhit())
           c=getch();
        if(c==27)
            break;
        change(temp,c);
        temp=temp->next;
        while(temp!=NULL)
        {
            if(s->x==temp->x&&s->y==temp->y)
            {
                printf("You Failed");
                ofstream fout;
                fout.open("SnakeLinked.txt");
                fout.close();
                exit(0);
            }
            temp=temp->next;
        }
        temp=s;
        board[f->x][f->y]=f->ch;
        while(temp!=NULL)
        {
            board[temp->x][temp->y]=temp->ch;
            temp=temp->next;
        }
        for(int i=0;i<20;++i)
        {
            for(int j=0;j<80;++j)
                printf("%c",board[i][j]);
            printf("\n");
        }
        temp=s;
        while(temp!=NULL)
        {
            board[temp->x][temp->y]=' ';
            temp=temp->next;
        }
        board[f->x][f->y]=' ';
    }
}
int main()
{
    char board[20][80],opt;
    printf("Welcome to Snake game\n");
    printf("Do you want to start a new game or continue from where you left?(y/n) ");
    scanf("%c",&opt);
    for(int i=0;i<20;++i)
    {
        for(int j=0;j<80;++j)
            board[i][j]=' ';
    }
    struct food f;
    f.x=4;
    f.y=4;
    f.ch='F';
    struct snake *s=(struct snake *)malloc(sizeof(struct snake)),*temp=(struct snake *)malloc(sizeof(struct snake)),*temp1=(struct snake *)malloc(sizeof(struct snake));
    temp1->x=14;
    temp1->y=14;
    temp1->ch='H';
    temp1->next=NULL;
    s=temp1;
    temp->x=14;
    temp->y=15;
    temp->ch='#';
    temp->next=NULL;
    temp1->next=temp;
    temp1=temp1->next;
    temp=(struct snake *)malloc(sizeof(struct snake));
    temp->x=14;
    temp->y=16;
    temp->ch='#';
    temp->next=NULL;
    temp1->next=temp;
    temp1=temp1->next;
    temp=(struct snake *)malloc(sizeof(struct snake));
    temp->x=14;
    temp->y=17;
    temp->ch='T';
    temp->next=NULL;
    temp1->next=temp;
    if(opt=='y')
    {
        ifstream fin;
        fin.open("SnakeLinked.txt");
        fin>>pos;
        if(!fin.eof())
        {
            s=(struct snake *)malloc(sizeof(struct snake));
            temp=(struct snake *)malloc(sizeof(struct snake));
            fin>>f.x;
            fin>>f.y;
            fin>>f.ch;
            fin>>temp->x;
            fin>>temp->y;
            fin>>temp->ch;
            temp->next=NULL;
            s=temp;
            while(fin.is_open())
            {
                temp1=(struct snake *)malloc(sizeof(struct snake));
                fin>>temp1->x;
                fin>>temp1->y;
                fin>>temp1->ch;
                temp1->next=NULL;
                temp->next=temp1;
                if(fin.eof())
                    break;
                temp=temp->next;
            }
            temp=s;
            while(temp->next->next!=NULL)
                temp=temp->next;
            temp->next=NULL;
        }
        fin.close();
    }
    crbox(board,s,&f);
    ofstream fout;
    fout.open("SnakeLinked.txt");
    fout<<pos<<" ";
    fout<<f.x<<" ";
    fout<<f.y<<" ";
    fout<<f.ch<<" ";
    while(s->next!=NULL)
    {
        fout<<s->x<<" "<<s->y<<" "<<s->ch<<" ";
        s=s->next;
    }
    fout<<s->x<<" "<<s->y<<" "<<s->ch<<" ";
    fout.close();
    return 0;
}


Что я уже пробовал:

на самом деле я не знаю языка java, поэтому еще не пробовал его использовать.

Richard MacCutchan

Вы, очевидно, тоже не знаете с++. Именно на этом языке написан этот код (плохо).

1 Ответов

Рейтинг:
0

OriginalGriff

Это не служба преобразования кода: мы здесь не для того, чтобы переводить код для вас.
Даже если бы мы это сделали, то в конечном итоге вы получили бы не "хороший код" на целевом языке – они основаны на очень разных фреймворках, и то, что заставляет что-то работать на одном языке, не всегда "переводится" непосредственно на другой.
Таким образом, вы получаете очень плохой код, который трудно, если не невозможно поддерживать, который не может быть хорошо обновлен, и это вызовет у вас огромную головную боль, если оригинал будет изменен. И это будет кошмар для отладки, если он не будет работать "прямо из коробки".
Вместо этого используйте исходный код в качестве спецификации для нового приложения, написанного на целевом языке / фреймворке, и напишите его с нуля, используя оригинал в качестве "шаблона". Вы получите гораздо, гораздо лучший результат, который сэкономит вам много времени в долгосрочной перспективе.

И откровенно говоря, даже если бы мы это сделали, и он действительно произвел приличный код, вы бы ничего не узнали из этого упражнения - в чем и заключается весь смысл давать вам домашнее задание в первую очередь ...

И кстати: это очень плохой код на C++, а не на Java, просто чтобы вы знали ...