發(fā)布時(shí)間:2024-07-29 16:27:21 瀏覽量:145次
《2048》是目前非常流行的數(shù)字游戲,它首次發(fā)布于github,原作者是Gabriele Cirulli。這款游戲是在《1024》和《小3傳奇》(Threes!)的基礎(chǔ)上開(kāi)發(fā)的全新數(shù)字游戲。
游戲的規(guī)則非常簡(jiǎn)單,你需要控制所有方塊朝同一個(gè)方向移動(dòng),相同數(shù)字的方塊碰撞后會(huì)合并為它們的和,每次操作后會(huì)在空白方塊處隨機(jī)生成2或4(生成2的概率更大),最終合成一個(gè)“2048”的方塊即可獲勝。
1、方塊移動(dòng)和合并算法
主要思想是將游戲面板抽象成4行4列的二維數(shù)組,值為0的位置表示空方塊,其他位置表示對(duì)應(yīng)的數(shù)字方塊。通過(guò)遍歷每一行,將移動(dòng)合并算法應(yīng)用到每一行,實(shí)現(xiàn)所有行的移動(dòng)合并算法。具體操作是,根據(jù)不同情況進(jìn)行數(shù)字方塊的移動(dòng)與合并。
2、判斷游戲是否結(jié)束算法
核心思想是遍歷二維數(shù)組,檢查是否存在橫向和縱向相鄰的兩個(gè)相同數(shù)字,若存在則游戲繼續(xù),否則游戲結(jié)束。
3、生成隨機(jī)數(shù)算法
核心思想是根據(jù)一定概率生成2或4的隨機(jī)數(shù),用于在游戲面板空格處生成數(shù)字。在本游戲中,設(shè)置生成2的概率是4的兩倍。
4、繪制界面的算法
繪制界面并不是游戲的核心,操作界面刷新效果,使用控制臺(tái)界面清屏功能,利用控制制表符位置實(shí)現(xiàn)游戲數(shù)字面板的繪制。
#include #include /* 包含設(shè)定隨機(jī)數(shù)種子所需要的time()函數(shù) */#include /* 包含Windows平臺(tái)上完成輸入字符不帶回顯和回車確認(rèn)的getch()函數(shù) */#include /* 包含Windows平臺(tái)上完成設(shè)定輸出光標(biāo)位置達(dá)到清屏功能的函數(shù) */void start_game(); /* 開(kāi)始游戲 */void reset_game(); /* 重置游戲 *//* 往左右上下四個(gè)方向移動(dòng) */void move_left();void move_right();void move_up();void move_down();void refresh_show(); /* 刷新界面顯示 */void add_rand_num(); /* 生成隨機(jī)數(shù),本程序中僅生成2或4,概率之比設(shè)為2:1 */void check_game_over(); /* 檢測(cè)是否輸?shù)粲螒颍O(shè)定游戲結(jié)束標(biāo)志 */int get_null_count(); /* 獲取游戲面板上空位置數(shù)量 */int board[4][4]; /* 游戲數(shù)字面板,抽象為二維數(shù)組 */int score; /* 游戲的分 */int best; /* 游戲最高分 */int if_need_add_num; /* 是否需要生成隨機(jī)數(shù)標(biāo)志,1表示需要,0表示不需要 */int if_game_over; /* 是否游戲結(jié)束標(biāo)志,1表示游戲結(jié)束,0表示正常 */int main(){start_game();}void start_game(){reset_game();char cmd;while (1){cmd = getch(); /* 接收標(biāo)準(zhǔn)輸入流字符命令 */if (if_game_over){if (cmd == 'y' || cmd == 'Y'){reset_game();continue;}else if (cmd == 'n' || cmd == 'N'){return;}else{continue;}}if_need_add_num = 0; /* 先設(shè)定默認(rèn)需要生成隨機(jī)數(shù),需要時(shí)再設(shè)定為1 */switch (cmd){case 'a':case 'A':case 75 :move_left();break;case 's':case 'S':case 80 :move_down();break;case 'w':case 'W':case 72 :move_up();break;case 'd':case 'D':case 77 :move_right();break;}score > best ? best = score : 1; /* 打破得分紀(jì)錄 */if (if_need_add_num){add_rand_num();refresh_show();}}}void reset_game(){score = 0;if_need_add_num = 1;if_game_over = 0;int n = rand() % 16;for (int i = 0; i 0){if (board[i][k] == board[i][j]){score += board[i][k++] = 0; j--){if (board[i][j] > 0){if (board[i][k] == board[i][j]){score += board[i][k--] 0){if (board[k][i] == board[j][i]){score += board[k++][i] = 0; j--){if (board[j][i] > 0){if (board[k][i] == board[j][i]){score += board[k--][i] >= 1;if (n == 1){printf("2^%02d│", k);break;}}}}else printf(" │");}if (i
效果示例:
希望大家能夠很好地利用所學(xué)知識(shí)完成本項(xiàng)目!
寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開(kāi)始!
編程學(xué)習(xí)書籍分享:
編程學(xué)習(xí)視頻分享:
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報(bào)名。
2. 手機(jī)游戲如何開(kāi)發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說(shuō)明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵?lái)試試!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛(ài)恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)畫軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫軟件或動(dòng)畫工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫的軟件程序。但是,在3D動(dòng)畫軟件中還包含了其他類型的...
7. 3D動(dòng)漫建模全過(guò)程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
8. 如何自己開(kāi)發(fā)一款游戲(游戲開(kāi)發(fā)入門必看:五大獨(dú)立游戲開(kāi)發(fā)技巧)
?游戲開(kāi)發(fā)入門必看:五大獨(dú)立游戲開(kāi)發(fā)技巧無(wú)論您是剛剛起步開(kāi)發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨(dú)立游戲開(kāi)發(fā)技巧都可以幫助您更好地設(shè)計(jì)下一款游戲。無(wú)論你對(duì)游戲有著什么樣的概念,都
9. 開(kāi)發(fā)三昧游戲叫什么(三昧動(dòng)漫)
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
最新文章
同學(xué)您好!