C語言課程設計報告五子棋游戲課程設計
C語言課程設計報告_五子棋游戲-課程設計C語言課程設計報告_五子棋游戲|c語言程序代碼編程小程序設計|c語言課程設計報告課程案例**********************************************************//* 本程序在Turbo C或Borland C下編譯通過 *//* 文件名: afive.c 五子棋 *//**********************************************************/ /**********************************************************//* 程序中用到的庫函數所在頭文件應用 #include 命令包含進來 */#include #include #include #include #include /**********************************************************//* 定義符號常量 *//*定義畫棋盤所需的制表符*/#define CROSSRU 0 xbf /*右上角點*/#define CROSSLU 0 xda /*左上角點*/#define CROSSLD 0 xc0 /*左下角點*/#define CROSSRD 0 xd9 /*右下角點*/#define CROSSL 0 xc3 /*左邊*/#define CROSSR 0 xb4 /*右邊*/#define CROSSU 0 xc2 /*上邊*/#define CROSSD 0 xc1 /*下邊*/#define CROSS 0 xc5 /*十字交叉點*//*定義棋盤左上角點在屏幕上的位置*/#define MAPXOFT 5#define MAPYOFT 2/*定義1號玩家的操作鍵鍵碼*/#define PLAY1UP 0 x1157/*上移-- W */#define PLAY1DOWN 0 x1f53/*下移-- S */#define PLAY1LEFT 0 x1e41/*左移-- A */#define PLAY1RIGHT 0 x2044/*右移-- D */#define PLAY1DO 0 x3920/*落子--空格鍵*//*定義2號玩家的操作鍵鍵碼*/#define PLAY2UP 0 x4800/*上移-- 方向鍵up*/#define PLAY2DOWN 0 x5000/*下移--方向鍵down*/#define PLAY2LEFT 0 x4b00/*左移--方向鍵left*/#define PLAY2RIGHT 0 x4d00/*右移--方向鍵right*/#define PLAY2DO 0 x1c0d/*落子--回車鍵Enter*//*若想在游戲中途退出, 可按 Esc 鍵*/#define ESCAPE 0 x011b/*定義棋盤上交叉點的狀態, 即該點有無棋子 *//*若有棋子, 還應能指出是哪個玩家的棋子 */#define CHESSNULL 0 /*沒有棋子*/#define CHESS1 O /*一號玩家的棋子 */#define CHESS2 X /*二號玩家的棋子 *//*定義按鍵類別*/#define KEYEXIT 0/*退出鍵*/#define KEYFALLCHESS 1/*落子鍵*/#define KEYMOVECURSOR 2/*光標移動鍵*/#define KEYINVALID 3/*無效鍵*//*定義符號常量: 真, 假 --- 真為1, 假為0 */#define TRUE 1#define FALSE 0/**********************************************************//* 定義數據結構 *//*棋盤交叉點坐標的數據結構*/struct point{int x,y;};/**********************************************************//*自定義函數原型說明 */void Init(void);int GetKey(void);int CheckKey(int press);int ChangeOrder(void);int ChessGo(int Order,struct point Cursor);void DoError(void);void DoOK(void);void DoWin(int Order);void MoveCursor(int Order,int press);void DrawCross(int x,int y);void DrawMap(void);int JudgeWin(int Order,struct point Cursor);int JudgeWinLine(int Order,struct point Cursor,int direction);void ShowOrderMsg(int Order);void EndGame(void);/**********************************************************//**********************************************************//* 定義全局變量 */int gPlayOrder; /*指示當前行棋方 */struct point gCursor; /*光標在棋盤上的位置 */char gChessBoard[19][19];/*用于記錄棋盤上各點的狀 態*//**********************************************************//**********************************************************//*主函數*/void main(){int press;int bOutWhile=FALSE;/*退出循環標志*/Init();/*初始化 圖象,數據*/while(1){press=GetKey();/*獲取用 戶的按鍵值*/switch(CheckKey(p