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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言实现最简单的2048小游戏

發布時間:2025/4/16 编程问答 101 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言实现最简单的2048小游戏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網上解釋很多了,直接上代碼吧,這個功能很簡單,易于學習,后期有時間會完善功能

#include<stdio.h> #include<stdlib.h> #include<string.h>#define Key_Up 0x4800 // 向上方向鍵    #define Key_Down 0x5000 // 向下方向鍵 #define Key_Right 0x4d00 // 向右方向鍵 #define Key_Left 0x4b00 // 向左方向鍵int map[4][4] = { 0 }; int check[4] = { 0 }; //判斷游戲是否結束,如果都不為0,游戲結束 int i, j;// //顯示在屏幕上 // void print() {for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){printf("%d\t", map[i][j]);}printf("\n");} }// //向右移動 // int moveRight() {int flag = 0; //來標記是否整個map矩陣能否改變,以此判斷整個游戲是否結束//這個循環的目的是為了做某一行的加減,如某一行為[2 2 4 4],經過以下運算就會變為[0 4 0 8];for (i = 0; i < 4; i++){for (j = 4 - 1; j >= 0; j--){int cell = map[i][j];if (cell != 0){int k = j - 1;while (k >= 0){int nextcell = map[i][k];if (nextcell != 0){if (cell == nextcell){flag = 1;map[i][j] += map[i][k];map[i][k] = 0;}k = -1;break;}k--;}}}}//上一步做的是數據加減,這一步對加減后的數據做數據處理//例如某一行經過上一步的數據為【0 4 0 8】,將會變為【0 0 4 8】for (i = 0; i < 4; i++){for (j = 4 - 1; j > 0; j--){int cell = map[i][j];if (cell == 0){int k = j - 1;while (k >= 0){int nextcell = map[i][k];if (nextcell != 0){flag = 1;//當前元素為0,說明能移動,改變flag的值map[i][j] = nextcell;map[i][k] = 0;k = -1;}k--;}}}}if (flag)return 0;elsereturn 4; //游戲結束 }// //向左移動 // int moveLeft() {int flag=0;for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){int cell = map[i][j];//cell單詞用的不太恰當,表示當前元素,你可以采用更有意義的命名if (cell != 0){int k = j + 1;while (k < 4){int nextcell = map[i][k];if (nextcell != 0){if (cell == nextcell){flag = 1;//相鄰兩個元素相同,就說明能移動,所以改變flag的值map[i][j] += map[i][k];map[i][k] = 0;}k = 4;break;}k++;}}}}//修改部分:for循環中的i或者j的循環條件for (i = 0; i < 4; i++){for (j = 0; j < 4 - 1; j++){int cell = map[i][j];if (cell == 0){int k = j + 1;while (k < 4){int nextcell = map[i][k];if (nextcell != 0){flag = 1;map[i][j] = nextcell;map[i][k] = 0;k = 4;}k++;}}}}if (flag)return 0;elsereturn 3; }// //向下移動 // int moveDown() {int flag=0;for (i = 4 - 1; i >= 0; i--){for (j = 0; j < 4; j++){int cell = map[i][j];if (cell != 0){int k = i - 1;while (k >= 0){int nextcell = map[k][j];if (nextcell != 0){if (map[i][j] == map[k][j]){flag = 1;map[i][j] += map[k][j];map[k][j] = 0;}k = 0;break;}k--;}}}}//修改部分:for循環中的i或者j的循環條件for (i = 4 - 1; i > 0; i--){for (j = 0; j < 4; j++){int cell = map[i][j];if (cell == 0){int k = i - 1;while (k >= 0){int nextcell = map[k][j];if (nextcell != 0){flag = 1;map[i][j] = nextcell;map[k][j] = 0;k = 0;}k--;}}}}if (flag)return 0;elsereturn 2; }// //向上移動 // int moveUp() {int flag=0;for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){int cell = map[i][j];if (cell != 0){int k = i + 1;while (k < 4){int nextcell = map[k][j];if (nextcell != 0){if (cell == nextcell){flag = 1;map[i][j] += map[k][j];map[k][j] = 0;}k = 4;break;}k++;}}}}//修改部分:for循環中的i或者j的循環條件for (i = 0; i < 4 - 1; i++){for (j = 0; j < 4; j++){int cell = map[i][j];if (cell == 0){int k = i + 1;while (k < 4){int nextcell = map[k][j];if (nextcell != 0){flag = 1;map[i][j] = nextcell;map[k][j] = 0;k = 4;}k++;}}}}if (flag==0)return 0;elsereturn 1; }// //隨機生成在空格上生成2或者4,并且判斷是否游戲結束 // int randInteger() //有缺陷,【0 0 0 0】 {for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){if (map[i][j] == 0){map[i][j] = (rand() % 2 + 1) * 2; //return 0;}}}return 0; }int main() {print();char key;while (1){printf("上:w;下:s;左:a;右:d;退出:q\n");printf("請輸入要執行的操作:");scanf("%c", &key);switch (key){case 'w':{randInteger();moveUp();printf(" 向上方向鍵被按下\n");print();break;}case 's':{randInteger();moveDown();printf(" 向下方向鍵被按下\n");print();break;}case 'a':{randInteger();moveLeft();printf(" 向左方向鍵被按下\n");print();break;}case 'd':{randInteger();moveRight();printf(" 向右方向鍵被按下\n");print();break;}case 'q':return 0;}}return 0; }

?

總結

以上是生活随笔為你收集整理的C语言实现最简单的2048小游戏的全部內容,希望文章能夠幫你解決所遇到的問題。

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