最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

70行C語言代碼實現(xiàn)貪吃蛇

 更新時間:2018年03月19日 11:55:35   作者:Keepower  
這篇文章主要為大家詳細介紹了70行C語言代碼實現(xiàn)貪吃蛇,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)貪吃蛇的具體代碼,供大家參考,具體內容如下

#include <stdio.h> 
#include <Windows.h> 
#include <conio.h> 
#include <time.h> 
 
#define MAX_WIDE 50 
#define MAX_HIGH 16 
 
short dx = 1, dy = 0, randxy, score = 0; 
COORD coord; 
 
struct Snake{ 
 short len; 
 short body[MAX_WIDE*MAX_HIGH]; 
}snake; 
 
void draw() 
{ 
 for(short i = 0; i < snake.len; i++){ 
  coord.X = snake.body[i] & 127; 
  coord.Y = snake.body[i] >> 8; 
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); 
  putchar('*'); 
 } 
 coord.X = randxy & 127; 
 coord.Y = randxy >> 8; 
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); 
 putchar('*'); 
} 
void run() 
{ 
 char key; 
 short i, j; 
 while( snake.body[0] > 0 && ( (snake.body[0] & 127) < MAX_WIDE) && (snake.body[0]>>8 < MAX_HIGH) ){ 
  draw(); 
  for(;kbhit();) key = getch(); 
  switch(key){ 
  case 'W': dx = 0, dy = -1; break; 
  case 'S': dx = 0, dy = 1; break; 
  case 'A': dx = -1, dy = 0; break; 
  case 'D': dx = 1, dy = 0; break; 
  } 
  for(j = 1; j < snake.len; j++) 
   if(snake.body[j] == snake.body[0]) 
    return; 
  if(randxy == snake.body[0]){ 
    snake.len++, score += 10; 
    randxy = ((rand() % 16 + 0) <<8) | (rand() % 50 + 0); 
  } 
  for(i = snake.len-1; i > 0; i--) 
   snake.body[i] = snake.body[i-1]; 
  snake.body[0] = ((snake.body[0] & 127) + dx) | ((snake.body[0] >>8) + dy)<<8; 
  Sleep(500); 
  system("cls"); 
 } 
} 
int main() 
{ 
 snake.body[MAX_WIDE*MAX_HIGH] = 0; 
 snake.body[0] = (MAX_HIGH/2)<<8 | MAX_WIDE/2; 
 snake.len = 1; 
 srand((unsigned)time(NULL)); 
 randxy = ((rand() % 16 + 0) <<8) | (rand() % 50 + 0); 
 SMALL_RECT rect; 
 rect.Top = 0, rect.Left = 0; 
 rect.Bottom = MAX_HIGH, rect.Right = MAX_WIDE; 
 SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), true, &rect); 
 run(); 
 printf("Your Score:%d", score); 
 return 0; 
} 

環(huán)境:VC++6.0 

該代碼效率不高,代碼又難讀,僅供娛樂。

講一下大概的實現(xiàn)思想吧:

.:其中用一個MAX_WIDE * MAX_HIGH大的數(shù)組來虛擬化snake的軀干,數(shù)組中的項保存該snake的坐標值,并且該值用一個short(16byte)類型的值表示,高8byte表示它的Y坐   標,低8byte表示它的X坐標,然后就可以遍歷該數(shù)組畫出各個坐標點。

.:至于它的移動就是通過數(shù)組的前一個項的值復制給后一個項,以此達到它的移動。

當然也可以用鏈表代替數(shù)組實現(xiàn)該snake軀干,而且不會像數(shù)組一樣浪費內存,但是用鏈表的話,就增加了代碼行^_^

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C++中unique函數(shù)的用法示例

    C++中unique函數(shù)的用法示例

    nique()是C++標準庫函數(shù)里面的函數(shù),下面這篇文章主要給大家介紹了關于C++中unique函數(shù)用法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧
    2019-02-02
  • C++實現(xiàn)消消樂游戲

    C++實現(xiàn)消消樂游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)消消樂游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++實現(xiàn)飛機訂票系統(tǒng)

    C++實現(xiàn)飛機訂票系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)飛機訂票系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c語言中位字段與結構聯(lián)合的組合使用詳解

    c語言中位字段與結構聯(lián)合的組合使用詳解

    本篇文章是對c語言中位字段與結構聯(lián)合的組合使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++簡單QQ程序服務器端的實現(xiàn)代碼

    C++簡單QQ程序服務器端的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C++簡單QQ程序服務器端的實現(xiàn)代碼,感興趣的朋友可以參考一下
    2016-05-05
  • 一文搞懂C語言static關鍵字的三個作用

    一文搞懂C語言static關鍵字的三個作用

    這篇文章主要介紹了C語言static關鍵字的三個作用,本文通過實例代碼圖文相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • C++實現(xiàn)延遲的方法詳解

    C++實現(xiàn)延遲的方法詳解

    這篇文章主要為大家詳細介紹了C++實現(xiàn)延遲的三個方法,文中的示例代碼講解詳細,對我們深入了解C++有一定的幫助,感興趣的小伙伴可以學習一下
    2022-12-12
  • 實例講解C++編程中l(wèi)ambda表達式的使用

    實例講解C++編程中l(wèi)ambda表達式的使用

    這篇文章主要介紹了C++編程中l(wèi)ambda表達式的使用實例,lambda表達式特性的引入在C++11中可謂千呼萬喚始出來,非常重要,需要的朋友可以參考下
    2016-01-01
  • QT編寫窗口插件實現(xiàn)調用窗口的自適應

    QT編寫窗口插件實現(xiàn)調用窗口的自適應

    這篇文章主要為大家詳細介紹了QT編寫窗口插件實現(xiàn)調用窗口的自適應,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++初階學習之模板進階

    C++初階學習之模板進階

    這篇文章主要為大家介紹了C++模板進階,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論

潢川县| 弋阳县| 新竹市| 牡丹江市| 武汉市| 包头市| 根河市| 彩票| 东港市| 江油市| 湘阴县| 门源| 颍上县| 杭州市| 嘉禾县| 肇东市| 琼结县| 高平市| 新竹市| 伊川县| 文昌市| 谷城县| 汶川县| 军事| 乌兰县| 封开县| 桦川县| 左权县| 峨山| 临武县| 阿城市| 嵊泗县| 永新县| 泗阳县| 确山县| 浮山县| 德庆县| 临海市| 湄潭县| 赤城县| 阿拉善左旗|