日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏2048源代码

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏2048源代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

〇、前言

? ? ?本文最初是在2014年發表的,當時只是Windows版本的,前段時間有位讀者給我發郵件咨詢Linux下版本移植問題,于是便花時間支持了Linux下的版本,并修改完善了代碼,加入記錄最高分的功能,供讀者參考學習。

一、游戲介紹

? ? ?所謂《2048》是最近比較流行的一款數字游戲。原版2048首先在github上發布,原作者是Gabriele Cirulli。它是基于《1024》和《小3傳奇》(Threes!)的玩法開發而成的新型數字游戲。

二、游戲規則

? ? ?游戲的規則很簡單,你需要控制所有方塊向同一個方向運動,兩個相同數字的方塊撞在一起之后合并成為他們的和,每次操作之后會在空白的方格處隨機生成一個2或者4(生成2的概率要大一些),最終得到一個“2048”的方塊就算勝利了。

三、核心算法

1、方塊的移動和合并

? ? ?主要思想:把游戲數字面板抽象成4行4列的二維數組a[4][4],值為0的位置表示空方塊,其他表示對應數字方塊。把每一行同等對待,只研究一行的移動和合并算法,然后可以通過遍歷行來實現所有行的移動合并算法。在一行中,用b[4]表示一行的一維數組,使用兩個下標變量來遍歷列項,這里使用j和k,其中j總在k的后面,用來尋找k項后面第一個不為0的數字,而k項用于表示當前待比較的項,總是和j項之間隔著若干個數字0,或者干脆緊挨著。不失一般性,考慮往左滑動時,初始情況下j等于1,而k等于0,接著判斷j項數字是否大于0,若是,則判斷j項和k項數字的關系,分成3種情況處理,分別是(合并)P1: b[k]==b[j],(移動)P2: b[k]==0和(碰撞)P3: b[k]!=0且b[k]!=b[j];若否,則j自加1,然后繼續尋找k項后面第一個不為0的數字。

? ? ?其中P1,P2和P3分別對應如下:

? ? ?(合并)P1:b[k]==b[j],則b[k] = 2 * b[k](說明兩數合并了),且b[j] = 0(合并之后要將殘留的j項值清零),接著k自加1,然后進行下一次循環。

? ? ?(移動)P2:b[k]==0,則表示b[j]之前全是空格子,此時直接移動b[j]到k的位置,也就是b[k] = b[j],然后b[j] = 0(移動后將殘留的j項值清零),接著k值不變,然后進行下一次循環。

? ? ?(碰撞)P3:b[k]!=0且b[k]!=b[j],則表示兩數不相等且都不為0,此時將兩數靠在一起,也就是b[k+1] = b[j]。接著分兩種小情況,若j!=k+1,則b[j] = 0(移動后將殘留的j項值清零);若否,則表示兩數原先就靠在一起,則不進行特殊處理(相當于未移動)。接著k自加1,然后進行下一次循環。

? ? ?舉一個P1的例子,流程表示如下:

? ?

? ? ?一行內移動合并算法描述如下(此例為左移情況,其他方向與之類似,區別僅僅是遍歷二維數組的行項和列項的方式):

1 int j, k;2 for (j = 1, k = 0; j < 4; j++) {3 if (b[j] > 0) { /* 找出k后面第一個不為空的項,下標為j,之后分三種情況 */4 if (b[k] == b[j]) { /* P1情況,合并 */5 b[k] = 2 * b[k];6 b[j] = 0;7 k = k + 1;8 } else if (b[k] == 0) { /* P2情況,移動 */9 b[k] = b[j]; 10 b[j] = 0; 11 } else { /* P3情況,碰撞 */ 12 b[k + 1] = b[j]; 13 if (j != k + 1) { /* 原先兩數不挨著 */ 14 b[j] = 0; 15 } 16 k = k + 1; 17 } 18 } 19 }

2、判斷游戲是否結束

? ? ?核心思想:遍歷二維數組,看是否存在橫向和縱向兩個相鄰的元素相等,若存在,則游戲不結束,若不存在,則游戲結束。

? ? ?算法代碼描述如下(board表示真正的游戲源碼中使用的二維數組):

1 /* 檢查游戲是否結束 函數定義 */2 void check_game_over() {3 int i;4 for (i = 0; i < 4; ++i) {5 int j;6 for (j = 0; j < 3; ++j) {7 /* 橫向和縱向比較挨著的兩個元素是否相等,若有相等則游戲不結束 */8 if (board[i][j] == board[i][j + 1] || board[j][i] == board[j + 1][i]) {9 if_game_over = 0; 10 return; 11 } 12 } 13 } 14 if_game_over = 1; 15 }

3、生成隨機數

? ? ?核心思想:根據生成的隨機數,對一定的值進行取模,達到生成一定概率的數。在本游戲中,設定4出現的概率為1/10,于是可以利用系統提供的隨機數函數生成一個數,然后對10取余,得到的數若大于0則在游戲面板空格處生成一個2,若余數等于0,則生成4。在選擇將在哪一個空格出生成數的時候,也是根據系統提供的隨機函數生成一個數,然后對空格數取余,然后在第余數個空格出生成數字。

? ? ?算法代碼描述如下(board表示真正的游戲源碼中使用的二維數組):

1 /* 生成隨機數 函數定義 */2 void add_rand_num() {3 srand((unsigned int) time(0));4 int n = rand() % get_null_count(); /* 確定在何處空位置生成隨機數 */5 int i;6 for (i = 0; i < 4; ++i) {7 int j;8 for (j = 0; j < 4; ++j) {9 /* 定位待生成的位置 */ 10 if (board[i][j] == 0 && n-- == 0) { 11 board[i][j] = (rand() % 10 ? 2 : 4); /* 生成數字2或4,生成概率為9:1 */ 12 return; 13 } 14 } 15 } 16 }

4、繪制界面

? ? ?核心思想:利用系統提供的控制臺界面清屏功能,達到刷新界面的效果,利用控制制表符位置,達到繪制游戲數字面板的效果。

? ? ?由于繪制界面不算是本游戲的本質,且代碼段相對較長,所以算法描述在這里省略,讀者可以參考完整源代碼。

5、計算得分

? ? ?核心思想:兩塊帶數字的方格合并后的數字為合并的得分,一次上下左右移動后游戲面板上所有合并的得分總和為一次移動的得分,多次移動的得分進行累加作為當前總得分。

? ? ?如果當前總得分(SCORE)超過最高分(BEST),則最高分被改寫為當前總得分,并存儲下來,下次啟動游戲時會自動載入本機存儲的最高分。

四、完整源代碼如下,敬請讀者批評指正:

