您好,登錄后才能下訂單哦!
如何用C語(yǔ)言寫(xiě)一個(gè)控制臺(tái)版的2048,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
先說(shuō)說(shuō)所需要用到的頭文件:
#include <stdio.h>(不必多說(shuō))
#include <stdlib.h>(system等)
#include <string.h>(memset函數(shù),非常有用)
#include <conio.h>(要使用到_getch(void);)
程序內(nèi)經(jīng)常用到bool,但是C語(yǔ)言中沒(méi)有bool,因此需要定義一個(gè)類型bool:
typedef int bool;
#define true 1
#define false 0
定義圖像大小:
#define ROW 5
#define COL ROW
定義各類數(shù)據(jù):
空數(shù):int BOX_NONE = 0;
用于判斷某個(gè)位置是否有數(shù)字 : int g_iBox[ROW][COL];
保存游戲狀態(tài) :int game_state = 0;
應(yīng)注意事項(xiàng):
產(chǎn)生隨機(jī)位置的數(shù)字:
*p_i[rand() % count] = (1 + rand() % 2) * 2;
//產(chǎn)生隨機(jī)數(shù),rand() % count指的是隨機(jī)數(shù)/0數(shù)后的余數(shù),最終范圍變成【0到count-1】
//后者同理 范圍為 (1+[0,1])*2 = 2或4
//p_i已經(jīng)有那些0值的位置了
位置交換:
//交換兩個(gè)位置的值,一般是和0進(jìn)行交換
兩數(shù)字做加法:
//結(jié)合兩個(gè)數(shù),res是移動(dòng)的那個(gè)
顯示該游戲界面:
產(chǎn)生隨機(jī)位置的數(shù)字:
位置交換:
兩數(shù)字做加法:
最重要的是移動(dòng)函數(shù),移動(dòng)函數(shù)中應(yīng)該要注意每個(gè)位置的數(shù)字都要被操作,有數(shù)字的位置要和最邊際的為零的位置進(jìn)行交換。
詳見(jiàn)下面的整體代碼:
關(guān)于如何用C語(yǔ)言寫(xiě)一個(gè)控制臺(tái)版的2048問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。