C 實現2048小遊戲

2022-05-15 18:38:48 字數 4467 閱讀 2328

1

#define _crt_secure_no_warnings//

去掉編譯器內部擴增問題

2 #include3 #include4 #include5 #include//

6 #include7 #include8 #include

9 #include10 #include11 #include12

using

namespace

std;

1314

namespace15;

19bool isover = true;20

bool gameover = false;21

enum

direction22;

25};

2627

void setimageindex();//

設定編號

28void

loadresource();

29void

drawmap();

30void

randintnum();

31void

keydownanddraw();

32bool turnleft(int s[4][4

]);33

void

changeonkeydown(direction direction);

3435

3637

intmain()

3849

void

setimageindex()

5056}57

void loadresource()//

載入5865}

6667

//畫地圖

68void

drawmap()

6978 getline(iscore, out

);79

char score[10

];80

char highlyscore[100

];81

int sum=0

;82 setbkcolor(rgb(244, 215, 215

));83

cleardevice();

84 settextcolor(white);//

設定文字顏色

85 settextstyle(35, 0, "

楷體");//

設定文字格式

86 outtextxy(50, 10, "

2048遊戲");

87 settextcolor(yellow);//

設定文字顏色

88 settextstyle(25, 0, "

楷體");//

設定文字格式

89for (int i = 0; i < 4; i++)//

計算分數

9097}98

}99 sprintf(score, "

分數:%d

", sum);

100 outtextxy(10, 300

,score);

101for (int i = 0; i < out.length(); i++)

102105

stringstream mid;

106 mid << out

;107 mid >>histryhighlyscore;

108if (histryhighlyscore>sum)

109116

else

117128

iscore.close();

129//

根據二維陣列去畫圖

130int

x, y, k;

131for (int i = 0; i < 4; i++)

132143

}144 putimage(x,y,image+k);

145}

146}

147 isover = true

;148

}149

150//

隨機產生2或者4;

151void

randintnum()

152168 isok = true

;169

break

;170

}171

}172

if(isok)

173176

}177

if (!isok)

178192

}193

if(isok)

194197

}198

}199

}200

for (int i = 0; i < 4; i++)//

檢測最後一步是否留有空位,若全滿遊戲結束

201209

}210

}211

for (int i = 0; i < 4; i++)//

遊戲失敗則重置

212220 map[i][j] = 0

;221

}222

}223

drawmap();

224}

225226

//按鍵響應

227void

keydownanddraw()

228261

}262

}263

}264

void

changeonkeydown(direction direction)

265;

267bool

canmove;

268switch (direction)//

將所有方向改為向左方向,並利用向左演算法計算各個方向

269277

}278

break

;279

case

down:

280for (int i = 0; i < 4; i++)

281286

}287

break

;288

case

left:

289for (int i = 0; i < 4; i++)

290295

}296

break

;297

case

right:

298for (int i = 0; i < 4; i++)

299304

}305

break

;306

default

:307

break

;308

}309

//向左演算法

310 canmove=turnleft(map);

311//

將向左改回各自方向

312switch

(direction)

313321

}322

break

;323

case

down:

324for (int i = 0; i < 4; i++)

325330

}331

break

;332

case

left:

333for (int i = 0; i < 4; i++)

334339

}340

break

;341

case

right:

342for (int i = 0; i < 4; i++)

343348

}349

break

;350

default

:351

break

;352

}353

if(canmove)

354358

else

359362

};363

//演算法

364bool turnleft(int map[4][4])//

按向左鍵進行合併

365378

}379

for (int i = 0; i < 4; i++)

380389

for (k = j+1; k < 4; k++)

390398

break

;399

}400

}401

}402

for (int j = 0; j < 4; j++)

403409

}410

for (int j = 0; j < 4; j++)

411416

else

417420

}421

}422

for (int i = 0; i < 4; i++)

423;

430}

431}

432return

canmove;

433 }

C 自實現2048小遊戲

include include using namespace std const int n 5 地圖為4 4 int map n n 存圖 inline void generate rand 在隨機位置產生2或4 map x y rand 2?2 4 inline void build star...

js實現2048小遊戲

頁面class hidden id end id endspan id table colspan 4 id s1 id s2 id s3 id s4 id s5 id s6 id s7 id s8 id s9 id s10 id s11 id s12 id s13 id s14 id s15 id...

JavaScript實現2048小遊戲

首先要明白該遊戲怎麼玩,即 在 4 4 的16宮格中,您可以選擇上 下 左 右四個方向進行操作,數字會按方向移動,相鄰的兩個數字相同就會合併,組成更大的數字,每次移動或合併後會自動增加乙個數字。當16宮格中沒有空格子,且四個方向都無法操作時,遊戲結束。這部分是通過類名emptyitem及nonemp...