#include "Snake.h"
int main()
{
InitSnake();
while(snake.live == 1)
{
while(!kbhit() && snake.live == 1)
{
if(food.flag == 0)
{
CoorFood();
}
cleardevice();
DrawFood();
MoveSnake();
DrawSnake();
//SnakeGet();
EatFood();
Sleep(200);
}
if(kbhit())
{
ChangeSnake();
}
}
closegraph();
return 0;
}
void InitSnake()
{
srand((unsigned int)time(NULL));
initgraph(640,480);
PlaySound("music.wav",NULL,SND_FILENAME|SND_ASYNC);
snake.n = 250;
snake.live = 1;
snake.ch = right;
snake.szb[0].x = 0;
snake.szb[0].y = 0;
}
void DrawSnake()
{
for(int i = 0 ;i < snake.n ;i++)
{
setcolor(EGERGB(0xFF, 0xFF, 0x0));
rectangle(snake.szb[i].x,snake.szb[i].y,
snake.szb[i].x + 20,snake.szb[i].y + 20);
setfillcolor(GREEN);
bar(snake.szb[i].x + 1,snake.szb[i].y + 1,
snake.szb[i].x + 19,snake.szb[i].y + 19);
}
}
void MoveSnake()
{
for (int i = snake.n - 1;i > 0;i--)
{
snake.szb[i].x = snake.szb[i - 1].x;
snake.szb[i].y = snake.szb[i - 1].y;
}
switch(snake.ch)
{
case up:
snake.szb[0].y -= 20;
break;
case down:
snake.szb[0].y += 20;
break;
case left:
snake.szb[0].x -= 20;
break;
case right:
snake.szb[0].x += 20;
break;
}
}
void ChangeSnake()
{
char Snake_move;
Snake_move = getch();
switch(Snake_move)
{
case VK_UP:
if(snake.ch != down)
snake.ch = up;
break;
case VK_DOWN:
if(snake.ch != up)
snake.ch = down;
break;
case VK_LEFT:
if(snake.ch != right)
snake.ch = left;
break;
case VK_RIGHT:
if(snake.ch != left)
snake.ch = right;
break;
}
}
void CoorFood()
{
food.fzb.x = rand() % 32 * 20 + 10;
food.fzb.y = rand() % 24 * 20 + 10;
food.flag = 1;
}
void DrawFood()
{
setcolor(EGERGB(0xFF, 0xFF, 0x0));
circle(food.fzb.x, food.fzb.y, 10);
setfillcolor(RED);
floodfill(food.fzb.x, food.fzb.y, EGERGB(0xFF, 0xFF, 0x0));
}
void EatFood()
{
if(snake.szb[0].x == food.fzb.x - 10 &&snake.szb[0].y == food.fzb.y - 10)
{
snake.n++;
food.flag = 0;
}
}
void SnakeGet()
{
if(snake.szb[0].x < 0 || snake.szb[0].x >= 640 || snake.szb[0].y < 0 || snake.szb[0].y >= 480)
{
snake.live = 0;
}
for(int i = 1 ;i < snake.n ;i++)
{
if(snake.szb[0].x == snake.szb[i].x && snake.szb[0].y == snake.szb[i].y )
{
snake.live = 0;
}
}
}