码迷,mamicode.com
首页 > 其他好文 > 详细

snake

时间:2016-01-01 11:05:15      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

  1. include <stdio.h>  
  2. #include <Windows.h>  
  3. #include <conio.h>  
  4. #include <time.h>  
  5.   
  6. #define MAX_WIDE  50  
  7. #define MAX_HIGH  16  
  8.   
  9. short dx = 1, dy = 0, randxy, score = 0;  
  10. COORD coord;  
  11.   
  12. struct Snake{  
  13.     short len;  
  14.     short body[MAX_WIDE*MAX_HIGH];  
  15. }snake;  
  16.   
  17. void draw()  
  18. {  
  19.     for(short i = 0; i < snake.len; i++){  
  20.         coord.X = snake.body[i] & 127;  
  21.         coord.Y = snake.body[i] >> 8;  
  22.         SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);  
  23.         putchar(‘*‘);  
  24.     }  
  25.     coord.X = randxy & 127;  
  26.     coord.Y = randxy >> 8;  
  27.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);  
  28.     putchar(‘*‘);  
  29. }  
  30. void  run()  
  31. {  
  32.     char key;  
  33.     short i, j;  
  34.     while( snake.body[0] > 0 && ( (snake.body[0] & 127) < MAX_WIDE) && (snake.body[0]>>8 < MAX_HIGH) ){  
  35.         draw();  
  36.         for(;kbhit();)  key = getch();  
  37.         switch(key){  
  38.         case ‘W‘: dx = 0, dy = -1; break;  
  39.         case ‘S‘: dx = 0, dy = 1; break;  
  40.         case ‘A‘: dx = -1, dy = 0; break;  
  41.         case ‘D‘: dx = 1, dy = 0; break;  
  42.         }  
  43.         for(j = 1; j < snake.len; j++)  
  44.             if(snake.body[j] == snake.body[0])  
  45.                 return;  
  46.         if(randxy == snake.body[0]){  
  47.                 snake.len++, score += 10;  
  48.                 randxy = ((rand() % 16 + 0) <<8) | (rand() % 50 + 0);  
  49.         }  
  50.         for(i = snake.len-1; i > 0; i--)  
  51.             snake.body[i] = snake.body[i-1];  
  52.         snake.body[0] = ((snake.body[0] & 127) + dx) | ((snake.body[0] >>8) + dy)<<8;  
  53.         Sleep(500);  
  54.         system("cls");    
  55.     }  
  56. }  
  57. int main()  
  58. {  
  59.     snake.body[MAX_WIDE*MAX_HIGH] = 0;  
  60.     snake.body[0] = (MAX_HIGH/2)<<8 | MAX_WIDE/2;  
  61.     snake.len = 1;  
  62.     srand((unsigned)time(NULL));   
  63.     randxy = ((rand() % 16 + 0) <<8) | (rand() % 50 + 0);  
  64.     SMALL_RECT rect;  
  65.     rect.Top = 0, rect.Left = 0;  
  66.     rect.Bottom = MAX_HIGH, rect.Right  = MAX_WIDE;  
  67.     SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), true, &rect);  
  68.     run();  
  69.     printf("Your Score:%d", score);  
  70.     return 0;  
  71. }  

snake

标签:

原文地址:http://www.cnblogs.com/TheName/p/5093072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!