貪吃蛇專案之遊戲控制面板的實現

2021-08-15 13:42:32 字數 4169 閱讀 1163

一:準備前奏

敲**之前要有簡單的思路,這裡我寫了乙個簡單的思維導圖。

二:學習了解windows api

之所以要學習這塊,因為我們要在win32控制台完成這款小遊戲,需要控制視窗和游標的位置。實現必要的元件如分數、遊戲開始等。下面附上api的標頭檔案和api的實現檔案。

windows apihelper定義檔案:

/*

windows api 幫助標頭檔案

windows api 幫助標頭檔案

created by asus on 2018/2/6.

讓我感謝你 贈我空歡喜 by 琳小呆

此版僅供學習參考

*/#ifndef snake_winapihelper_h

#define snake_winapihelper_h

#include/*建立視窗標題*/

void settitle(char * title);

/* *設定窗體大小

* 長和寬

*/void setwinsize(int width,int height);

/* *設定控制台中游標的位置

* x 座標

* y 座標

*/void setcursorposition(int x,int y);

/* * 設定窗體中文字的顏色

*/void setcolor(int color);

/* * 定義橫線

* x 座標

* y 座標

* 顏色

* 繪製字元

* 繪製長度

*/void drawhline(int x,int y,int color,char letter,int len);

/* * 定義豎線

* x 座標

* y 座標

* 顏色

* 繪製字元

* 繪製長度

*/void drawvline(int x,int y,int color,char letter,int len);

/* *要列印出來的文字

* 文字的長度

*/void printtext(char *txt,int size);

/* * 字元填充

* */

void filltext(int x,int y,int color,int letter,int width,int height);

/* * 讀取乙個字元

*/char readchar();

#endif //snake_winapihelper_h

windows apihelper幫助實現檔案:

/*

windows api 幫助實現檔案

created by asus on 2018/2/6.

讓我感謝你 贈我空歡喜 by 琳小呆

此版僅供學習參考

*/#include#include #include#include"winapihelper.h"

/* * 定乙個全域性變數表示窗體的控制代碼

*/handle set_win_handle = 0;

/* *獲得標準的輸出的控制代碼

*/void setwinhandle()}/*

* 設定視窗的名字

*/void settitle(char *title)

/* * 這裡要設定視窗大小 這裡需要引入setwindowinfo 實現 還需要一些窗體的控制代碼

*/void setwinsize(int width, int height) ; //視窗的大小 起點-終點

coord coord=; //緩衝區的區域

setwinhandle();

setconsolescreenbuffersize(set_win_handle,coord); //設定緩衝區

setconsolewindowinfo(set_win_handle,true,&rect); //設定窗體的大小

}

void setcursorposition(int x, int y) ;

setwinhandle();

setconsolecursorposition(set_win_handle,pos);

}void setcolor(int color)

void drawhline(int x, int y, int color, char letter, int len) panel;

/** *面板的初始化函式

* @return

*/ panel *panelinit();

/** * 面板繪製函式

* @param panel 需要繪製的面板

*/void drawpanel(panel * panel);

/** *基本的展示元件

*/typedef struct best_text_viewtextview;

/** * 展示元件的繪製函式

* @param panel

* @param views

* @param len

*/void drawviews(panel*panel,textview*views,int len);

#endif //snake_panel_h

基礎面板的實現檔案:

/*

基本面板的實現檔案

created by asus on 2018/2/6.

讓我感謝你 贈我空歡喜 by 琳小呆

此版僅供學習參考

*/#include"panel.h"

/** * 面板初始化

* @return

*/panel *panelinit()

/** * 面板的繪製

* @param panel

*/void drawpanel(panel *panel)

void drawviews(panel *panel, textview *views, int len)

}

現在基本面板已經完成,來完成面板的控制。

控制面板的標頭檔案:

/*

* 基礎面板的標頭檔案

created by asus on 2018/2/10.

讓我感謝你 贈我空歡喜 by 琳小呆

此版僅供學習參考

*/#ifndef snake_controlpanel_h

#define snake_controlpanel_h

#include "panel.h"

/** * 宣告控制面板的繪製函式

*/void drawcontrolpanel();

#endif //snake_controlpanel_h

控制面板的實現檔案:

/*

控制面板的實現檔案

created by asus on 2018/2/10.

讓我感謝你 贈我空歡喜 by 琳小呆

此版僅供學習參考

*/#include"controlpanel.h"

panel * control_panel =null;

/** * 在控制面板中所要展示的檔案

*/textview control_view=,,,

,};/**

* 基礎面板的實現

*/void drawcontrolpanel()

drawpanel(control_panel);

int view_len= sizeof(control_view)/ sizeof(textview);

drawviews(control_panel,control_view,view_len);

}

四:效果實現

五:結語

人生如之如初見,​​何事秋風悲畫扇----納蘭性德

C語言控制面板貪吃蛇

第一次用c語言寫貪吃蛇 include include include include include define n 27 邊長 2個單位存放邊界 define m 52 define circle 1 主迴圈 define l 1250 void init map char map m voi...

C 實現貪吃蛇遊戲

一,專案簡介 距上個專案 c 實現推箱子遊戲 一周時間,再次回顧兒時經典遊戲 貪吃蛇。實現了按鍵控制蛇頭移動,按下空格鍵暫停,採用鍊錶結構實現吃到食物蛇身增長,到達一定限度,蛇頭前進速率加快 撞到牆壁或蛇身,遊戲結束。如有問題,希望大佬指導糾錯。二,區 game.h define snake h i...

C 實現貪吃蛇遊戲

記得初學程式設計時,學習的第乙個遊戲就是貪吃蛇遊戲,礙於技術有限,只能在一旁欣賞大神的 很疑惑是怎麼做到控制蛇的移動和吃食物的,而且別人的程式思路也不是那麼容易弄懂的,直到今天也是略知一二,且容我在程式說明中細細道來。首先,蛇必須有身體,這裡依然用的是easy x來做蛇身體和地圖 障礙物 的繪製。都...