一:準備前奏
敲**之前要有簡單的思路,這裡我寫了乙個簡單的思維導圖。
二:學習了解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來做蛇身體和地圖 障礙物 的繪製。都...