貪吃蛇實現小結

2021-10-03 08:19:32 字數 4120 閱讀 6621

//標頭檔案//

#include

//標準輸出輸入標頭檔案,寫過c的都知道,沒什麼好說的

//本**中提供printf(); scanf();

#include

//standard library標準庫標頭檔案

//本**中提供system();

#include

//乙個很重要的標頭檔案,包含了其他windows的標頭檔案,在本程式中是提供

//本**中提供getstdhandle(); sleep();

#include

//c/c++中的日期和時間標頭檔案。用於需要時間方面的函式。

//本**中提供time();

#include

//控制台輸入輸出的簡寫,定義了通過控制台進行資料輸入輸出的函式

//本**中提供getch();

//函式

void

srand

(unsigned

int)

;//使用無符號種子產生一系列偽隨機數的起點

intrand

(void);

//從srand中指定的seed開始,返回乙個[seed, rand_max(0x7fff))的隨機整數

//在使用rand()前需要呼叫srand(),如果沒有,則自動呼叫srand(1);

time_t time

(time_t)

;//返回從1970s到現在的秒數並儲存在形參中

//用null做形參表示不儲存在某個變數中,只返回值配合形成隨機數使用,但是要強制型別轉換

//如何使用time函式算出當前時間?

intkbhit

(void

); //檢查當前是都有鍵盤輸入,有則返回非0值,否則返回0

intfflush

(file*

); //清除讀寫緩衝區,在需要立即把輸出緩衝區的資料進行物理寫入時

//fflush(stdin); 為了不影響後面的資料讀取

intgetch

(void);

//當使用者按下某個字元時,無需按回車,函式自動讀取,但不顯示在螢幕上

handle getstdhandle

(std_output_handle);

//是乙個window api,獲取乙個標準輸出(實參)的控制代碼,用來標識windows物件,個人理解是用來指定裝置

void

setconsolecursorposition

(handle, coord)

;//是乙個window api,用於設定控制台(cmd)的游標位置

//形參中handle指具體哪個控制代碼,coord指要設定的游標具體位置

sleep

(int);

//用做延時,程式暫停若干時間,即形參中輸入的整數,單位是毫秒

//本**中用來調節貪吃蛇移動速度,即移動一次中間間隔的時間

intsystem

(char

* command)

;//發出乙個dos指令,形參裡面就是各種指令

//system("pause"); 凍結螢幕

//system("cls"); 清屏

實現

**

#include

#include

#include

#include

#include

//輔助巨集定義

#define mapheight 25

#define mapwidth 60

#define snakesize 50

#define snakespped 100

//全域性變數

int key =

'w';

//初始化移動方向

int changeflag =0;

//蛇是否要變化,如果吃了食物則這個迴圈內先不變化

int score =0;

//食物的結構體

struct

food;

//蛇的結構體

struct

snake;

//模組化設計(函式設計) --- 》功能的劃分 ---》抽象到函式

void

drawmap()

;//畫地圖

void

createfood()

;//產生食物

void

keydown()

;//按鍵操作

intsnakestatus()

;//蛇的狀態,判斷是否結束遊戲

void

gotoxy

(int x,

int y)

;//輔助函式:游標移動

void

drawmap()

//2、2上下邊框

for(

int i =

0; i < mapwidth; i +=2

)//2、畫蛇

//2、1確定蛇的屬性(長度、速度、座標)

snake.len =3;

snake.speed = snakespped;

//開始蛇頭在螢幕正中間

snake.x[0]

= mapwidth /

2;

snake.y[0]

= mapheight /2;

//2、2畫蛇

//畫蛇頭

gotoxy

(snake.x[0]

, snake.y[0]

);printf

("■");

//畫蛇身

for(

int i =

1; i < snake.len; i++

)//3、畫食物

//3、1確定座標

while(1

)//3、2畫出食物

gotoxy

(food.x, food.y)

;printf

("☉");

}void

createfood()

}if(flag && food.x %2==

0)}gotoxy

(food.x, food.y)

;printf

("☉");

snake.len++

; changeflag =1;

//蛇的標記是1,表示蛇這乙個迴圈中先不變化}}

void

keydown()

//擦除最後的位置if(

!changeflag)

//後面的蛇身

for(

int i = snake.len -

1; i >

0; i--

)//方向的處理以及對蛇頭的處理

switch

(key)

gotoxy

(snake.x[0]

, snake.y[0]

);printf

("■");

changeflag =0;

gotoxy

(mapheight +2,

0);//移動不能一直看著游標

}int

snakestatus()

return1;

}void

gotoxy

(int x,

int y)

intmain()

}//gotoxy(mapwidth / 2, mapheight / 2);

printf

("gameover\t\n");

printf

("your score is %d\n"

, score)

;printf

("want restart?(y/n)\t");

scanf_s (

"%c"

,&t);if

(t ==

'n')

break;}

gotoxy

(mapwidth /

2, mapheight /2)

;printf

("exit");

system

("pause");

return0;

}

實現貪吃蛇

貪吃蛇 1.它的移動我們採用頭部加乙個尾巴減乙個 2.我們將view的大小分成很多個格仔 3.蛇的移動是以乙個格仔為單位 created by administrator on 2016 10 11.public class gameview extends view public gameview...

c 實現貪吃蛇

include include include include include include include include include word square color 7 義方向 define key up 72 define key down 80 define key left 75...

canvas實現貪吃蛇

效果圖ps 這個只是思路,詳細可看 注釋 一 先把蛇畫出來 定義一下蛇的結構,用乙個陣列儲存一堆矩形,包含蛇頭 紅 和蛇身 灰 畫蛇 初始狀態 二 蛇能動 重點 蛇移動方式 自始至終都只有蛇頭在動 需要乙個儲存方向的變數 direction 根據方向進行移動,一次移動乙個格 根據按鍵改方向 三 隨機...