1 /*2 * Copyright (C) 2014-2018 Judge Young3 * E-mail: yjjtc@126.com4 * Version: 2.05 * DateTime: 2018-08-01 23:186 */7 8 #include <time.h> /* 包含設定隨機數種子所需要的time()函數 */9 #include <stdio.h> /* 包含C的IO讀寫功能 */10 #include <stdlib.h> /* 包含C標準庫的功能 */11 12 #ifdef _WIN3213 14 /* 包含Windows平臺相關函數,包括控制臺界面清屏及光標設定等功能 */15 #include <conio.h>16 #include <windows.h>17 #include <io.h>18 #include <direct.h>19 #include <Shlobj.h>20 21 #else22 23 /* 包含Linux平臺相關函數,包括控制臺界面清屏及光標設定等功能 */24 #include <termio.h>25 #include <unistd.h>26 #include <bits/signum.h>27 #include <signal.h>28 29 #define KEY_CODE_UP 0x4130 #define KEY_CODE_DOWN 0x4231 #define KEY_CODE_LEFT 0x4432 #define KEY_CODE_RIGHT 0x4333 #define KEY_CODE_QUIT 0x7134 35 struct termios old_config; /* linux下終端屬性配置備份 */36 37 #endif38 39 static char config_path[4096] = {0}; /* 配置文件路徑 */40 41 static void init_game(); /* 初始化游戲 */42 static void loop_game(); /* 游戲循環 */43 static void reset_game(); /* 重置游戲 */44 static void release_game(int signal); /* 釋放游戲 */45 46 static int read_keyboard();47 48 static void move_left(); /* 左移 */49 static void move_right(); /* 右移 */50 static void move_up(); /* 上移 */51 static void move_down(); /* 下移 */52 53 static void add_rand_num(); /* 生成隨機數,本程序中僅生成2或4,概率之比設為9:1 */54 static void check_game_over(); /* 檢測是否輸掉游戲,設定游戲結束標志 */55 static int get_null_count(); /* 獲取游戲面板上空位置數量 */56 static void clear_screen(); /* 清屏 */57 static void refresh_show(); /* 刷新界面顯示 */58 59 static int board[4][4]; /* 游戲數字面板,抽象為二維數組 */60 static int score; /* 游戲得分 */61 static int best; /* 游戲最高分 */62 static int if_need_add_num; /* 是否需要生成隨機數標志,1表示需要,0表示不需要 */63 static int if_game_over; /* 是否游戲結束標志,1表示游戲結束,0表示正常 */64 static int if_prepare_exit; /* 是否準備退出游戲,1表示是,0表示否 */65 66 /* main函數 函數定義 */67 int main(int argc, char *argv[]) {68 init_game();69 loop_game();70 release_game(0);71 return 0;72 }73 74 /* 讀取鍵盤 函數定義 */75 int read_keyboard() {76 #ifdef _WIN3277 return _getch();78 #else79 int key_code;80 if (read(0, &key_code, 1) < 0) {81 return -1;82 }83 return key_code;84 #endif85 }86 87 /* 開始游戲 函數定義 */88 void loop_game() {89 while (1) {90 int cmd = read_keyboard(); /* 接收標準輸入流字符命令 */91 92 /* 判斷是否準備退出游戲 */93 if (if_prepare_exit) {94 if (cmd == 'y' || cmd == 'Y') {95 /* 退出游戲,清屏后退出 */96 clear_screen();97 return;98 } else if (cmd == 'n' || cmd == 'N') {99 /* 取消退出 */ 100 if_prepare_exit = 0; 101 refresh_show(); 102 continue; 103 } else { 104 continue; 105 } 106 } 107 108 /* 判斷是否已經輸掉游戲 */ 109 if (if_game_over) { 110 if (cmd == 'y' || cmd == 'Y') { 111 /* 重玩游戲 */ 112 reset_game(); 113 continue; 114 } else if (cmd == 'n' || cmd == 'N') { 115 /* 退出游戲,清屏后退出 */ 116 clear_screen(); 117 return; 118 } else { 119 continue; 120 } 121 } 122 123 if_need_add_num = 0; /* 先設定不默認需要生成隨機數,需要時再設定為1 */ 124 125 #ifdef _WIN32 126 /* 命令解析,w,s,a,d字符代表上下左右命令,q代表退出 */ 127 switch (cmd) { 128 case 'a': 129 case 75:move_left(); 130 break; 131 case 's': 132 case 80:move_down(); 133 break; 134 case 'w': 135 case 72:move_up(); 136 break; 137 case 'd': 138 case 77:move_right(); 139 break; 140 case 'q': 141 case 27:if_prepare_exit = 1; 142 break; 143 default:continue; 144 } 145 #else 146 /* 命令解析,上下左右箭頭代表上下左右命令,q代表退出 */ 147 switch (cmd) { 148 case 'a': 149 case KEY_CODE_LEFT:move_left(); 150 break; 151 case 's': 152 case KEY_CODE_DOWN:move_down(); 153 break; 154 case 'w': 155 case KEY_CODE_UP:move_up(); 156 break; 157 case 'd': 158 case KEY_CODE_RIGHT:move_right(); 159 break; 160 case KEY_CODE_QUIT:if_prepare_exit = 1; 161 break; 162 default:continue; 163 } 164 #endif 165 /* 打破得分紀錄 */ 166 if (score > best) { 167 best = score; 168 FILE *fp = fopen(config_path, "w"); 169 if (fp) { 170 fwrite(&best, sizeof(best), 1, fp); 171 fclose(fp); 172 } 173 } 174 175 /* 默認為需要生成隨機數時也同時需要刷新顯示,反之亦然 */ 176 if (if_need_add_num) { 177 add_rand_num(); 178 refresh_show(); 179 } else if (if_prepare_exit) { 180 refresh_show(); 181 } 182 } 183 } 184 185 /* 重置游戲 函數定義 */ 186 void reset_game() { 187 score = 0; 188 if_need_add_num = 1; 189 if_game_over = 0; 190 if_prepare_exit = 0; 191 192 /* 了解到游戲初始化時出現的兩個數一定會有個2,所以先隨機生成一個2,其他均為0 */ 193 int n = rand() % 16; 194 int i; 195 for (i = 0; i < 4; ++i) { 196 int j; 197 for (j = 0; j < 4; ++j) { 198 board[i][j] = (n-- == 0 ? 2 : 0); 199 } 200 } 201 202 /* 前面已經生成了一個2,這里再生成一個隨機的2或者4,概率之比9:1 */ 203 add_rand_num(); 204 205 /* 在這里刷新界面并顯示的時候,界面上已經默認出現了兩個數字,其他的都為空(值為0) */ 206 refresh_show(); 207 } 208 209 /* 生成隨機數 函數定義 */ 210 void add_rand_num() { 211 srand((unsigned int) time(0)); 212 int n = rand() % get_null_count(); /* 確定在何處空位置生成隨機數 */ 213 int i; 214 for (i = 0; i < 4; ++i) { 215 int j; 216 for (j = 0; j < 4; ++j) { 217 /* 定位待生成的位置 */ 218 if (board[i][j] == 0 && n-- == 0) { 219 board[i][j] = (rand() % 10 ? 2 : 4); /* 生成數字2或4,生成概率為9:1 */ 220 return; 221 } 222 } 223 } 224 } 225 226 /* 獲取空位置數量 函數定義 */ 227 int get_null_count() { 228 int n = 0; 229 int i; 230 for (i = 0; i < 4; ++i) { 231 int j; 232 for (j = 0; j < 4; ++j) { 233 board[i][j] == 0 ? ++n : 1; 234 } 235 } 236 return n; 237 } 238 239 /* 檢查游戲是否結束 函數定義 */ 240 void check_game_over() { 241 int i; 242 for (i = 0; i < 4; ++i) { 243 int j; 244 for (j = 0; j < 3; ++j) { 245 /* 橫向和縱向比較挨著的兩個元素是否相等,若有相等則游戲不結束 */ 246 if (board[i][j] == board[i][j + 1] || board[j][i] == board[j + 1][i]) { 247 if_game_over = 0; 248 return; 249 } 250 } 251 } 252 if_game_over = 1; 253 } 254 255 /* 256 * 如下四個函數,實現上下左右移動時數字面板的變化算法 257 * 左和右移動的本質一樣,區別僅僅是列項的遍歷方向相反 258 * 上和下移動的本質一樣,區別僅僅是行項的遍歷方向相反 259 * 左和上移動的本質也一樣,區別僅僅是遍歷時行和列互換 260 */ 261 262 /* 左移 函數定義 */ 263 void move_left() { 264 /* 變量i用來遍歷行項的下標,并且在移動時所有行相互獨立,互不影響 */ 265 int i; 266 for (i = 0; i < 4; ++i) { 267 /* 變量j為列下標,變量k為待比較(合并)項的下標,循環進入時k<j */ 268 int j, k; 269 for (j = 1, k = 0; j < 4; ++j) { 270 if (board[i][j] > 0) /* 找出k后面第一個不為空的項,下標為j,之后分三種情況 */ 271 { 272 if (board[i][k] == board[i][j]) { 273 /* 情況1:k項和j項相等,此時合并方塊并計分 */ 274 score += board[i][k++] *= 2; 275 board[i][j] = 0; 276 if_need_add_num = 1; /* 需要生成隨機數和刷新界面 */ 277 } else if (board[i][k] == 0) { 278 /* 情況2:k項為空,則把j項賦值給k項,相當于j方塊移動到k方塊 */ 279 board[i][k] = board[i][j]; 280 board[i][j] = 0; 281 if_need_add_num = 1; 282 } else { 283 /* 情況3:k項不為空,且和j項不相等,此時把j項賦值給k+1項,相當于移動到k+1的位置 */ 284 board[i][++k] = board[i][j]; 285 if (j != k) { 286 /* 判斷j項和k項是否原先就挨在一起,若不是則把j項賦值為空(值為0) */ 287 board[i][j] = 0; 288 if_need_add_num = 1; 289 } 290 } 291 } 292 } 293 } 294 } 295 296 /* 右移 函數定義 */ 297 void move_right() { 298 /* 仿照左移操作,區別僅僅是j和k都反向遍歷 */ 299 int i; 300 for (i = 0; i < 4; ++i) { 301 int j, k; 302 for (j = 2, k = 3; j >= 0; --j) { 303 if (board[i][j] > 0) { 304 if (board[i][k] == board[i][j]) { 305 score += board[i][k--] *= 2; 306 board[i][j] = 0; 307 if_need_add_num = 1; 308 } else if (board[i][k] == 0) { 309 board[i][k] = board[i][j]; 310 board[i][j] = 0; 311 if_need_add_num = 1; 312 } else { 313 board[i][--k] = board[i][j]; 314 if (j != k) { 315 board[i][j] = 0; 316 if_need_add_num = 1; 317 } 318 } 319 } 320 } 321 } 322 } 323 324 /* 上移 函數定義 */ 325 void move_up() { 326 /* 仿照左移操作,區別僅僅是行列互換后遍歷 */ 327 int i; 328 for (i = 0; i < 4; ++i) { 329 int j, k; 330 for (j = 1, k = 0; j < 4; ++j) { 331 if (board[j][i] > 0) { 332 if (board[k][i] == board[j][i]) { 333 score += board[k++][i] *= 2; 334 board[j][i] = 0; 335 if_need_add_num = 1; 336 } else if (board[k][i] == 0) { 337 board[k][i] = board[j][i]; 338 board[j][i] = 0; 339 if_need_add_num = 1; 340 } else { 341 board[++k][i] = board[j][i]; 342 if (j != k) { 343 board[j][i] = 0; 344 if_need_add_num = 1; 345 } 346 } 347 } 348 } 349 } 350 } 351 352 /* 下移 函數定義 */ 353 void move_down() { 354 /* 仿照左移操作,區別僅僅是行列互換后遍歷,且j和k都反向遍歷 */ 355 int i; 356 for (i = 0; i < 4; ++i) { 357 int j, k; 358 for (j = 2, k = 3; j >= 0; --j) { 359 if (board[j][i] > 0) { 360 if (board[k][i] == board[j][i]) { 361 score += board[k--][i] *= 2; 362 board[j][i] = 0; 363 if_need_add_num = 1; 364 } else if (board[k][i] == 0) { 365 board[k][i] = board[j][i]; 366 board[j][i] = 0; 367 if_need_add_num = 1; 368 } else { 369 board[--k][i] = board[j][i]; 370 if (j != k) { 371 board[j][i] = 0; 372 if_need_add_num = 1; 373 } 374 } 375 } 376 } 377 } 378 } 379 380 /* 清屏 */ 381 void clear_screen() { 382 #ifdef _WIN32 383 /* 重設光標輸出位置清屏可以減少閃爍,system("cls")為備用清屏命令,均為Windows平臺相關*/ 384 COORD pos = {0, 0}; 385 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); 386 CONSOLE_CURSOR_INFO info = {1, 0}; 387 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info); 388 #else 389 printf("\033c"); /* linux下的清屏命令 */ 390 printf("\033[?25l"); /* linux下的隱藏輸入光標 */ 391 #endif 392 } 393 394 /* 刷新界面 函數定義 */ 395 void refresh_show() { 396 clear_screen(); 397 398 printf("\n\n\n\n"); 399 printf(" GAME: 2048 SCORE: %05d BEST: %06d\n", score, best); 400 printf(" --------------------------------------------------"); 401 402 /* 繪制方格和數字 */ 403 printf("\n\n ┌────┬────┬────┬────┐\n"); 404 int i; 405 for (i = 0; i < 4; ++i) { 406 printf(" │"); 407 int j; 408 for (j = 0; j < 4; ++j) { 409 if (board[i][j] != 0) { 410 if (board[i][j] < 10) { 411 printf(" %d │", board[i][j]); 412 } else if (board[i][j] < 100) { 413 printf(" %d │", board[i][j]); 414 } else if (board[i][j] < 1000) { 415 printf(" %d│", board[i][j]); 416 } else if (board[i][j] < 10000) { 417 printf("%4d│", board[i][j]); 418 } else { 419 int n = board[i][j]; 420 int k; 421 for (k = 1; k < 20; ++k) { 422 n = n >> 1; 423 if (n == 1) { 424 printf("2^%02d│", k); /* 超過四位的數字用2的冪形式表示,如2^13形式 */ 425 break; 426 } 427 } 428 } 429 } else printf(" │"); 430 } 431 432 if (i < 3) { 433 printf("\n ├────┼────┼────┼────┤\n"); 434 } else { 435 printf("\n └────┴────┴────┴────┘\n"); 436 } 437 } 438 printf("\n"); 439 printf(" --------------------------------------------------\n"); 440 printf(" [W]:UP [S]:DOWN [A]:LEFT [D]:RIGHT [Q]:EXIT"); 441 442 if (get_null_count() == 0) { 443 check_game_over(); 444 445 /* 判斷是否輸掉游戲 */ 446 if (if_game_over) { 447 printf("\r GAME OVER! TRY THE GAME AGAIN? [Y/N]: \b\b\b\b"); 448 #ifdef _WIN32 449 CONSOLE_CURSOR_INFO info = {1, 1}; 450 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info); 451 #else 452 printf("\033[?25h"); /* linux下的顯示輸入光標 */ 453 #endif 454 } 455 } 456 457 /* 判斷是否準備退出游戲 */ 458 if (if_prepare_exit) { 459 printf("\r DO YOU REALLY WANT TO QUIT THE GAME? [Y/N]: \b\b"); 460 #ifdef _WIN32 461 CONSOLE_CURSOR_INFO info = {1, 1}; 462 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info); 463 #else 464 printf("\033[?25h"); /* linux下的顯示輸入光標 */ 465 #endif 466 } 467 468 fflush(0); /* 刷新輸出緩沖區 */ 469 } 470 471 /* 初始化游戲 */ 472 void init_game() { 473 #ifdef _WIN32 474 system("cls"); 475 476 /* 獲取游戲存檔路徑,Windows下放在C:\Users\UserName\AppData\Local\2048目錄下 */ 477 char m_lpszDefaultDir[MAX_PATH]; 478 char szDocument[MAX_PATH] = {0}; 479 memset(m_lpszDefaultDir, 0, _MAX_PATH); 480 LPITEMIDLIST pidl = NULL; 481 SHGetSpecialFolderLocation(NULL, CSIDL_LOCAL_APPDATA, &pidl); 482 if (pidl && SHGetPathFromIDList(pidl, szDocument)) { 483 GetShortPathName(szDocument, m_lpszDefaultDir, _MAX_PATH); 484 } 485 sprintf(config_path, "%s\\2048", m_lpszDefaultDir); 486 if (_access(config_path, 0) == -1) { 487 _mkdir(config_path); 488 } 489 sprintf(config_path, "%s\\2048\\2048.dat", m_lpszDefaultDir); 490 #else 491 /* 獲取游戲存檔路徑,Linux下放在當前用戶主目錄下 */ 492 sprintf(config_path, "%s/.2048", getenv("HOME")); 493 494 tcgetattr(0, &old_config); /* 獲取終端屬性 */ 495 struct termios new_config = old_config; /* 創建新的終端屬性 */ 496 new_config.c_lflag &= ~ICANON; /* 設置非正規模式 */ 497 new_config.c_lflag &= ~ECHO; /* 關閉輸入回顯 */ 498 new_config.c_cc[VMIN] = 1; /* 設置非正規模式下的最小字符數 */ 499 new_config.c_cc[VTIME] = 0; /* 設置非正規模式下的讀延時 */ 500 tcsetattr(0, TCSANOW, &new_config); /* 設置新的終端屬性 */ 501 502 printf("\033[?25l"); 503 504 signal(SIGINT, release_game); 505 #endif 506 507 /* 讀取游戲最高分數 */ 508 FILE *fp = fopen(config_path, "r"); 509 if (fp) { 510 fread(&best, sizeof(best), 1, fp); 511 fclose(fp); 512 } else { 513 best = 0; 514 fp = fopen(config_path, "w"); 515 if (fp) { 516 fwrite(&best, sizeof(best), 1, fp); 517 fclose(fp); 518 } 519 } 520 521 reset_game(); 522 } 523 524 /* 釋放游戲 */ 525 void release_game(int signal) { 526 #ifdef _WIN32 527 system("cls"); 528 CONSOLE_CURSOR_INFO info = {1, 1}; 529 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info); 530 #else 531 if (signal == SIGINT) { 532 printf("\n"); 533 } 534 tcsetattr(0, TCSANOW, &old_config); /* 還原回舊的終端屬性 */ 535 printf("\033[?25h"); 536 #endif 537 exit(0); 538 }

