欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

70行C語言代碼實現貪吃蛇

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

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

#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 

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

講一下大概的實現思想吧:

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

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

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

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

相關文章

  • C++實現LeetCode(169.求大多數)

    C++實現LeetCode(169.求大多數)

    這篇文章主要介紹了C++實現LeetCode(169.求大多數),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C語言實現倒置字符串的兩種方法分享

    C語言實現倒置字符串的兩種方法分享

    這篇文章主要和大家詳細介紹了利用C語言實現倒置字符串的兩種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-08-08
  • C/C++中時間庫函數的使用詳解

    C/C++中時間庫函數的使用詳解

    這篇文章主要為大家詳細介紹了C/C++中的時間相關知識總結,例如時間庫函數的使用以及獲取本地時間的不同方法,文中的示例代碼講解詳細,需要的可以參考一下
    2022-11-11
  • 詳解C語言初階基礎

    詳解C語言初階基礎

    這篇文章主要介紹了C語言中的初階基礎,介紹了其相關概念,具有一定參考價值。需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-11-11
  • C++四種case的詳細介紹小結

    C++四種case的詳細介紹小結

    本文主要介紹了C++四種case的詳細介紹小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C++虛函數表與類的內存分布深入分析理解

    C++虛函數表與類的內存分布深入分析理解

    對C++ 了解的人都應該知道虛函數(Virtual Function)是通過一張?zhí)摵瘮当恚╒irtual Table)來實現的。簡稱為V-Table。本文就將詳細講講虛函數表的原理與使用,需要的可以參考一下
    2022-08-08
  • C語言每日練習之字符串反轉

    C語言每日練習之字符串反轉

    這篇文章主要介紹了C語言字符串反轉,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • c語言實現向上取整計算方法

    c語言實現向上取整計算方法

    這篇文章主要介紹了c語言實現向上取整計算方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語言實現反彈球小游戲

    C語言實現反彈球小游戲

    這篇文章主要為大家詳細介紹了C語言實現反彈球小游戲,利用函數寫的C語言小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++優(yōu)先級隊列的使用指南與模擬實現

    C++優(yōu)先級隊列的使用指南與模擬實現

    優(yōu)先級隊列是一種特殊的隊列,其中每個元素都有一個與之關聯(lián)的優(yōu)先級,優(yōu)先級較高的元素會在隊列中較早地被處理,而優(yōu)先級較低的元素會在后續(xù)處理,本文給大家介紹C++優(yōu)先級隊列的使用指南與模擬實現,需要的朋友可以參考下
    2023-09-09

最新評論