//標頭檔案//
#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 根據方向進行移動,一次移動乙個格 根據按鍵改方向 三 隨機...