實現這個小遊戲我們可以分為以下幾步:
1.把蛇要走的地圖列印出來;
2.把蛇和食物列印出來;
3.讓蛇動起來,控制方向;
4.判斷蛇目前所處狀態。
//.c檔案#include"snack.h"
void setpos(int x,int y)
;handle handle = null;
handle = getstdhandle(std_output_handle);
pos.x = x;
pos.y = y;
setconsolecursorposition(handle,pos);
}void welcometogame()
psnakenode buynode()
pret->x = 0;
pret->y = 0;
pret->next = null;
return pret;
}void initsnake(psnake ps)
while(cur)
ps->_psnake = first;
}void createmap()
for(i = 0;i <= 58;i+=2)
for(i = 1;i <= 26;i++)
for(i = 1;i <= 26;i++)
}void createfood(psnake ps)
while(pfood->x % 2 != 0);
while(cur)
cur = cur->next;
}ps->_pfood = pfood;
setpos(pfood->x,pfood->y);
printf(food);
}void gamestart(psnake ps)
void pause()}}
int nexthasfood(psnakenode pn,psnakenode pf)
void eatfood(psnake ps,psnakenode pn)
void notfood(psnake ps,psnakenode pn)
setpos(cur->next->x,cur->next->y);
printf(" ");
free(cur->next);
cur->next = null;
}void snakemove(psnake ps)
else
}break;
case down:
else
}break;
case left:
else
}break;
case right:
else
}break;}}
void killbywall(psnake ps)
}void killbyself(psnake ps)
pnext = pnext->next;}}
void printhelpinfo(psnake ps)
void gamerun(psnake ps)
else if((getasynckeystate(vk_down)) && (ps->_dir != up))
else if((getasynckeystate(vk_left)) && (ps->_dir != right))
else if((getasynckeystate(vk_right)) && (ps->_dir != left))
else if(getasynckeystate(vk_space))
else if(getasynckeystate(vk_escape))
else if(getasynckeystate(vk_f1))
}else if(getasynckeystate(vk_f2))
if(ps->_sleeptime >= 300)
}sleep(ps->_sleeptime);
snakemove(ps);
killbywall(ps);
killbyself(ps);
}while(ps->_status == ok);
}void gameend(psnake ps)
else if(ps->_status == kill_by_wall)
else if(ps->_status == kill_by_self)
while(cur)
ps->_psnake = null;
ps->_pfood = null;
}//.h標頭檔案
#ifndef __snake_h__
#define __snake_h__
#include
#include
#include
#include
#include
#define wall "★"
#define food "■"
#define init_x 20
#define init_y 10
typedef struct snakenode
snakenode,*psnakenode;
enum direction
;enum gamestatus
;typedef struct snake
snake,*psnake;
psnakenode buynode();
void createfood(psnake ps);
void gamerun(psnake ps);
void welcometogame();
void createmap();
void gamestart(psnake ps);
void initsnake(psnake ps);
void pause();
int nexthasfood(psnakenode pn,psnakenode pf);
void snakemove(psnake ps);
void gamerun(psnake ps);
void eatfood(psnake ps,psnakenode pn);
void notfood(psnake ps,psnakenode pn);
void killbywall(psnake ps);
void killbyself(psnake ps);
void printhelpinfo();
void gameend(psnake ps);
#endif //__snack_h__
//.c測試檔案
#include"snack.h"
void test()
;//建立貪吃蛇
srand ((unsigned int)time(null));
gamestart(&snake);
gamerun(&snake);
gameend(&snake);
system("pause");
}int main()
C語言實現貪吃蛇小遊戲
一 程式實現的原理 1 構造蛇身 定義乙個座標陣列,存放的是蛇的每一節蛇身所在的座標位置。這樣就將移動蛇身的操作轉換為移動陣列的操作,將吃食物增加蛇身體長度的操作轉換為在陣列後面追加元素的操作。2 移動效果 每次移動時,將每一節蛇身 蛇頭除外 依次往前移動一節,然後擦去蛇的最後一節,最後確定蛇頭的方...
C語言實現貪吃蛇小遊戲(詳解)
目錄 一 程式實現的原理 二 預備知識 1 控制台視窗 2 通過 將游標移動到控制台指定位置 三 程式框架 四 具體操作 1 定義相關標頭檔案 2 定義函式結構以及相關屬性 五 完成各 塊 1 實現將游標移到指定位置的操作 2 列印遊戲邊框以及遊戲初始畫面 3 編寫按鍵操作的 4 實現生成食物的 5...
C語言貪吃蛇小遊戲
整個 都是c語言,其中呼叫少部分庫函式,不如實現螢幕座標列印的函式,貪吃蛇遊戲 的核心在於蛇身體座標的更新,實現細節請看 注釋,include stdafx.h 如果是vc環境的話加上該標頭檔案 include include include include include define turnu...