五、運行界面如下,僅供讀者參考玩樂:

? ? ?其中,按方向鍵,或者w、s、a、d鍵為上、下、左、右移動,按q鍵為退出游戲。

六、版本移植問題

? ? ?在本文中的源代碼是Windows系統的版本,但游戲的核心算法無論在那個系統上都是一樣的,區別僅僅是界面繪制刷新的實現部分可能存在差異。比如在Linux上的getch()函數有回顯,所以可能會需要更好的命令輸入邏輯,而且conio.h并不屬于C標準庫中,所以在Linux下引用不到此頭文件,而Linux下getch()函數存在于curses.h頭文件中,所以需要更改頭文件。還有,在本文源代碼中關于清屏的代碼在Linux下失效,所以若想移植需要修改清屏邏輯,達到刷新界面的邏輯,比如調用Linux下的清屏命令system("clear"),效果如何,讀者可以試試。

七、版本移植

? ? ?當前最新版本已經支持Windows和Linux雙系統下編譯運行了,讀者可以下載源碼參考學習,給出意見建議,然后編譯運行,順便挑戰一下最高分~

轉載于:https://www.cnblogs.com/changanshisanzhao/p/11032314.html

總結

以上是生活随笔為你收集整理的游戏2048源代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产成人精品午夜在线播放 | 久久午夜精品影院一区 | 国产黄色免费在线观看 | 久久久综合色 | 大荫蒂欧美视频另类xxxx | 黄色中文字幕 | 九九视频这里只有精品 | 999久久精品 | 精品视频www | 婷婷激情在线 | 亚洲免费在线播放视频 | 免费在线观看视频一区 | 亚洲日本va中文字幕 | 天天干人人插 | 亚洲天堂视频在线 | 久久久久久久久久久影院 | 久久久在线观看 | 亚洲午夜精品一区 | 精品资源在线 | 国产精成人品免费观看 | 日韩美女免费线视频 | 91精品国产91久久久久福利 | 欧美性久久久久久 | 精品少妇一区二区三区在线 | 日韩免费三级 | 久久久精品国产免费观看同学 | 欧美午夜性| 亚洲国产中文在线观看 | 国产又粗又猛又色又黄网站 | 亚洲精品裸体 | 国产综合精品一区二区三区 | 国产亚洲精品综合一区91 | 菠萝菠萝在线精品视频 | 久久污视频 | 欧美ⅹxxxxxx | 国产成人精品亚洲a | 欧美一级久久久 | 91在线麻豆 | 国产永久免费高清在线观看视频 | 国产一级一片免费播放放 | 天天做天天爱夜夜爽 | 少妇bbr搡bbb搡bbb | 91黄色成人 | 天天操人人干 | 成人黄色大片在线观看 | 欧美另类亚洲 | 国产护士av| 日本中文字幕系列 | 亚洲日本中文字幕在线观看 | 在线免费观看一区二区三区 | 99这里只有精品99 | 丁香婷婷色月天 | 国产精品永久免费观看 | 亚洲国产一区二区精品专区 | 91av视频在线观看 | 色妞色视频一区二区三区四区 | 精品一区在线看 | 欧美国产日韩在线观看 | 久热爱 | 久久成年人视频 | 亚洲午夜久久久久久久久电影网 | 久久久国产精品一区二区中文 | 区一区二在线 | 91成人免费看 | 国产精品久久电影网 | 国产又粗又猛又色又黄视频 | 91香蕉视频在线 | 成年人免费看片网站 | 免费视频资源 | 欧美孕交vivoestv另类 | 欧美一区二区免费在线观看 | 国产精品视频内 | 亚洲尺码电影av久久 | 国产涩涩在线观看 | 日韩,中文字幕 | 免费日韩电影 | 最近字幕在线观看第一季 | 99热精品在线观看 | 午夜精品久久久久久99热明星 | 中文一区二区三区在线观看 | 精品国模一区二区 | 狠狠狠狠狠狠狠干 | 精品av在线播放 | 国产精品福利无圣光在线一区 | 久久久久久在线观看 | 国产一区观看 | 亚洲精品视频在线看 | 66av99精品福利视频在线 | 天天躁日日躁狠狠躁av麻豆 | 国产精品久久久久永久免费观看 | 国产一区二区不卡视频 | 久久综合五月婷婷 | 国产美女黄网站免费 | 婷婷视频导航 | 亚洲欧美视频在线观看 | 一本一本久久a久久精品综合 | 九九热在线观看视频 | 日韩va在线观看 | 天天爽综合网 | 涩涩爱夜夜爱 | 欧美日韩一级久久久久久免费看 | 最近日韩中文字幕中文 | 狠狠干婷婷色 | 日韩动态视频 | 中文字幕 国产专区 | 欧美久草网| av在线a| 99久国产 | 2023av在线| 久久99亚洲热视 | 日韩欧美一区二区在线 | 在线观看中文字幕网站 | 久久综合影音 | 国产精品18久久久久久不卡孕妇 | 亚洲 成人 一区 | 黄色在线免费观看网址 | 久久成人资源 | 日本中文字幕一二区观 | 欧美巨乳波霸 | 日韩在线观看视频中文字幕 | www.99av| 探花国产在线 | 亚洲国产精品成人综合 | 色欧美成人精品a∨在线观看 | 国产在线观看a | 91麻豆精品国产自产 | 91精品啪在线观看国产81旧版 | 午夜电影久久久 | 精品视频在线免费 | 美女露久久 | 免费观看91视频 | 成人a免费看 | 日韩电影在线观看一区 | 丝袜少妇在线 | 婷婷亚洲综合五月天小说 | 麻豆mv在线观看 | 国产精品少妇 | 狠狠狠狠狠狠操 | 亚洲一区二区三区精品在线观看 | av观看在线观看 | 亚洲 欧美 变态 国产 另类 | 国产中文字幕三区 | 国产精品第十页 | 天天做天天爱天天爽综合网 | 精品999在线 | 99久久精品国产一区二区成人 | 99精品视频在线看 | 国产精品一区二区无线 | 欧美老人xxxx18 | 国产综合精品久久 | av免费看av| 欧美国产日韩一区 | 国产码电影 | 久久久久北条麻妃免费看 | 91av在线免费 | 久久免费毛片视频 | 97激情影院 | 99久久精品日本一区二区免费 | 人人爽人人爽人人片 | 免费日韩高清 | 午夜精品久久久久久久久久久 | 国产精品午夜免费福利视频 | 成人在线播放av | 欧美日韩一区二区三区不卡 | 久久99爱视频 | 91精品视频在线观看免费 | 成人一级视频在线观看 | 伊人五月天 | 午夜美女视频 | 日本性高潮视频 | 五月开心网 | av在线播放快速免费阴 | 亚洲 欧美 综合 在线 精品 | 黄色片免费在线 | 欧洲视频一区 | 国产日本在线播放 | 国产一区在线播放 | 色夜影院 | 色综合色综合久久综合频道88 | 69xxxx欧美 | 国产不卡在线 | 中文字幕一区二区在线播放 | 国产午夜一区 | 在线观看免费一区 | 色婷婷成人网 | 久久91久久久久麻豆精品 | 亚洲精品视频中文字幕 | 深爱婷婷久久综合 | 国产日韩精品视频 | 911久久香蕉国产线看观看 | 中文字幕精品一区二区三区电影 | 九九在线高清精品视频 | 亚洲一区二区三区在线看 | 视频一区二区精品 | av在线免费观看黄 | 精品一区二区影视 | 久久免费福利 | 国产男男gay做爰 | 91私密保健| 午夜美女影院 | 国产精品永久免费 | 婷婷六月久久 | 在线视频第一页 | 亚洲精品视频在线播放 | 成人性生交大片免费看中文网站 | 在线免费av播放 | www久久99| 99日精品 | 又黄又爽又色无遮挡免费 | 久久国产精品第一页 | 国产 欧美 日本 | 99国产成+人+综合+亚洲 欧美 | 免费日韩| 夜色资源站国产www在线视频 | 伊人伊成久久人综合网小说 | 97免费在线观看视频 | 久久精品久久综合 | 国产一区二区在线免费播放 | 亚洲国产综合在线 | 日本中文字幕网 | 久久毛片视频 | 一区二区精品视频 | 色欧美成人精品a∨在线观看 | 91在线看网站 | 国产色拍拍拍拍在线精品 | 成人黄色资源 | 亚洲成人精品 | 免费成人av电影 | 色视频一区 | 久久久免费精品国产一区二区 | 国产精品亚洲视频 | 午夜影院日本 | 综合网伊人 | 欧美一级视频在线观看 | a天堂一码二码专区 | 91精品国自产在线偷拍蜜桃 | 黄在线 | av黄色亚洲 | 色中射 | 五月天丁香综合 | 日韩二三区 | 日韩啪啪小视频 | av+在线播放在线播放 | 91在线视频免费观看 | 久久久久国产精品厨房 | 99视频在线免费 | 国产资源免费在线观看 | 国产真实精品久久二三区 | 久青草视频 | 麻豆精品传媒视频 | 国产 日韩 在线 亚洲 字幕 中文 | 亚洲午夜激情网 | 精品视频97 | 99在线精品观看 | 99热精品视 | 成人免费一区二区三区在线观看 | 日日干美女 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 91久久久久久国产精品 | 六月婷婷网 | 亚洲综合激情 | 麻豆影视在线免费观看 | 黄色成人av网址 | 成人免费观看在线视频 | av成年人电影| 亚洲免费在线视频 | 久草在线视频首页 | 91中文字幕在线观看 | 久久久2o19精品 | 免费观看黄| 成人av免费 | 日韩精品一区二区三区丰满 | 啪啪肉肉污av国网站 | 91人人澡人人爽 | japanesefreesexvideo高潮 | 黄色av电影网 | 天天操狠狠操夜夜操 | 五月天天色| 在线观看成人国产 | 国产精品日韩在线播放 | 中文字幕一区二区三区四区 | 日韩免费观看一区二区三区 | 久久影视网 | 在线免费成人 | 日韩一区二区三区高清免费看看 | 992tv在线观看 | 亚洲欧美激情插 | 91传媒在线 | 国产精品18久久久久久久网站 | 91成人在线观看高潮 | 精品国产伦一区二区三区观看体验 | 在线激情av电影 | 国产v亚洲v | 日韩免费观看一区二区 | 337p日本大胆噜噜噜噜 | 中文字幕资源在线 | 狠狠干网址| 精品视频在线免费 | 天天鲁天天干天天射 | 国产精品美女在线 | 91高清视频 | 欧美久久久久久久久久 | 日韩欧美高清一区二区 | 日韩欧美国产视频 | 中文av资源站| 欧洲性视频 | 99免在线观看免费视频高清 | 国产精品久久婷婷六月丁香 | 日韩欧美综合精品 | 五月婷婷综合激情 | 国产综合在线观看视频 | 日韩有码第一页 | 九九免费精品视频在线观看 | 国产玖玖精品视频 | 丝袜美腿亚洲 | 成年人黄色免费网站 | 色综合婷婷久久 | 日韩成年视频 | 九九久久婷婷 | 国产日韩精品一区二区在线观看播放 | 高清视频一区二区三区 | 婷婷色av | 久久色在线播放 | 亚洲天天在线日亚洲洲精 | 精品伦理一区二区三区 | 97成人精品视频在线观看 | 欧美一级视频免费看 | 米奇狠狠狠888| 视频在线观看亚洲 | 中文伊人 | 亚洲区另类春色综合小说 | 欧美性受极品xxxx喷水 | 高清不卡免费视频 | 日韩欧美极品 | 99性视频| 97人人澡人人爽人人模亚洲 | 精品国产乱码久久久久 | 国产高清免费观看 | 国产精品网站 | 国产色综合天天综合网 | 97超碰总站 | 婷婷天天色 | 香蕉视频在线看 | 国产精品久久久久久久久免费看 | 国产精品一区二区久久国产 | 人人爽人人爽人人爽学生一级 | 激情欧美网 | 免费看国产黄色 | 麻豆 91 在线 | 国产精品久久久久久久久久久免费看 | 在线а√天堂中文官网 | 免费观看午夜视频 | 国产精品毛片一区视频 | 一区二区三区高清不卡 | 丁香高清视频在线看看 | 在线 精品 国产 | 99久热在线精品视频成人一区 | av大片免费看 | 99热在线精品观看 | 中文字幕资源在线观看 | 精品一区精品二区高清 | 天天亚洲 | 国产亚洲人 | 高清不卡一区二区在线 | 国产精品毛片一区二区在线看 | 免费一级片久久 | 国产精品乱看 | 狂野欧美激情性xxxx | 日韩欧美一区二区三区黑寡妇 | 骄小bbw搡bbbb揉bbbb | 99国产情侣在线播放 | 久久精品站 | 国产中文字幕一区二区 | 一本一本久久a久久精品牛牛影视 | 国产aa精品| 久久免费精品 | 亚洲成 人精品 | 欧美成人va| 在线观看亚洲a | 国产精品女 | 日韩av一区二区三区 | 久久久久激情视频 | 手机av看片| 免费看黄的 | 国产精品麻豆视频 | 免费观看日韩 | 精品久久亚洲 | 欧美性极品xxxx做受 | 国产免费观看高清完整版 | 久操97| 色姑娘综合天天 | 亚洲japanese制服美女 | 色婷婷丁香 | 婷五月天激情 | 亚洲国产欧美在线看片xxoo | 久久成年人网站 | 色婷婷导航 | 日本中文字幕在线视频 | 国产免费不卡 | 99久久精品国产免费看不卡 | 久久精品国产精品亚洲 | 婷婷色在线播放 | 成人蜜桃| 一区二区欧美日韩 | 免费观看完整版无人区 | 国产不卡在线 | 国产一级h| 国产精品久久久一区二区三区网站 | 中文电影网 | 国内三级在线观看 | 久久免费视屏 | 最新中文字幕在线播放 | 天天干天天操天天操 | 久久精品综合网 | 有码中文字幕 | 激情av在线播放 | 免费精品视频 | 成人电影毛片 | 成人免费在线播放视频 | 日韩高清在线看 | 久久综合久久综合九色 | 亚洲欧美视频网站 | 亚洲激精日韩激精欧美精品 | 国产91学生粉嫩喷水 | 国产精品18久久久久久久久久久久 | 久草在线在线 | 国产精品久久网站 | 国产精品系列在线播放 | 国产精品一区二区免费在线观看 | 精品黄色在线观看 | 成人免费网站在线观看 | 91看片在线 | 18av在线视频| 婷婷久月 | av在线8| 国产精品美女久久久久久久久久久 | 国产精品久久久久久五月尺 | 日韩v在线| 亚洲一级片在线观看 | 久草在线播放视频 | avcom在线 | 国产色秀视频 | 久久99久久99精品中文字幕 | 国产成人精品一区二区三区福利 | 99视频精品全部免费 在线 | 国产原创在线 | 狠狠色综合网站久久久久久久 | 亚洲精品中文在线观看 | 中文字幕av免费 | 欧美黑人性爽 | 激情丁香综合 | 午夜国产福利视频 | 国产123区在线观看 国产精品麻豆91 | 伊人国产视频 | 中文资源在线官网 | 一本一道久久a久久精品蜜桃 | 亚洲 欧洲 国产 精品 | 天天综合五月天 | 亚洲黄色免费网站 | 四虎国产精 | 国产精品美女久久久久久 | 国产精品毛片久久久久久 | 日日操夜夜操狠狠操 | 日韩电影在线观看一区二区三区 | 国产精品毛片一区二区 | 日韩视频免费观看高清 | 欧美老人xxxx18 | 精品一区精品二区 | 国产馆在线播放 | 最新中文字幕在线资源 | 国产精品h在线观看 | 午夜丁香视频在线观看 | 欧美日韩一区二区在线观看 | 亚洲专区在线 | 不卡中文字幕av | 91网站在线视频 | 国产成人av一区二区三区在线观看 | 91中文字幕在线播放 | 九月婷婷综合网 | 一区二区三区日韩精品 | 中文永久免费观看 | 色一级片 | 特黄免费av | 久久精品导航 | 在线观看视频在线 | www.国产在线 | 国产中文字幕视频在线 | 日韩网站在线播放 | 中文字幕在线观看视频一区 | 久久成人精品视频 | 亚洲精品乱码久久久久v最新版 | 国产精品一级在线 | 久久免费黄色大片 | 99视频在线观看一区三区 | 久久精品毛片 | 在线播放 日韩专区 | 蜜臀aⅴ国产精品久久久国产 | 久久精品99国产精品 | 欧美日韩久 | 色视频成人在线观看免 | 国产成人av片 | 国产中文字幕视频 | 91视频麻豆 | 91久久国产自产拍夜夜嗨 | 精品网站999www | 婷婷色网站 | 中文字幕中文字幕中文字幕 | 日韩av综合网站 | 久久精品国产精品亚洲精品 | 成年人视频在线免费播放 | 久爱精品在线 | 日韩在线色 | 日韩激情第一页 | 在线观看久| 国产精品99久久99久久久二8 | av电影一区| 91在线看视频| 制服丝袜成人在线 | 麻豆国产电影 | 欧美地下肉体性派对 | 国产a高清 | 首页国产精品 | 欧美日韩免费观看一区二区三区 | av黄色成人 | 一区二区三区视频在线 | a级国产片 | 免费一级片视频 | 深夜成人av | 亚洲韩国一区二区三区 | 国产成人精品综合久久久久99 | 91在线观 | 天堂久色 | 久久免费视频这里只有精品 | 五月天最新网址 | 日本精品久久久一区二区三区 | a视频在线观看免费 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久国产精品视频观看 | 国产在线va| 99热99热| 欧美极品xxxxx | 国产高清不卡av | 欧美一区二区三区在线看 | 欧美91精品国产自产 | 99精彩视频在线观看免费 | 久久女同性恋中文字幕 | 中文字幕在线播放第一页 | 99视频精品免费观看, | 天天综合天天综合 | 最近中文字幕久久 | 日韩av片无码一区二区不卡电影 | 国产精品久久 | 美女久久网站 | 五月天六月丁香 | 国产乱对白刺激视频在线观看女王 | 91手机在线看片 | 日韩伦理一区二区三区av在线 | 香蕉视频在线网站 | 久草在线视频看看 | 丁香久久激情 | 国产中文伊人 | 日日夜夜噜 | 日本精品久久久一区二区三区 | 国产精品久久久久久久午夜片 | 亚洲国产精品人久久电影 | 天天操比| 久久公开视频 | 国产无吗一区二区三区在线欢 | 97精品国产一二三产区 | 久热精品国产 | av电影中文| 超碰精品在线观看 | 超级碰碰免费视频 | 天堂在线一区二区三区 | 亚洲综合视频在线 | 中文字幕免费观看全部电影 | 成人免费xxx在线观看 | 久久久高清免费视频 | 欧美在线aa| 亚洲成年人在线播放 | 最近中文字幕第一页 | 久久免费成人网 | 日韩丝袜在线观看 | 天天操夜夜干 | 精品美女在线观看 | 亚洲精品视频在线观看网站 | 久久久久久久久久网站 | 国产视频精品久久 | 天天摸日日摸人人看 | 美女av免费看 | 欧美小视频在线观看 | 99精品毛片| 波多野结衣在线播放一区 | 国产精品18久久久久久久 | 免费国产在线精品 | 久久高视频 | 日日操操操 | 久久综合五月婷婷 | 天天操天天吃 | 国产免费一区二区三区最新6 | 欧美福利精品 | 国产精品网红直播 | 一区二区三区动漫 | 麻豆视频免费在线播放 | 婷婷久月 | 久久av不卡| 麻豆一区二区三区视频 | 免费99精品国产自在在线 | 亚洲精品福利视频 | 日韩黄色影院 | 婷婷色网址 | 四虎在线永久免费观看 | 久久er99热精品一区二区三区 | 欧美一进一出抽搐大尺度视频 | 国产精久久久久久久 | 国产在线观看免费av | 欧美特一级 | 天天色天天综合 | 久久久久久久久久久影院 | 蜜臀久久99精品久久久无需会员 | 国产综合91 | 久久综合视频网 | 亚洲毛片视频 | 婷婷在线五月 | 国产亚洲精品日韩在线tv黄 | 国产小视频网站 | 欧美日韩一区二区在线观看 | 午夜视频在线观看一区二区 | 99精品网站 | av+在线播放在线播放 | 在线成人观看 | 在线观看免费视频 | 丁香国产视频 | 玖玖精品在线 | 91在线精品播放 | 日韩欧美xxx| 热久久电影| 国产黄色精品在线观看 | 国产精品中文字幕在线 | 色七七亚洲影院 | 久久久麻豆精品一区二区 | 精品久久久久久久久中文字幕 | 四虎成人网 | 毛片888| 国产v在线| 视频国产区 | 国产日韩精品一区二区三区在线 | 麻豆影视在线免费观看 | 国产色网 | 亚洲一区二区麻豆 | 欧美日韩精品在线观看 | 免费观看黄色12片一级视频 | 九九精品视频在线观看 | 五月婷婷一区二区三区 | 免费网站v | 国产精品一区免费在线观看 | 日韩在线资源 | 亚洲精品午夜久久久久久久 | 热久在线 | 天堂在线一区 | 国产成人一区二区三区影院在线 | 色永久免费视频 | 色婷婷一区 | 二区三区毛片 | 日韩在线视频二区 | 99视频国产精品 | 99久久精品电影 | 午夜影视一区 | 亚洲专区在线视频 | 日本动漫做毛片一区二区 | 亚洲天天做 | 免费又黄又爽 | 久久久久99精品成人片三人毛片 | 国产另类xxxxhd高清 | 久久综合色婷婷 | 操高跟美女| 成人欧美亚洲 | 97在线免费| 天天操天天摸天天爽 | 欧美一级片免费在线观看 | av黄色影院 | 精品久久视频 | 99久久9| 日韩理论在线视频 | 欧美地下肉体性派对 | 日韩免费不卡av | 久久久久激情电影 | 日韩免费视频一区二区 | 二区中文字幕 | 国产高清久久久 | 国产五月色婷婷六月丁香视频 | 综合激情婷婷 | 爱情影院aqdy鲁丝片二区 | 久久国产午夜精品理论片最新版本 | 久草在线观看资源 | 国产精品12345 | 2020天天干夜夜爽 | 91九色porny蝌蚪视频 | 九九在线视频免费观看 | 夜夜视频 | 亚洲三级在线播放 | 亚洲成a人片77777潘金莲 | 深夜福利视频在线观看 | 亚洲一区免费在线 | 午夜av一区| 精品视频在线看 | 激情久久久久久久久久久久久久久久 | 国产黄色av | 久久国产乱 | av高清在线观看 | 亚洲一区二区三区四区精品 | av免费看网站 | 国产精品亚洲视频 | 亚洲精品美女久久 | av在线专区 | 天堂在线视频免费观看 | 一区二区三区四区五区在线视频 | 日韩性片 | 国产成人久久精品77777 | 超碰在线人人草 | 91麻豆传媒 | 亚洲欧美在线观看视频 | 免费精品久久久 | av丝袜制服 | 中文字幕色在线视频 | 中文字幕在线视频网站 | 91视频久久久 | 天天草天天 | 最近乱久中文字幕 | 亚洲国产精品视频在线观看 | 国产精品色婷婷视频 | 成年在线观看 | 成年人视频在线免费播放 | 日韩精品资源 | 国内精品久久久久久久久久久 | 久久久久久久久久毛片 | 日韩在线不卡视频 | 麻豆传媒电影在线观看 | 久久国产欧美日韩精品 | 草久草久 | 国产91电影在线观看 | 久久一区二区三区超碰国产精品 | 免费午夜视频在线观看 | 麻豆va一区二区三区久久浪 | 免费亚洲视频在线观看 | 在线观看一区 | 激情开心网站 | 亚洲精品国产精品国自产观看浪潮 | 日韩欧美国产激情在线播放 | 一级a性色生活片久久毛片波多野 | 久久久久免费精品视频 | 黄色小网站在线 | 91精品国产92久久久久 | 一级黄色片在线免费观看 | 亚洲伊人色 | 亚洲日日日 | 国产精品嫩草影视久久久 | 亚洲精品女人 | 夜夜躁狠狠躁日日躁视频黑人 | 日韩在线观看视频网站 | 国产美女免费 | 91桃色在线免费观看 | 91精品免费在线 | 99热这里只有精品免费 | 国产午夜精品免费一区二区三区视频 | 国产又粗又猛又色又黄视频 | 中文字幕一区二 | 超碰人人舔 | 97av影院| 欧美精品二区 | 亚洲精品中文字幕视频 | 91豆花在线观看 | 成人a免费 | 午夜视频在线观看一区二区三区 | 国产一级黄色片免费看 | 欧美精品少妇xxxxx喷水 | 国产精品一区电影 | 综合五月婷婷 | 最新精品视频在线 | 国产日韩视频在线播放 | 色亚洲网 | 精品黄色片| 亚洲情婷婷 | 中文在线免费视频 | 国产在线不卡一区 | 色视频国产直接看 | 人人射| 欧美做受高潮1 | 开心色停停| 国产免费人成xvideos视频 | 精品久久久久久久久久久久久 | 欧美一级片免费观看 | 国产亚洲视频在线观看 | 亚洲一区二区麻豆 | 97理论片 | 四虎最新域名 | 中文字幕日韩av | 中文字幕a在线 | av888.com| 免费视频二区 | 狠狠狠狠狠狠操 | 成人网中文字幕 | 麻豆一区二区三区视频 | 国产一级特黄电影 | 日韩免费在线观看 | 国产精品99久久久久久久久 | 一区二区三区四区五区在线 | 国产精品久久在线观看 | 99国产精品久久久久老师 | 久久久www免费电影网 | 久久国产综合视频 | 日韩精品2区 | 天天射天天舔天天干 | 日韩一级成人av | 国产免费中文字幕 | 成人免费视频播放 | 国产精品1区2区在线观看 | 91av手机在线观看 | 亚洲夜夜网 | 亚洲 欧美变态 另类 综合 | 免费a一级| 伊人丁香 | 亚洲午夜精品在线观看 | 久久综合亚洲鲁鲁五月久久 | 久久久久成人精品 | 99久久久久久 | 中文字幕在线观看视频一区 | 天天爽天天爽夜夜爽 | 久久中文欧美 | av大全在线观看 | 人成午夜视频 | 在线电影中文字幕 | 又长又大又黑又粗欧美 | 亚洲人成网站精品片在线观看 | 麻豆视频在线免费看 | 国产精品视频资源 | av免费观看网站 | 又色又爽又黄高潮的免费视频 | 国产精品久久嫩一区二区免费 | 国产精品毛片一区二区在线看 | 国精产品一二三线999 | 久久精品视频99 | 亚洲欧美日韩在线一区二区 | 久久精品这里都是精品 | 天天躁日日躁狠狠躁av麻豆 | 99视频精品全部免费 在线 | 中文在线免费看视频 | 久草在线观 | 久久久国产精品网站 | 东方av免费在线观看 | 国产一区免费在线 | 亚洲第一区精品 | 欧美在线视频不卡 | 91热在线| 亚洲动漫在线观看 | 国产精品久久久久久超碰 | 不卡在线一区 | 在线免费观看羞羞视频 | 九九热精品视频在线观看 | 99精品视频一区 | 欧美日韩国产二区三区 | 成人网在线免费视频 | 一区二区三区电影在线播 | 亚洲精品乱码久久久久久写真 | 欧美激情精品久久久久久免费 | 国产成免费视频 | 国产91国语对白在线 | 亚洲精品免费在线播放 | 91久色蝌蚪| 精品你懂的 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 99精品视频免费全部在线 | 中文字幕丝袜 | 成人av片免费观看app下载 | 人人射人人爱 | 欧美日韩国产二区三区 | 成人午夜网址 | 五月婷婷视频在线 | 成人h视频在线 | 99c视频高清免费观看 | 欧美日本三级 | 一级电影免费在线观看 | 中文字幕影视 | 日韩欧美在线观看一区 | 欧美精品xxx | 国产精品日韩高清 | 免费日韩 | 国产一区二区三区视频在线 | 国产高清精品在线观看 | 久久久久国产精品免费网站 | 成人午夜电影在线播放 | 亚洲精品乱码 | 成人a视频片观看免费 | 欧美精品国产综合久久 | 99久久久国产精品 | 97在线观看视频 | 激情文学丁香 | 久久亚洲电影 | 综合天天久久 | av电影av在线 | 亚洲精品国产成人 | av在线免费不卡 | 久久精品123 | 免费av的网站 | 国产精品18久久久久久vr | 日韩免费大片 | 久久久精品影视 | 免费的国产精品 | 91九色综合| 美女在线观看网站 | 久久久精品在线观看 | 国产成人综合在线观看 | 国产精品美女久久久网av | 美女福利视频网 | a在线观看国产 | 中文字幕日本电影 | 在线视频观看你懂的 | 国产手机在线 | 中文字幕你懂的 | 国产一区二区三区网站 | 欧美一区二区免费在线观看 | 黄色免费网站下载 | 91福利区一区二区三区 | 99视频精品 | 成人一级在线 | 丁香婷婷色月天 | 狠狠插狠狠干 | 日韩成人在线一区二区 | 免费久久久久久久 | 丁香花在线视频观看免费 | 在线岛国av | 女人18毛片a级毛片一区二区 | 九九精品视频在线观看 | 91最新在线观看 | 亚州欧美精品 | 五月天久久精品 | 成人免费亚洲 | 久久久久久久久久久免费av | 国内精品视频在线 | 在线看av的网址 | 东方av免费在线观看 | 日韩av一区二区在线 | 国产一区二区在线影院 | 色妞色视频一区二区三区四区 | 国产视频欧美视频 | 久久精品免费观看 | 91色在线观看 | 色偷偷人人澡久久超碰69 | 国产一区二区精 | 国产99视频在线观看 | 日韩理论在线观看 | 日韩电影精品一区 | 日韩一二三在线 | 四虎成人精品永久免费av九九 | 国产精品观看在线亚洲人成网 | 狠狠艹夜夜干 | 成年人电影毛片 | av免费看电影 | 久久99影院 | 精品色999 | 亚洲va欧美va国产va黑人 | 欧美激情视频一区二区三区 | 91亚洲狠狠婷婷综合久久久 | 99久久精品网 | 亚洲国产精品激情在线观看 | 欧美日韩免费在线视频 | 日韩欧美一区二区不卡 | 久久99亚洲网美利坚合众国 | 亚洲乱码久久 | 在线观看v片| 日韩欧美xxx | 色婷婷国产在线 | 国产成人精品电影久久久 | 欧美日韩破处 | 亚洲国产成人精品在线 | 99久久国产免费,99久久国产免费大片 | 色视频国产直接看 | 一区二区视频在线观看免费 | 免费在线观看视频一区 | 中文乱幕日产无线码1区 | 色小说在线 | 91久久久国产精品 | 丁香导航 | 黄网站app在线观看免费视频 | 999免费视频 | 亚洲精品国产精品久久99 | 久草亚洲视频 | 亚洲在线视频网站 | 手机成人av在线 | 久久国内精品99久久6app | 在线观看va | 超碰97在线人人 | 91免费看片黄 | 国产亚洲精品久久网站 | 在线黄av| 天天干天天在线 | 天天爱天天操天天爽 | 精品一区二区三区在线播放 |