| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 333 人关注过本帖
标题:求大家帮助 帮我改改程序
只看楼主 加入收藏
hope331con
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-3
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
求大家帮助 帮我改改程序
本人超级新手找了一个程序 应用起来和自己预期的结果差好多 希望高手在给我写一下注释 说实话看不太明白 由于老师要求在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;
}




2012-06-03 18:03
oueryixiaxia
Rank: 2
等 级:论坛游民
帖 子:12
专家分:44
注 册:2012-5-21
收藏
得分:10 
你这个程序是干什么用的?都没注释.....
2012-06-03 18:06
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:10 
太贪心拉,你是一新手
代码太多咯
2012-06-03 18:08
hope331con
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-3
收藏
得分:0 
回复 3楼 jokerskill
大哥不是我贪心 这都是老师要求的呀
2012-06-03 18:46
hope331con
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-3
收藏
得分:0 
回复 楼主 hope331con
我晕太着急了 忘了说明 这是一个贪食蛇的程序

2012-06-03 18:46
hope331con
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-6-3
收藏
得分:0 
救命呀  周一要交的呀 还不能用呢
2012-06-03 18:47
快速回复:求大家帮助 帮我改改程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026338 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved