| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | #include <stdio.h>#include <stdlib.h>#include <conio.h>#include <graphics.h>/*	复习:结构体、循环、函数、数组、eaxyx	eaxyx:图形界面库*///做界面1,创建一个图形界面窗口//🐍的方向//🐍的速度//🐍的结构#define SNAKE_NUM 500  //蛇的最大节数enum DIR            //表示🐍的方向{	UP,	DOWN,	LEFT,	RIGHT,};struct Snake{	int size;      //🐍的节数	int dir;       //🐍的方向	int speed;     //🐍的速度	POINT coor[SNAKE_NUM];  //坐标}snake; //数据的初始化void GameInit(){	//init  初始化  graph  图形化窗口    SHOWCONSOLE  显示控制台	initgraph(640, 480);	//初始化🐍	snake.size = 3;	snake.speed = 10;	snake.dir = RIGHT;             //初始化定义🐍的方向为RIGHT		for (int i = snake.size - 1; i >= 0; i--)	{		snake.coor[i].x = 40 - 10 * i;		snake.coor[i].y = 10;		//printf("?%d %d", snake.coor[i].x, snake.coor[i].y);	}	//snake.coor[0].x = 40;	//snake.coor[0].y = 10;	//snake.coor[1].x = 30;	//snake.coor[1].y = 10;	//snake.coor[2].x = 20;	//snake.coor[2].y = 10;	}void GameDraw(){	//双缓冲绘图	BeginBatchDraw();	//设置背景颜色	setbkcolor(RGB(85, 0, 255));	cleardevice();	//绘制🐍	//setfillcolor()	for (int i = 0; i < snake.size; i++)	{		solidcircle(snake.coor[i].x, snake.coor[i].y, 5);	}	EndBatchDraw();}//移动🐍void snakeMove(){	//移动是坐标发生改变	//让身体跟着头移动	for (int i = snake.size - 1; i > 0; i--)	{		snake.coor[i] = snake.coor[i - 1];	}	switch (snake.dir)	{	case UP:		snake.coor[0].y -= snake.speed;		if (snake.coor[0].y <= 0)//头跑出了上边界		{			snake.coor[0].y = 640;		}		break;	case DOWN:		snake.coor[0].y += snake.speed;		break;	case LEFT:		snake.coor[0].x -= snake.speed;		break;	case RIGHT:		snake.coor[0].x += snake.speed;		break;	}		}//通过按键盘改变🐍的移动方向void keyControl(){	//判断有没有按键盘,如果有按键,就返回真	if (_kbhit())	{		//72   80   75   77    方向键上下左右键值		switch (_getch())		{		case 'w':		case 'W':		case 72:			if (snake.dir != DOWN)			{				snake.dir = UP;			}			break;		case 's':		case 'S':		case 80:			if (snake.dir != UP)			{				snake.dir = DOWN;			}			break;		case 'a':		case 'A':		case 75:			if (snake.dir != RIGHT)			{				snake.dir = LEFT;			}			break;		case 'd':		case 'D':		case 77:			if (snake.dir != LEFT)			{				snake.dir = RIGHT;			}			break;		}	}		}int main(){	GameInit();			while (1)	{		GameDraw();		snakeMove();		keyControl();		Sleep(20);	}	return 0;}
 |