日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C语言项目】贪吃蛇游戏(上)

發布時間:2024/4/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言项目】贪吃蛇游戏(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 開發背景
    • 02. 功能介紹
    • 03. 歡迎界面設計
      • 3.1 常用終端控制函數
      • 3.2 設置文本顏色函數
      • 3.3 設置光標位置函數
      • 3.4 繪制字符畫(蛇)
      • 3.5 歡迎界面函數
    • 04. 游戲幫助界面設計
    • 05. 退出游戲實現
    • 06. 附錄

01. 開發背景

? 貪吃蛇起源于西方,來自于蛇騙夏娃和亞當偷吃禁果的神話。人們為了說明蛇的一個“貪”字,開發出了貪吃蛇游戲。本公開課使用C語言開發一個貪吃蛇游戲。

? 貪吃蛇最初為人們所知的是諾基亞手機附帶的一個小游戲,它伴隨著諾基亞手機走向世界。現在的貪吃蛇出現了許多衍生版本,并被移植到各種平臺上。

通過本案例的學習,大家可以學到:

  • Visual Studio 2017開發環境

  • C語言中的三大結構和函數

  • C語言中動態內存申請和釋放

  • C語言中文件基本操作

  • C語言中的簡單單向鏈表

  • 控制終端基本設置和監聽按鍵

  • C語言簡單游戲開發流程

  • C語言簡單游戲開發調試技巧

02. 功能介紹

? 貪吃蛇的游戲規則也很簡單,具體為:蛇出現在封閉的空間中,同時在地圖上會隨機出現食物,玩家通過鍵盤上的上下左右方向鍵來控制蛇的前進方向。蛇頭撞到食物,則食物消失,表示被蛇吃掉了,蛇身增加一節,增加玩家的得分。接著又隨機出現一個食物,等待蛇來吃。如果蛇在前進的過程中撞到墻或者咬到蛇身或者玩家按下ESC鍵,則游戲退出。

項目演示

03. 歡迎界面設計

歡迎界面如下

3.1 常用終端控制函數

SetConsoleTextAttribute函數介紹

BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput,WORD wAttributes); 功能:設置控制臺文本屬性(顏色),可以設置前景色FOREGROUND(文本顏色)和背景色BACKGROUND

SetConsoleTextAttribute官方文檔介紹

參考示例:

HANDLE hOut;hOut = GetStdHandle(STD_OUTPUT_HANDLE); /* 獲取標注輸出句柄 */ SetConsoleTextAttribute(hOut, FOREGROUND_BLUE); /* 設置控制臺顏色,前景色為藍色*/ SetConsoleTextAttribute(hOut, BACKGROUND_RED); /* 背景色為紅色 */

SetConsoleCursorPosition函數介紹

BOOL SetConsoleCursorPosition(HANDLE hConsoleOutput, COORD dwCursorPosition); 功能:設置控制臺光標坐標

SetConsoleCursorPosition官方文檔介紹

參考示例:

COORD pos = {x, y};/* x是橫坐標 y是縱坐標 */ HANDLE hOut;hOut = GetStdHandle(STD_OUTPUT_HANDLE); /* 獲取標注輸出句柄 */ SetConsoleCursorPosition(hOut,pos); /* 設置控制臺光標坐標(設備句柄, 光標坐標) */

3.2 設置文本顏色函數

//設置終端字體顏色 int setColor(int c) {//GetStdHandle: 獲取指定的標準設備的句柄//STD_OUTPUT_HANDLE 標準輸出句柄//c 顏色值SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);return 0; }

十進制顏色對照表

3.3 設置光標位置函數

//設置光標的坐標 int gotoXY(int x, int y) {COORD c;//設置橫坐標c.X = x;//設置縱坐標c.Y = y;//設置光標的位置SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);return 0; }

3.4 繪制字符畫(蛇)

參考代碼:

