基于C语言的双人贪吃蛇游戏程序设计
生活随笔
收集整理的這篇文章主要介紹了
基于C语言的双人贪吃蛇游戏程序设计
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基于C語言的雙人貪吃蛇游戲程序設計
實現目標
制作一個兩個兩個人一起同時玩的雙人貪吃蛇游戲,有比分并記錄歷史成績
(1) 打開游戲時能夠自動播放背景音樂
(2) 開始菜單,顯示歷史用戶名及其對應的成績
(3) 開始菜單可以輸入兩人的用戶名
(4) P1 可以通過w,s,a,d來控制蛇1的移動
(5) P2 可以通過小鍵盤的“上,下,左,右”來控制蛇2的移動
(6) 食物在每次被吃后都會隨機出現在地圖
(7) 貪吃蛇吃到食物后長度會增加1
(8) 撞墻和撞到自己就會結束游戲,下一界面能夠輸出死因
(9) 隨著分數增加,蛇移動會越來越快
(10) 每一場的兩人的分數及用戶名都會被記錄
系統三大界面功能示意圖
函數功能設計
| welcome | 打印開始界面 |
| Finish | 打印結束界面,清空貪吃蛇結構占用的內存 |
| creatgraph | 打印圍墻 |
| gotoxy | 移動光標 |
| color | 設置顏色 |
| gotoprintboundary | 跳轉打印邊界 |
| gotoprintsnake | 打印貪吃蛇結構 |
| gotodelete | 跳轉刪除 |
| creatsnake | 初始化蛇 |
| creatfood | 產生食物 |
| ClickControl | 獲取鍵盤信號 |
| Judge | 判斷蛇是否死亡 |
| MovingBody | 控制蛇的移動 |
| Eating | 蛇吃到食物后的操作 |
| ChangeBody1 | 蛇1的坐標變換 |
| ChangeBody2 | 蛇2的坐標變換 |
| record | 文件操作記錄成績 |
| printrecord | 讀取文件,輸出成績 |
各函數調用關系如圖所示:
該程序中的數據結構與算法
-
數據結構
-
算法
函數流程圖舉例
- 蛇移動函數的流程圖:
- 判斷蛇是否死亡的流程圖:
部分結構的測試案例
左側提示輸入兩個人的用戶名,按空格確定。右側在第一次未創建成績文件是為空,不會輸出亂碼
兩位玩家的“wasd”、“上下左右”都可以成功控制方向
在輸出與蛇運動方向相反的按鍵時,蛇保持原來方向運動
食物被吃后自動再生成,蛇邊長,并且分數增加顯示在下面
蛇撞墻后死亡,顯示死因
蛇撞到自己后死亡,顯示死因。
在非第一次玩此游戲時,打開游戲會在右下角輸出歷史用戶及成績:
宏定義、頭文件、全局變量及調用函數
#include<stdio.h> #include<string.h> #include<windows.h> #include<time.h> #include<conio.h> #include <mmsystem.h> #pragma comment (lib, "winmm.lib")#define up 'w' #define down 's' #define left 'a' #define right 'd' /*地圖參數*/ #define height 26 #define wide 116void welcome(); // 開始界面 void Finish(int x); // 結束界面 void creatgraph(); // 圍墻打印 //*** void gotoxy(int x, int y); // 光標跳轉 void color(short x); void gotoprintboundary(int x, int y); // 跳轉打印邊界 void gotoprintsnake(int x, int y); //打印蛇 void gotodelete(int x, int y); // 跳轉刪除蛇 void creatsnake(); //*** void creatfood(); // 食物產生 int ClickControl(); // 獲取蛇1鍵盤信號 int Judge(); // 游戲結束判斷void MovingBody(); // 蛇的移動 void Eating(); // 蛇吃到東西后的操作(伸長) void ChangeBody(int x, int y); // 蛇的坐標變換 void ChangeBody2(int x, int y); void record(); //文件操作記錄成績 int printrecord(); //讀取文件,打印成績//蛇結構體 typedef struct Snakes {int x;int y;struct Snakes* next; } snake;snake* head; snake* head2; // 申明并定義食物 struct Food {int x;int y; } food; //用戶數據 typedef struct {char name[10];int score; } Rank;Rank rank[2];char click = 1; // 記錄敲下的鍵盤按鍵 char foreclick = 1;//鍵盤按鍵的歷史記錄值 char foreclick2 = 1; char click2 = 1; int speed; // 延遲的毫秒數源代碼下載
下載鏈接如下:
https://download.csdn.net/download/qq_25591221/14504516
總結
以上是生活随笔為你收集整理的基于C语言的双人贪吃蛇游戏程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 极客时间 算法训练营 毕业总结
- 下一篇: 磁盘分区MBR和GPT格式详解(Linu