專案1 C語言實現貪吃蛇小遊戲

2021-08-30 06:39:53 字數 3556 閱讀 2144

實現這個小遊戲我們可以分為以下幾步:

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...