C語言實現2048小遊戲

2022-06-13 21:30:12 字數 2140 閱讀 3144

**參考:100 行**擼了乙個 2048 的小遊戲

規則就是 2084 遊戲的規則

j - 左

k - 下

l - 右

i - 上

相同數字移動過程中會合併

這裡我把按鍵修改成了方向鍵,並加了些注釋幫助理解

#include#include

#include

#define game_size 4

static

void left(int *data)

else}}

while (j < game_size) data[j++] = 0;//

填充剩餘格

data += game_size;//

位址偏移4格 }}

static

void right(int *data)

else}}

while (j >= 0) data[j--] = 0

; data +=game_size;

}}static

void up(int *data)

else}}

while (j < game_size) data[(j++)*game_size] = 0

; data++;

}}static

void down(int *data)

else}}

while (j >= 0) data[(j--)*game_size] = 0

; data++;

}}static

int next(int *data)

max = max > data[i] ? max : data[i];//

保留最大值判斷是否遊戲已結束

}

if(empnum)

else

return -1;}

static

void output(int *data)

else

sum+=data[i-1

]; }

printf(

"+--------------------+\n\n");

printf(

"分數:%d\n\n

", sum);

}int

main();

int ret = 0

;

next(data);

next(data);

output(data);

while(1

) ret =next(data);

output(data);

if (ret == -1) printf("

game over !\n");

if (ret == 1) printf("

you win !\n");}}

我的測試環境為 dev-c++ 5.11,親測有效,如果使用linux 下 gcc 編譯,需要解決 getch 問題,具體參考原部落格

演算法主要就是 left right up down 四個函式,這裡給出 left 函式的前兩位**

準確的說,i 代表當前遍歷格位址, j代表當前填充格位址(如果合併填充j-1格),f為合併標誌位(每一行(列)只能合併一次)

上、下、左、右鍵是二個位元組的,getch()唯讀乙個位元組,asc碼

想要用getch()得到上、下、左、右鍵的話,要呼叫二次getch():

可參考部落格:c語言使用getch()讀取方向鍵

getch函式在讀取乙個功能鍵或者箭頭(方向)鍵盤時,函式會返回兩次,第一次呼叫返回0或者0xe0,第二次呼叫返回實際的鍵值,所以使用兩次getch()即可。

C語言實現的2048小遊戲

給大一新生寫的乙個小遊戲。缺點 函式名稱和功能略微不對應,函式功能寫得比較亂,時間記錄有誤差,可擴充套件性弱。優點 通過幾個配置陣列,將單位方塊移動的函式縮短到30行以內。include include include include include 座標常量 const int squaresiz...

c語言小遊戲 精簡 C語言實現簡易2048小遊戲

一直很喜歡玩這個小遊戲,簡單的遊戲中包含運氣與思考與策略,喜歡這種簡約又不失內涵的遊戲風格。於是萌生了用c語言實現一下的想法。博主分析的都很到位,很多演算法技巧都值得借鑑,c語言實現2048的主要思想已經在那個部落格中詳細的分析了,但是我覺得在博主的 中還是有很多很好的思想是值得我借鑑學習的。比如這...

C 實現2048小遊戲

1 define crt secure no warnings 去掉編譯器內部擴增問題 2 include3 include4 include5 include 6 include7 include8 include 9 include10 include11 include12 using nam...