-
个人简介
#include <iostream> #include <vector> #include <cstdlib> #include <ctime> #include <conio.h> // Windows专用 using namespace std; const int SIZE = 4; int score = 0; vector<vector<int>> board(SIZE, vector<int>(SIZE, 0)); void initBoard() { // 随机生成两个初始数字 srand(time(0)); int x1 = rand() % SIZE, y1 = rand() % SIZE; int x2, y2; do { x2 = rand() % SIZE; y2 = rand() % SIZE; } while(x1 == x2 && y1 == y2); board[x1][y1] = (rand() % 2 + 1) * 2; board[x2][y2] = (rand() % 2 + 1) * 2; } void printBoard() { system("cls"); cout << "2048游戏 - 分数: " << score << endl << endl; for(int i = 0; i < SIZE; i++) { for(int j = 0; j < SIZE; j++) { if(board[i][j] == 0) cout << "."; else cout << board[i][j]; cout << "\t"; } cout << endl << endl; } cout << "WASD或方向键移动,Q退出" << endl; } bool addRandomTile() { vector<pair<int, int>> emptyCells; for(int i = 0; i < SIZE; i++) { for(int j = 0; j < SIZE; j++) { if(board[i][j] == 0) { emptyCells.emplace_back(i, j); } } } if(emptyCells.empty()) return false; int idx = rand() % emptyCells.size(); int value = (rand() % 10 == 0) ? 4 : 2; board[emptyCells[idx].first][emptyCells[idx].second] = value; return true; } bool moveTiles(int dir) { bool moved = false; // 0:上, 1:右, 2:下, 3:左 for(int k = 0; k < SIZE; k++) { vector<int> line; for(int l = 0; l < SIZE; l++) { int i = (dir == 0) ? l : ((dir == 2) ? SIZE-1-l : k); int j = (dir == 3) ? l : ((dir == 1) ? SIZE-1-l : k); if(board[i][j] != 0) line.push_back(board[i][j]); } // 合并相同数字 for(int l = 0; l < (int)line.size()-1; l++) { if(line[l] == line[l+1]) { line[l] *= 2; score += line[l]; line.erase(line.begin()+l+1); moved = true; } } // 填充剩余位置 while(line.size() < SIZE) line.push_back(0); // 写回board for(int l = 0; l < SIZE; l++) { int i = (dir == 0) ? l : ((dir == 2) ? SIZE-1-l : k); int j = (dir == 3) ? l : ((dir == 1) ? SIZE-1-l : k); if(board[i][j] != line[l]) moved = true; board[i][j] = line[l]; } } return moved; } bool isGameOver() { // 检查是否有空格 for(int i = 0; i < SIZE; i++) { for(int j = 0; j < SIZE; j++) { if(board[i][j] == 0) return false; } } // 检查是否有可合并的相邻格子 for(int i = 0; i < SIZE; i++) { for(int j = 0; j < SIZE; j++) { if((i < SIZE-1 && board[i][j] == board[i+1][j]) || (j < SIZE-1 && board[i][j] == board[i][j+1])) { return false; } } } return true; } int main() { initBoard(); printBoard(); while(true) { int key = _getch(); if(key == 0 || key == 224) { // 方向键 key = _getch(); } int dir = -1; switch(tolower(key)) { case 'w': case 72: dir = 0; break; // 上 case 'd': case 77: dir = 1; break; // 右 case 's': case 80: dir = 2; break; // 下 case 'a': case 75: dir = 3; break; // 左 case 'q': return 0; default: continue; } if(moveTiles(dir)) { addRandomTile(); printBoard(); if(isGameOver()) { cout << "游戏结束! 最终分数: " << score << endl; break; } } } return 0; }
-
通过的题目
- A1000
- A1001
- O1004
- O1005
- O1003
- O1007
- O1001
- O1037
- O1629
- O1516
- O1050
- O1045
- O1157
- O1006
- O1032
- O1632
- O1634
- O1033
- O1213
- O1253
- O1036
- O1018
- O1024
- O1128
- O1049
- O1048
- O1043
- O1496
- O1498
- O1199
- O1202
- O1852
- O1366
- O1859
- O1150
- O1425
- O1656
- O1156
- O1154
- O1862
- O1863
- O1310
- O1311
- O1312
- O1405
- O1379
- O1009
- O1038
- O1666
- O1215
- O1383
- O1170
- O1160
- O1028
- O1014
- O1013
- O1021
- O1011
- O1010
- O1022
- O1019
- O1030
- O1031
- O1035
- O1039
- O1041
- O1040
- O1042
- O1684
- O1685
- O1686
- O1687
- O1688
- O1689
- O1690
- O1691
- O1692
- O1693
- O1052
- O1053
- O1054
- O1056
- O1057
- O1047
- O1097
- O1098
- O1099
- O1713
- O1051
- O1055
- O1100
- O1714
- O1715
- O1883
- O1278
- O1002
- O1130
- O1132
- O1716
- O1382
- O1222
- O1591
- O1385
- O1012
- O1017
- O1380
- O1146
- O1147
- O1158
- O1313
- O1046
- O1044
- O1008
- O1381
- O1027
- O1015
- O1016
- O1023
- O1025
- O1026
- O1029
- O1413
- O1384
- O1210
- O1034
- A1003
- D2001O
- D2034O
- D2145O
- D2142O
- D2141O
- D2143O
- D2144O
- D2157O
- D2051O
- B5087O
- B5090O
- B5092O
- B5091O
- D2133O
- B5107O
- D2132O
- D2131O
- D2074O
- B5083O
- B5080O
- D2052O
- D2053O
- B5084O
- B5002O
- B5003O
- B5007O
- D2158O
- O1790
- O1807
- O1808
- O1821
- D2040O
- O1828
- O1829
- B5081O
- B5088O
- B5102O
- B5103O
- D2002O
- D2003O
- D2004O
- D2005O
- D2006O
- D2008O
- D2010O
- D2020O
- D2022O
- D2023O
- D2024O
- D2025O
- D2027O
- D2028O
- A1005
- D2031O
- D2036O
- D2037O
- D2038O
- D2039O
- D2042O
- D2043O
- D2044O
- D2047O
- D2045O
- D2046O
- D2049O
- D2057O
- D2126O
- D2137O
- D2138O
- D2140O
- D2151O
- A1006
- P1
- P10
- P100
- P101
- P103
- P11
- P12
- P13
- P14
- P15
- P16
- P17
- P18
- P19
- P2
- P20
- P21
- P22
- P228
- P23
- P230
- P232
- P237
- P238
- P239
- P24
- P240
- P241
- P245
- P25
- P26
- P27
- P275
- P28
- P3
- P30
- P31
- P32
- P323
- P33
- P34
- P35
- P36
- P37
- P38
- P39
- P4
- P40
- P41
- P42
- P422
- P43
- P44
- P448
- P45
- P46
- P47
- P48
- P5
- P50
- P51
- P52
- P54
- P55
- P56
- P57
- P58
- P59
- P6
- P60
- P61
- P62
- P63
- P64
- P65
- P67
- P68
- P7
- P71
- P72
- P73
- P74
- P75
- P76
- P77
- P78
- P8
- P83
- P9
- B2003
- B2004
- B2005
- B2025
- B2011
- GESP202306C102
- GESP202309C1T2
- GESP202309C1T3
- P2639
- P2916
- P2924
- NOIP2005J2T2
- NOIP2007J2T1
- D2228
- P3136
- P3177
- P3440
- P3441
- P3442
- P3444
- P3493
- D2172
- D2173
- D2174
- D2175
- D2176
- D2178
- D2177
- D2179
- D2180
- D2181
- D2182
- D2183
- D2184
- D2185
- D2186
- D2187
- D2188
- D2189
- D2192
- D2193
- D2194
- D2223
- D2227
- D2229
- A1002
- L0024
- L0033
- L0042
- L0048
- L0051
- L0056
- L0068
- WO0001
- WO0002
- WO0003
- WO0004
- WO0005
- WO0006
- WO0007
- D1017
- WO0019
- WO0017
- WO0018
- WO0043
- WO0044
- S0101
- A1007
- GESP202403C1
- GESP202403C2
- CS406
- CS407
- D2212
- D2214
- D2215
- CS40902
- CS40904
- CS41001
- CS41002
- D2238
- WO0049D
- GESP202312C1T2
- GESP202312C1T3
- GESP202312C2T3
- D1024
- D1025
- B5087D
- D1027
- D1028
- WOCSPJ008
- WOCSPJ006
- WO0076
- WO0077
- WO0078
- WO0079
- WO0073
- WO0074
- WO0075
- WO0083
- WO0080
- WO0082
- WO0081
- WO0084
- WO0086
- WO0461
- WO0462
- WO0463
- WO0464
- W0508
- W0509
- W0510
- W0511
- WCSPJ0633
- WCSPJ0635
- T1020
- S8002
- HD2025M1
- HD2025M2
- HD2025M3
- HD2025M4
- HDSNG2025M3
- HDSNG2025M2
- HDSNG2025M1
-
最近活动
- 粤港澳信息学创新大赛模拟 IOI
- 2025花都区少年宫信息赛编程题 IOI
- 2025 年花都区学生数字素养提升实践大赛活动创意趣味算法项目中学组试题 IOI
- 2023 年广州市花都区中小学学生信息素养提升实践活动 创意编程算法趣味赛(中学组) IOI
- 2024 年广州市花都区学生数字素养提升实践大赛活动 创意编程算法趣味赛(中学组) IOI
- 2025年全国青少年信息素养大赛-算法创意实践挑战赛—真题试卷(初赛)初中组-1 IOI
- 2025粤港澳信息学创新大赛市选拔赛模拟题初中组 OI
- 2025粤港澳信息学创新大赛市选拔赛模拟题小学组 OI
- GFHD欢度五一信奥赛B阶 IOI
- GFHD欢度五一信奥赛A阶 IOI
- GFHD20250308-A阶-排序算法 作业
- GFHD20250301-A阶-一维数组 作业
- GFHD2025春季开学第一周收心测-A+阶(思维赛) IOI
- GFHD2025春季开学第一周收心测-A阶 IOI
- GF25寒假A2-A3阶-第二课:二维数组1-2 作业
- GF25寒假A2-A3阶-第一课:排序算法 作业
题目标签
- 一本通编程启蒙
- 89
- 基础问题
- 53
- 语法周赛
- 30
- 其他
- 25
- 算法基础
- 25
- 算法笔记
- 22
- 基础语法
- 17
- 数学
- 16
- 分支问题
- 14
- 模拟
- 14
- 嵌套循环
- 13
- T3
- 12
- 简单循环
- 11
- T1
- 11
- 排序
- 10
- 教学题-C语言
- 10
- 递推
- 9
- 输出
- 9
- 高精度
- 9
- 比赛题
- 9