一次只能合併相鄰的兩個數字,例如 [2 2 2 2] ,向右合併以後是 [空 空 4 4] ,不是 [空 空 空 8]每次合併的時候,合併方向優先順序高,例如 [空 2 2 2],向右合併以後是 [空 空 2 4],不是 [空 空 4 2]
判斷遊戲勝利或者失敗
每次合併以後隨機新出4的概率10%
引入curses庫記錄最高分繪製遊戲介面
遊戲狀態切換
重啟初始化遊戲
向左移動
向其他方向移動
遊戲勝負判定
#include #include #include // srand() rand()
#include // ?
#include #include using namespace std;
// 格仔數
#define n 4
// 每個格仔的字元長度
#define width 5
// 遊戲狀態
#define s_fail 0
#define s_win 1
#define s_normal 2
#define s_quit 3
// 勝利條件
#define target 2048
class game2048
int getstatus()
// 處理按鍵輸入
void processinput()
else if (ch == 'd')
else if (ch == 'w')
if (updated)
}if (ch == 'q')
status = s_quit;
else if (ch == 'r')
restart();
//else
// status = (status + 1) % 3; // 遍歷其他三種狀態
} // 繪製遊戲介面
void draw()
}// 提示文字
mvprintw(2 * n + 2, (5 * (n - 4) - 1) / 2, "w(up),s(down),a(left),d(right),r(restart),q(quit)");
mvprintw(2 * n + 3, 12 + 5 * (n - 4) / 2, "");
// 輸贏顯示
if (status == s_fail)
mvprintw(n, 5 * n / 2 - 1, "you fail,press r to restart");
if (status == s_win)
mvprintw(n, 5 * n / 2 - 1, "you win,press r to restart");
} // 設定測試資料
void settestdata()
}}private:
// 判斷遊戲是否已經結束
bool isover()
}return true;
} // 增加判斷每次移動後是否發生變化
bool moveleft()
else
++currentwriteindex;
}data[i][j] = 0; // 把查過的值賦0
}if (lastvalue != 0)
data[i][currentwriteindex] = lastvalue;
} for (int i = 0; i < n; ++i)
}return false;
} // 逆時針旋轉90度
void rotate()
}for (int i = 0; i < n; ++i)
}} // 重新開始
void restart()
}randnew();
randnew();
status = s_normal;
} // 產生乙個隨機數
bool randnew()
}if (emptypos.empty())
return false;
// 隨機取乙個空的位置
int value = emptypos[rand() % emptypos.size()];
// 新產生2或4,4的概率為10%
data[value / n][value % n] = rand() % 10 == 1 ? 4 : 2;
return true;
} // 左上角為(0,0),在指定位置畫乙個字元
void drawitem(int row, int col, char c)
// 遊戲裡的數字是右對齊,row col是數字最後一位所在的位置
void drawnum(int row, int col, int num) }
private:
int data[n][n]; // 對映陣列
int status;
};void initialize()
void shutdown()
int main()
while (game.getstatus() != s_quit);
shutdown();
return 0;
}
用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...
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...