Discuz! Board

 找回密码
 立即注册
查看: 1049|回复: 0

12.17.

[复制链接]

5

主题

5

帖子

30

积分

新手上路

Rank: 1

积分
30
发表于 2022-12-17 18:55:04 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
#include <graphics.h>
#include <time.h>
 
#define Block_szie 20
#define Width 40 
#define Height 30 
 
int food_x,food_y;
int gameover;
int wait;
 
struct Snake_data
{
    int x;
    int y;
    int color; 
};
 
struct Snake
{
    char direct;
    int snake_len;
    int snake_v;
    Snake_data snake_d[1000];
}snake0,snake1;
 
void moveSnake(Snake &s)//ÒÆ¶¯Éß 
{
	for(int i=(s.snake_len)-1;i>=0;i--)
	{
		snake0.snake_d[i+1].x=snake0.snake_d[i].x;
		snake0.snake_d[i+1].y=snake0.snake_d[i].y;
	}
	switch(s.direct)
	{
		case'w':
		case'W':
			s.snake_d[0].x=s.snake_d[1].x;
			s.snake_d[0].y=s.snake_d[1].y-1;
			break;
		case's':
		case'S':
			s.snake_d[0].x=s.snake_d[1].x;
			s.snake_d[0].y=s.snake_d[1].y+1;
			break;
		case'd':
		case'D':
			s.snake_d[0].x=s.snake_d[1].x+1;
			s.snake_d[0].y=s.snake_d[1].y;
			break;
		case'a':
		case'A':
			s.snake_d[0].x=s.snake_d[1].x-1;
			s.snake_d[0].y=s.snake_d[1].y;
			break;
		default:
			break;
	}
}
 
void startup()//Æô¶¯ 
{
	snake0.direct='d';
	snake0.snake_len=4;
	snake0.snake_v=10;
	for(int i=0;i<=3;i++)
	{
		snake0.snake_d[i].x=(Width/2)-i;
		snake0.snake_d[i].y=(Height/2);
	}
    srand(time(0));//Ëæ»úÖÖ×Óº¯Êý 
    initgraph(Width*Block_szie, Height*Block_szie, INIT_RENDERMANUAL);              //³õʼ»¯Í¼ÐνçÃæ
    setcolor(BLACK);    //ÉèÖû­Í¼ÏßΪºìÉ« 
    setbkcolor(WHITE);//ÉèÖñ³¾°ÑÕɫΪ°×É«
    setfillcolor(LIGHTGRAY);//ÉèÖÃÌî³äÑÕɫΪdz»ÒÉ« 
     
    setfont(20,0,"Ó×Ô²");//(×ÖÌå¸ß¶È,×ÖÌå¿í¶È(Ϊ0¼´Îª×ÔÊÊÓ¦),×ÖÐÎ)ÉèÖÃ×ÖÌåΪ25,Ó×Ô²×ÖÌå
    setbkmode(TRANSPARENT); //ÉèÖÃÎÄ×Ö±³¾°É«ÎªÍ¸Ã÷(ĬÈÏΪÓб³¾°É«)
}
  
void show_snake()//ÏÔʾ 
{
    int i,j;
    //Éß 
    for(i=0;i<snake0.snake_len;i++)
    {
        setfillcolor(hsv2rgb((10*i)%360, 1, 1));//ÉèÖÃÌî³äÑÕÉ«  ²ÎÊý£¨ÑÕÉ«£¬±¥ºÍ¶È£¬Ã÷ÁÁ¶È£© 
        bar(snake0.snake_d[i].x*Block_szie,snake0.snake_d[i].y*Block_szie,(snake0.snake_d[i].x+1)*Block_szie,(snake0.snake_d[i].y+1)*Block_szie);
    }
     
    //ʳÎï    
    xyprintf(20,20,"Íæ¼Ò1µÃ·Ö£º%d",snake0.snake_len-4);//¸ñʽ»¯Êä³öÎÄ×Ö
    xyprintf(20,40,"Íæ¼Ò2µÃ·Ö£º%d",snake1.snake_len-4);//¸ñʽ»¯Êä³öÎÄ×Ö
}
 
void show_food()
{
    int i,j;
    for(i=0;i<Width;i++)
    {
    	for(j=0;j<Height;j++)
    	{
        	//setcolor(WHITE);  //ÉèÖû­Í¼ÏßΪ°×É«
        	setfillcolor(WHITE);//ÉèÖÃÌî³äÑÕɫΪdz»ÒÉ« 
        	bar(i*Block_szie,j*Block_szie,(i+1)*Block_szie,(j+1)*Block_szie);
    	}
	}
    setfillcolor(GREEN);//ÉèÖÃÌî³äÑÕÉ« 
    bar(food_x*Block_szie,food_y*Block_szie,(food_x+1)*Block_szie,(food_y+1)*Block_szie);
}
 
void update0()//Êý¾Ý¸üР
{
	moveSnake(snake0);
	Sleep(100);
	if(kbhit())
    {
    	char ch;
        ch = getch();
        if((ch=='w')||(ch=='a')||(ch=='s')||(ch=='d'))
        {
            snake0.direct=ch;
            moveSnake(snake0);
        } 
    }
} 
 
 
void food_set()
{
a:	food_x=rand()%(Width-2)+1;
	food_y=rand()%(Height-2)+1;
	for(int i=0;i<snake0.snake_len;i++)
	{
		if((food_x==snake0.snake_d[i].x)&&(food_y==snake0.snake_d[i].y))
		{
			goto a;
		}
	} 
}
 
void eat_food()
{
	
}
 
bool game_over()//1½áÊø
{
     
} 
 
 
int main()
{
b:  startup();
    food_set();
    getch();
    while(1)
    {
        cleardevice();
        show_food();
        show_snake();
        update0();
        //update1(snake1);
        eat_food();
        //if(game_over())
        {
            xyprintf(300,300,"Íæ¼Ò1ÊäÁË");
            //break;
        }
 
        Sleep(10);
    }
     
    Sleep(2000);
    xyprintf(300,320,"°´rÖØÐ¿ªÊ¼");
    while(1)
    {
        if(kbhit())
        {
            int temp = getch();
            if(temp =='r')
            {
                goto b;
            }
        }   
    }
 
    return 0;
} 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-31 13:37 , Processed in 0.056742 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表