求大家帮助 帮我改改程序
本人超级新手找了一个程序 应用起来和自己预期的结果差好多 希望高手在给我写一下注释 说实话看不太明白 由于老师要求在code blocks下写的 求高手指正 拜谢!!!!!程序代码:
#include <stdio.h> #include <conio2.h> #include <conio.c> #include <stdlib.h> #include <windows.h> #include <time.h> #include <dos.h> #define CIMA 72 #define BAIXO 80 #define ESQ 75 #define DIR 77 #define QUAD 42 #define PAUSA 32 void limpa(); void limpa_corpo(); void guarda_corpo(); void gameover(); void bordas(); void captura(); void fill(); void comida(); void cobra(); int main(); short int seta, seta2=0, x=40, y=12, x1=40, y1=12, pontos=-10, p=0, j=0; short int tam=1, corpo[200][2], corpo_clean[200][2], velo_x, velo_y, aux; void declara() { seta2=0; x=40; y=12; x1=40; y1=12; pontos=-10; p=0; j=0; tam=1; } void limpa() { if(j==1) { gotoxy(corpo_clean[p][0], corpo_clean[p][1]); cprintf(" "); corpo_clean[p][0]=corpo_clean[p][1]=0; } } void limpa_corpo() { register short int i; j=1; p=0; for(i=0; i<tam; i++) { corpo_clean[i][0]=corpo[i][0]; corpo_clean[i][1]=corpo[i][1]; } fill(); } void guarda_corpo() { corpo[p][0]=x; corpo[p][1]=y; } void gameover() { clrscr(); gotoxy(36,14); textcolor(LIGHTRED); cprintf("GAME OVER"); gotoxy(31,24); textcolor(YELLOW); cprintf("Press ENTER to close"); gotoxy(31,5); cprintf("You've done %d points",pontos); end: seta=getch(); if(seta==13) { clrscr(); exit(0); } else goto end; } void bordas() { short int i; for(i=2;i<=24;i++) { textcolor(LIGHTRED); gotoxy(2,i); printf("%c",219); gotoxy(79,i); printf("%c",219); } for(i=2;i<=79;i++) { textcolor(LIGHTRED); gotoxy(i,2); printf("%c",219); gotoxy(i,24); printf("%c",219); } } void captura() { register short int i; if(x1==x && y1==y) { textcolor(WHITE); tam++; pontos+=10; gotoxy(60,24); printf(" "); gotoxy(60,24); printf("score: %5.d",pontos); if(pontos>0) comida(); } if(j==1) { for(i=0;i<=tam;i++) { if(corpo[i][0]==x && corpo[i][1]==y) gameover(); else if(corpo_clean[i][0]==x && corpo_clean[i][1]==y) gameover(); } } } void fill() { register short int i; for(i=0;i<200;i++) corpo[i][0]=corpo[i][1]=0; } void comida() { register short int i; comida: srand(time(NULL)); x1=rand()%76+3; y1=rand()%20+4; for(i=0;i<200;i++) { if(corpo[i][0]==x1 && corpo[i][1]==y1) { if(x1<77&&y1<23) { x1++; y1++; } else goto comida; } else if(corpo_clean[i][0]==x1&&corpo_clean[i][1]==y1) { if(x1<77&&y1<23) { x1++; y1++; } else goto comida; } else if(x1==x||y1==y) { if(x1<77&&y1<23) { x1++; y1++; } else goto comida; } } gotoxy(x1,y1); textcolor(LIGHTGREEN); printf("%c",219); textcolor(YELLOW); } void cobra() { register short int i; while(seta!=13) { if(kbhit()) { seta=getch(); movimento: switch(seta) { case CIMA: if(seta2==BAIXO) goto baixo; else seta2=seta; cima: if(p==tam) limpa_corpo(); guarda_corpo(); gotoxy(x,--y); printf("%c",QUAD); limpa(); p++; captura(); if(y==2) gameover(); Sleep(velo_y); break; case BAIXO: if(seta2==CIMA) goto cima; else seta2=seta; baixo: if(p==tam) limpa_corpo(); guarda_corpo(); gotoxy(x,++y); printf("%c",QUAD); limpa(); p++; captura(); if(y==24) gameover(); Sleep(velo_y); break; case DIR: if(seta2==ESQ) goto esq; else seta=seta2; dir: if(p==tam) limpa_corpo(); guarda_corpo(); gotoxy(++x,y); printf("%c",QUAD); limpa(); p++; captura(); if(x==79) gameover(); Sleep(velo_x); break; case ESQ: if(seta2==DIR) goto dir; else seta2=seta; esq: if(p==tam) limpa_corpo(); guarda_corpo(); gotoxy(--x,y); printf("%c",QUAD); limpa(); p++; captura(); if(x==2) gameover(); Sleep(velo_x); break; case PAUSA: seta=getch(); break; } } else goto movimento; } clrscr(); } int main() { short int i; clrscr(); textcolor(YELLOW); gotoxy(28,11); cprintf("Choose the speed (1-5)"); gotoxy(40,13); scanf("%d",&i); clrscr(); switch(i) { case 1:velo_x=100; velo_y=140; break; case 2:velo_x=86; velo_y=125; break; case 3:velo_x=70; velo_y=95; break; case 4:velo_x=55; velo_y=80; break; case 5:velo_x=40; velo_y=65; break; } fill(); bordas(); captura(); seta=getch(); comida(); cobra(); return 0; }