終於來到我們的實作部分了!
我們今天要寫的遊戲是貪食蛇,以下是需要的標頭黨
#include <iostream> //include的函式庫,要輸入輸出會使用到iostream
#include <windows.h> //用到windows的api
#include <conio.h> //偵測使用者輸入什麼
#include <cstdlib> //亂數
#include <ctime> //時間初始化
接下來是宣告變數
// 遊戲變數宣告
bool gameOver; //判斷遊戲是否結束
const int width = 25; //遊戲畫面寬度
const int height = 15; //遊戲畫面長度
int x,y,coinX,coinY,score; //xy為蛇的初始位置,coinxy為錢幣
int nTail; //number of tail的意思,紀錄蛇的長度
int tailX[150],tailY[150]; //尾巴的座標
int direction; //宣告整數資料型態的方向
const int Stop = 0, Left=1, Right=2, Up=3, Down=4; //宣告四個狀態
初始化遊戲
void SetUp(){ //初始化遊戲
gameOver = 0; //設成0代表還未gameover
direction =Stop; //初始化的方向是暫停的
x=width/2;
y=height/2; //初始化面大約為螢幕中心點
flag:
coinX=rand()%(width - 1)+1;
coinY=rand()%(height - 1)+1; //用亂數產生錢幣位置
if(x == coinX && y ==coinY){ //如果蛇的位置和錢幣重疊
goto flag;
}
return;
}
產生遊戲畫面
void Draw(){ //產生遊戲畫面
Sleep(100); //讓畫面暫停0.1秒
Clear(); //繪製畫面前把上一個畫面清除
for(int i=0; i<width+2; i++){ //繪製上半部邊框
cout << "#"; //代表上面的邊框
}
cout << endl; //換行
for(int i=0; i<height; i++){
for(int j=0; j<width; j++){
if(j == 0){ //左邊的邊框
cout <<"#";
}
if (i == y && j == x){
cout << "*"; //代表蛇
}
else if(i == coinY && j ==coinX){
cout <<"$"; //代表錢錢
}
else{
bool printSnake = false;
for(int k=0; k<nTail; k++){
if(tailX[k] == j && tailY[k] == i){ //代表這個位置是蛇的身體
cout << "*";
printSnake = true;
}
}
if(!printSnake){
cout << " "; //印出空格
}
}
if(j == width-1){ //右邊邊框
cout << "#";
}
}
cout << endl;
}
for(int i=0; i<width+2; i++){ //繪製下半部邊框
cout << "#"; //代表上面的邊框
}
cout << endl;
cout << "Score: " << score << endl; //印出分數
return;
}
主程式在這邊
#include "snake.h"
int main(){
SetUp();
while(!gameOver){
Draw();
}
return 0;
}
執行完的結果就是這樣啦~下一篇文章我們再把遊戲完成!
我沒有做太多的文字敘述,我盡量都打在註解裡了,希望大家看得懂!