123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <graphics.h>
- #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()
- {
-
- initgraph(640, 480);
-
- snake.size = 3;
- snake.speed = 10;
- snake.dir = RIGHT;
-
- for (int i = snake.size - 1; i >= 0; i--)
- {
- snake.coor[i].x = 40 - 10 * i;
- snake.coor[i].y = 10;
-
- }
-
-
-
-
-
-
-
- }
- void GameDraw()
- {
-
- BeginBatchDraw();
-
- setbkcolor(RGB(85, 0, 255));
- cleardevice();
-
-
- 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())
- {
-
- 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;
- }
|