欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一次写的

程序员文章站 2022-06-20 08:38:30
...
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define wiedth 10
#define height 10
#define snack struict snackpoint
char backapace[width] [height];

struct snackpoint
{
    int x;
    int y;
    struct snackpoint *next;
};


//map;
void inite()
{
    int a,b;
    for ( a = 0; a < width; a++)
    {
        for ( b = 0; b < height; b++)
        {
            if(backapace[a][b]!='x')
            backapace[a][b]=' ';
        }   
    }
    
}

void body(snack *p,int x,int y){
    p->next=(snack*)malloc(sizeof(snack));
    snack *p1;
    p1=p->next;
    p1->x=x;
    p1->y=y;
    p1->next=NULL;
}
//填充主体在面板上

void fix(snack *p){
    snack *n;
    n=p;
    inite();
    while(n!=NULL){
    backapace[n->x][n->y]='*';
    n=n->next;
    }
}

void map(){
    int a,b;
    for ( a = 0; a < width; a++)
    {
        putchar('\n');
        for ( b = 0; b < height; b++)
        {
            putchar(backapace[a][b]);
        }
        
    }
}

int chdir(snack *p,char dir){
    
    
    switch (dir)
    {
    case 'w':
        
        if (backapace[(p->x)-1][(p->y)]=='x')
        {
            body(p,(p->x)-1,(p->y));
            return 1;
        }
        if (backapace[(p->x)-1][(p->y)]=='*')
        return 3;
        body(p,(p->x)-1,(p->y));
        
                return 2;
    case 'a':
        if (backapace[(p->x)][(p->y)-1]=='x')
        {
            body(p,(p->x),(p->y)-1);
            return 1;
        }
        if (backapace[(p->x)][(p->y)-1]=='*')
        return 3;
            body(p,(p->x),(p->y)-1);
            
                return 2;
    case 's':
         if (backapace[(p->x)+1][(p->y)]=='x')
        {

            body(p,(p->x)+1,(p->y));
            return 1;
        }
        if (backapace[(p->x)+1][(p->y)]=='*')
            return 3;
            body(p,(p->x)+1,(p->y));
            return 2;
    case 'd':
         if (backapace[(p->x)][(p->y)+1]=='x')
        {
            body(p,(p->x),(p->y)+1);
            return 1;
        }
        if (backapace[(p->x)][(p->y)+1]=='*')
            return 3;
            body(p,(p->x),(p->y)+1);
            
                return 2;
    }        
    return 0;          
}
 void creat(){
     int x=rand()%10;
     srand((unsigned)(time(NULL)));
     int y=rand()%10;
     int se=serch();
    if (backapace[x][y]==' '&&se==0)
    {
        backapace[x][y]='x';
    }
    
 }
 int serch(){
     int a,b;
    for ( a = 0; a < width; a++)
    {
        for ( b = 0; b < height; b++)
        {
            if(backapace[a][b]=='x')
            return 1;

        }
    } 
    return 0;
 }
int keepdir(char dir,snack *p){
    switch (dir)
    {
    case 'w':
        
        if (backapace[(p->x)-1][(p->y)]=='x')
        {
            body(p,(p->x)-1,(p->y));
            return 1;
        }
        if (backapace[(p->x)-1][(p->y)]=='*')
        return 3;
        body(p,(p->x)-1,(p->y));
        
                return 2;
    case 'a':
        if (backapace[(p->x)][(p->y)-1]=='x')
        {
            body(p,(p->x),(p->y)-1);
            return 1;
        }
        if (backapace[(p->x)][(p->y)-1]=='*')
        return 3;
            body(p,(p->x),(p->y)-1);
            
                return 2;
    case 's':
         if (backapace[(p->x)+1][(p->y)]=='x')
        {

            body(p,(p->x)+1,(p->y));
            return 1;
        }
        if (backapace[(p->x)+1][(p->y)]=='*')
            return 3;
            body(p,(p->x)+1,(p->y));
            return 2;
    case 'd':
         if (backapace[(p->x)][(p->y)+1]=='x')
        {
            body(p,(p->x),(p->y)+1);
            return 1;
        }
        if (backapace[(p->x)][(p->y)+1]=='*')
            return 3;
            body(p,(p->x),(p->y)+1);
            
                return 2;
    }        
}
int main(){
    snack snack1;
    
    static snack *head;
    head=&snack1;
    head->x=5;
    head->y=6;
    head->next=NULL;
    
    snack *p=head,*p1=head;

    inite();
    //creat();
    
    // backapace[8][6]='x';
    // backapace[7][2]='x';
    fix(head);
    map(); 
    int x;
    int d;
    int soc=0;
    char diac;
    creat();
    char s;
    while(1){
        s=getche();

        //func
        while(kbhit()==0){
            
            for(x=0;x<100000000;x++){}

        d=chdir(p,s);
        p=p->next;
        if (d==2){
        head=head->next;//去头
        }else if(d==3)
        {
            break;//正常
        }else if (d==1)
        {
            soc++;//计分
        }
        //func
        fix(head);
        creat();
        system("cls");
        map();

        
        }
       if(d==3){
           break;
       }
    }    
   
    printf("%d",soc);
	return 0; 
}

极其愉悦