整個**都是c語言,其中呼叫少部分庫函式,不如實現螢幕座標列印的函式,貪吃蛇遊戲**的核心在於蛇身體座標的更新,實現細節請看**注釋,
//#include "stdafx.h" 如果是vc環境的話加上該標頭檔案
#include#include #include #include #include #define turnup 1
//巨集定義蛇運動的四個方向
#define turndown 2
#define turnright 3
#define turnleft 4
#define maxrow 20
#define maxcol 30
void printsnake(int bodylen,coord bodypos);
void run (int bodylen,coord *body,int dirction,int times);
void initsnake (int bodylen,coord* body,coord head);
void createfood();
void printwall();
void printscore(int len);
void supervisekeybot(coord *body,int direction,int times);
void createfood1();
int len=5;
coord gfoodpos; //定義三個全域性變數,身體長度和兩種食物 座標
coord gfoodpos1; // coord為系統定義結構體,可實現螢幕座標表示
int main(int argc, char* argv)
; coord head=;
printwall();
initsnake (len,body,head);//根據head初始化蛇的身體
printsnake(len,body); //列印初始的蛇
createfood();
createfood1();
supervisekeybot(body,direction,10);
return0;}
/*******************************************
函式名稱:printsnake
函式功能:列印蛇的身體
函式引數:bodylen --身體的長度
bodypos --蛇身體的座標
函式返回:
********************************************/
void printsnake(int bodylen,coord *bodypos)
} /*******************************************
函式名稱:changedirction
函式功能:實現蛇的轉彎,或者說蛇身體的更新
該函式為整個貪吃蛇的核心點,核心思想為以蛇頭座標為起點,
此程式將蛇頭座標定為body[len-1];
後面點的座標都取其前乙個點的的位置
********************************************/
void changedirction(int bodylen,coord *body,int dirction)
switch (dirction)
case turndown :
case turnright:
case turnleft :
default:
}//吃到食物的時候
if(body[p-1].x==gfoodpos.x
&&body[p-1].y==gfoodpos.y)
else
if(body[p-1].x==gfoodpos1.x //此處必須加else;不然有bug
&&body[p-1].y==gfoodpos1.y)
//邊界檢測
if(body[p-1].x==0||body[p-1].y==0||body[p-1].x==maxcol||body[p-1].y==maxrow)
for (int j=0;jif (body[p-1].x==body[p-j-2].x&&body[p-1].y==body[p-j-2].y)
}}/*******************************************
函式功能:
函式引數:
********************************************/
void run (int bodylen,coord *body,int dirction,int times)
}/*******************************************
函式功能:
函式引數:
********************************************/
void initsnake (int bodylen,coord* body,coord head)
}/*******************************************
函式功能:產生食物,呼叫rand函式隨機位置產生兩種食物
函式引數:
********************************************/
void createfood()
handle hout;
hout=getstdhandle(std_output_handle);
setconsolecursorposition(hout,gfoodpos);
printf("a\n");
}void createfood1()
handle hout;
hout=getstdhandle(std_output_handle);
setconsolecursorposition(hout,gfoodpos1);
printf("b\n");
}/*******************************************
函式功能:蛇身體的更新,呼叫system("cls")不能滿足要求
將座標點依次列印空格可實現「清屏」效果
函式引數:
********************************************/
} /*******************************************
函式功能:列印牆的邊界
函式引數:
********************************************/
void printwall()
putchar('\n');
}}/*******************************************
函式功能:檢測鍵盤的按鍵,實現蛇的實時控制
函式引數:
********************************************/
void supervisekeybot(coord *body,int direction,int times)
case
's':
case
'a':
case
'd':}}
}}/*******************************************
函式功能:將蛇的身體長度列印,作為分數
函式引數:
********************************************/
void printscore(int len)
c語言小遊戲 貪吃蛇
1 資料設計 遊戲地圖的寬和高,以及蛇的最大長度 食物在地圖上x和y上的顯示 蛇的長度,蛇得每一節的座標儲存,蛇的移動速度 蛇是否變化,蛇的初始移動方向 2 模組化設計 void drawmap 繪製遊戲地圖 void keydown 按鍵處理 voidcreatefood 產生食物 void go...
C 貪吃蛇小遊戲
自學了幾天c 嘗試寫了乙個貪吃蛇小遊戲,比較詳細地做了注釋,實現 1 貪吃蛇基本功能 2 長按加速 3 計分板 xaml 及介面 namespace 貪吃蛇 新食物生成 public void newfoodgenerate 計時器每乙個計時週期內的時間處理程式 void timer tick ob...
C 貪吃蛇小遊戲
1.有許多值得新手學習的地方 2.不看就吃虧了噢 3.如果沒有值得學習的地方,我就倒立洗頭!include include include include include 方向鍵的ascll值 上72,左75,右77,下80 背景顏色的 0 黑色 1藍色 2 綠色 3湖藍色 4紅色 5紫色 6黃色 ...