//繪制字符畫 --蛇 int printSnake(void) {//清屏system("cls");gotoXY(35, 1);setColor(6);printf("/^\\/^\\"); //蛇眼睛gotoXY(34, 2);printf("|__| O|"); //蛇眼睛gotoXY(33, 2);setColor(2);printf("_");gotoXY(25, 3);setColor(12);printf("\\/"); //蛇信gotoXY(31, 3);setColor(2);printf("/");gotoXY(37, 3);setColor(6);printf(" \\_/"); //蛇眼睛gotoXY(41, 3);setColor(10);printf(" \\");gotoXY(26, 4);setColor(12);printf("\\____"); //舌頭gotoXY(32, 4);printf("_________/");gotoXY(31, 4);setColor(2);printf("|");gotoXY(43, 4);setColor(10);printf("\\");gotoXY(32, 5);setColor(2);printf("\\_______"); //蛇嘴gotoXY(44, 5);setColor(10);printf("\\");gotoXY(39, 6);printf("| | \\"); //下面都是畫蛇身gotoXY(38, 7);printf("/ / \\");gotoXY(37, 8);printf("/ / \\ \\");gotoXY(35, 9);printf("/ / \\ \\");gotoXY(34, 10);printf("/ / \\ \\");gotoXY(33, 11);printf("/ / _----_ \\ \\");gotoXY(32, 12);printf("/ / _-~ ~-_ | |");gotoXY(31, 13);printf("( ( _-~ _--_ ~-_ _/ |");gotoXY(32, 14);printf("\\ ~-____-~ _-~ ~-_ ~-_-~ /");gotoXY(33, 15);printf("~-_ _-~ ~-_ _-~");gotoXY(35, 16);printf("~--______-~ ~-___-~");return 0; }

測試代碼如下:

int main() {//設置控制臺的寬高system("mode con cols=100 lines=30");printSnake();system("pause");return 0; }

測試效果如下:

3.5 歡迎界面函數

界面設計分析

參考代碼:

//歡迎界面 int welcomGame(void) {int i;int j;int n = 0;//繪制字符畫蛇printSnake();//輸出文字setColor(11);gotoXY(45, 18);printf("貪吃蛇游戲");setColor(14);//邊框范圍20--26行 27--74列for (i = 20; i <= 26; i++){for (j = 27; j <= 74; j++){gotoXY(j, i);if (i == 20 || i == 26){printf("-");}else if (j == 27 || j == 74){printf("|");}}}setColor(12);gotoXY(35, 22);printf("1. 開始游戲");gotoXY(55, 22);printf("2. 游戲說明");gotoXY(35, 24);printf("3. 退出游戲");gotoXY(27, 27);printf("請選擇[1 2 3]: ");scanf("%d", &n);//清空換行符getchar();return n; }

主函數參考代碼如下:

int main() {int choice;//設置控制臺的寬高system("mode con cols=100 lines=30");while (1){choice = welcomGame();switch (choice){//開始游戲case 1:printf("開始游戲");break;//游戲說明case 2:printf("游戲說明");break;//退出游戲case 3:break;default:setColor(12);gotoXY(45, 28);printf("請做出有效選擇[1~3]");//輸入任意鍵getchar();}}system("pause");return 0; }

04. 游戲幫助界面設計

游戲說明模塊如下:

游戲幫助界面參考代碼

//游戲幫助界面 int aboutGame(void) {int i = 0;int j = 0;//清屏system("cls");setColor(13);gotoXY(44, 3);printf("游戲說明");setColor(2);//畫出邊框//6~22行 20~75列for (i = 6; i <= 22; i++){for (j = 20; j <= 75; j++){gotoXY(j, i);//畫上下邊框if (i == 6 || i == 22){printf("=");}else if (j == 20 || j == 75){printf("||");}}}setColor(3);gotoXY(30, 8);printf("★ 1.不能撞到墻壁,不能咬到自己");setColor(5);gotoXY(30, 11);printf("★ 2.F1加速前進,F2減速前進");setColor(11);gotoXY(30, 14);printf("★ 3.使用空格暫停游戲和繼續游戲");setColor(13);gotoXY(30, 17);printf("★ 4.使用方向鍵控制前進的方向");setColor(14);gotoXY(30, 20);printf("★ 5.按下ESC鍵退出游戲");setColor(12);gotoXY(22, 24);printf("按下回車鍵返回主界面...");getchar();return 0; }

主函數代碼修改如下:

int main() {int choice;//設置控制臺的寬高system("mode con cols=100 lines=30");while (1){choice = welcomGame();switch (choice){//開始游戲case 1:printf("開始游戲");break;//游戲說明case 2:aboutGame();break;//退出游戲case 3:break;default:setColor(12);gotoXY(45, 28);printf("請做出有效選擇[1~3]");//輸入任意鍵getchar();}}system("pause");return 0; }

05. 退出游戲實現

在主菜單中, 當用戶選擇3的時候,直接退出游戲

在主函數case 3中添加如下代碼:

//退出游戲 case 3:exit(0);break;

06. 附錄

下一篇:【C語言項目】貪吃蛇游戲(下)

大學生C/C++開發QQ交流群

總結

以上是生活随笔為你收集整理的【C语言项目】贪吃蛇游戏(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。