免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

C++/Qt俄羅斯方塊課程設計:從數(shù)據(jù)結(jié)構(gòu)到高分答辯全攻略

C++/Qt俄羅斯方塊課程設計:從數(shù)據(jù)結(jié)構(gòu)到高分答辯全攻略 簡介面向C課程設計、期末大作業(yè)與畢業(yè)設計場景的高分項目資源基于C與Qt實現(xiàn)經(jīng)典俄羅斯方塊游戲。代碼注釋完整、模塊劃分清晰包含可運行的Qt工程與項目文檔下載解壓并配置Qt環(huán)境后即可運行適合直接提交或在此基礎上二次開發(fā)。資源共42個文件涵蓋頭文件與源文件、Qt界面相關的ui與json配置、動態(tài)鏈接庫與靜態(tài)庫以及docx項目手冊和txt說明壓縮包約11.87MB。文件層次覆蓋游戲邏輯、界面繪制、構(gòu)建配置與文檔說明其中ui與json負責界面及配置lib、dll等支撐編譯運行docx手冊用于快速了解設計與提交說明。已有316人學習或下載。該項目的突出價值在于以98分獲導師認可完整展示了俄羅斯方塊從游戲狀態(tài)管理、方塊生成與旋轉(zhuǎn)、碰撞檢測、消行計分到界面繪制的全過程。關鍵函數(shù)與算法均配有注釋新手也能跟著代碼梳理實現(xiàn)思路項目文檔則補充設計說明與運行方式為答辯和匯報提供支撐。源碼目錄和文檔命名清晰便于按需查閱對應模塊既可作為學習C與Qt協(xié)同開發(fā)的脫手范例也是課程設計或畢業(yè)設計可快速上手的高分參考模板。1. 選俄羅斯方塊作為 C/QT 大作業(yè)為什么它是高分題庫里的常青樹俄羅斯方塊在 C 課程大作業(yè)里屬于“看著不新鮮、做完不虧”的類型規(guī)則全世界都知道但要把七種方塊、旋轉(zhuǎn)、碰撞、消行、計分、等級加速這些要素寫干凈恰好覆蓋了類設計、數(shù)組與內(nèi)存管理、QT 的信號槽與事件機制。比學生管理系統(tǒng)多一層實時交互比射擊游戲少一堆素材和物理計算工作量通常兩周內(nèi)可控代碼量能控制在 1500 行左右評閱老師也容易看出你的設計思路。這個選題適合既要保成績又想沖優(yōu)的同學代碼不難但設計空間足夠撐起一份高分項目的課程文檔。下面按我自己的落地順序講先數(shù)據(jù)結(jié)構(gòu)再界面渲染再游戲邏輯最后把文檔和答辯一起收尾。2. 先把數(shù)據(jù)結(jié)構(gòu)立住方塊表示、旋轉(zhuǎn)矩陣與碰撞檢測怎么寫2.1 三個類拆清楚Tetromino、Board、GameController 各自只干一件事寫俄羅斯方塊最容易翻車的寫法是把所有變量和函數(shù)全部塞進 MainWindow界面邏輯和游戲邏輯揉成一團。課程設計階段我一般會拆三個純邏輯類加一個界面類分工如下Tetromino描述當前方塊的形狀、朝向和棋盤坐標提供旋轉(zhuǎn)和取格子的接口。Board負責棋盤內(nèi)部用一個二維數(shù)組 grid[ROW][COL] 記錄已落定方塊的顏色編號提供碰撞檢測、落定合并和消行接口。GameController持有 Board、當前方塊、下一塊、分數(shù)和等級實現(xiàn)下落、左右移動、旋轉(zhuǎn)、硬降和游戲狀態(tài)切換。這個拆分在評閱時非常加分因為老師幾乎必問“如果我要加一種五格方塊你要改哪些地方”答案是只改 TetrominoBoard 和 GameController 都不動。這就是分層設計的現(xiàn)場演示比答辯時背概念管用得多。先看 Tetromino 的頭文件// tetromino.h —— 七種方塊統(tǒng)一用 4x4 模板存儲 #ifndef TETROMINO_H #define TETROMINO_H #include QVector #include QPoint class Tetromino { public: enum Shape { NONE, I, O, T, S, Z, J, L }; explicit Tetromino(Shape s); void rotate(); // 順時針旋轉(zhuǎn) 90 度 void setPos(int x, int y); // 方塊左上角在棋盤上的坐標 QPoint pos() const { return m_pos; } QVectorQPoint cells() const; // 返回模板中非空格子的相對坐標 Shape shape() const { return m_shape; } private: Shape m_shape; int m_matrix[4][4]; // 1 表示該格有方塊 QPoint m_pos; }; #endif這里用 QVector 和 QPoint 是因為后面要直接把這些坐標映射到 QPainter 繪制省一次轉(zhuǎn)換。如果你想讓文檔更偏“純 C”換成 std::arraystd::arrayint,4,4 和自帶的坐標結(jié)構(gòu)也一樣不影響其他類。構(gòu)造時每種形狀自己填充 m_matrix比如 T 字塊在模板中的形態(tài)是 (1,0)、(0,1)、(1,1)、(2,1) 四個格子為 1。用 4x4 而不是直接存坐標數(shù)組是為了把旋轉(zhuǎn)變成純矩陣運算不引入額外算法。2.2 用 4×4 模板表示七種方塊旋轉(zhuǎn)就是“轉(zhuǎn)置 水平翻轉(zhuǎn)”矩陣旋轉(zhuǎn)是這里最值得寫在文檔里的細節(jié)。順時針旋轉(zhuǎn) 90 度等價于先對矩陣做轉(zhuǎn)置再把每一行左右翻轉(zhuǎn)寫成代碼只有四行// tetromino.cpp —— 旋轉(zhuǎn)矩陣的核心邏輯 #include tetromino.h #include cstring void Tetromino::rotate() { if (m_shape O) return; // 正方形的 O 方塊旋轉(zhuǎn)后不變直接跳過 int temp[4][4]; std::memset(temp, 0, sizeof(temp)); for (int i 0; i 4; i) { for (int j 0; j 4; j) { temp[i][3 - j] m_matrix[j][i]; // 轉(zhuǎn)置后水平翻轉(zhuǎn) } } std::memcpy(m_matrix, temp, sizeof(m_matrix)); }新手最容易寫錯的是下標寫成 temp[3 - i][j] 或者 temp[j][i] 不帶翻轉(zhuǎn)結(jié)果旋轉(zhuǎn)幾次后圖形發(fā)生漂移。驗證方法很簡單拿一個 I 方塊在紙上畫一遍旋轉(zhuǎn)后應該是橫躺狀態(tài)而且旋轉(zhuǎn)中心不偏移。這也是用 4x4 而不是 3x3 的原因3x3 矩陣放不下水平的 I 方塊4 格強行表示會造成旋轉(zhuǎn)中心偏移S、Z 方塊轉(zhuǎn)起來也會有錯位感。O 方塊在構(gòu)造函數(shù)里就把矩陣填成 2x2 的田字放在 4x4 的左上角旋轉(zhuǎn)時直接 return避免無意義的矩陣拷貝。文檔里寫清楚這個特判評閱老師會認為你考慮過邊界情況。2.3 碰撞檢測的“先放后查”策略為什么比逐格判斷更不容易出 bug碰撞檢測是整個游戲正確性的地基。我見過不少實現(xiàn)給每個方塊維護四條邊移動時逐邊判斷是否出界旋轉(zhuǎn)后再重新計算邊界表。這個思路的問題是方塊狀態(tài)一變邊界數(shù)據(jù)就要同步多維護一份狀態(tài)就多一個翻車點。在 10 列 20 行的固定棋盤上最簡單可靠的是“先放后查”把方塊挪到目標位置然后統(tǒng)一檢查越界和重疊。// board.cpp —— 碰撞檢測先嘗試放置沖突則拒絕該動作 bool Board::canPlace(const Tetromino t, int newX, int newY) const { const QVectorQPoint cells t.cells(); for (const QPoint c : cells) { int x newX c.x(); int y newY c.y(); if (x 0 || x COLS) return false; // 超出左右邊界 if (y ROWS) return false; // 超出底部 if (y 0 m_grid[y][x] ! 0) return false; // 與已固定方塊重疊 // 注意y 0 時允許存在 } return true; }m_grid 的行索引是 y列索引是 x存的不是布爾值而是顏色編號這樣后面繪制和消行都能復用。canPlace 只做查詢不修改數(shù)據(jù)左移、右移、下落、旋轉(zhuǎn)、硬降全部調(diào)它判定邏輯只有一份。y 0 放行是關鍵細節(jié)方塊生成時有一部分可能還在棋盤上方之外如果把 y 0 也判成碰撞開局第一塊就放不下來。這個細節(jié)容易被忽略我在測試時踩過屏幕上方明明還有空間方塊卻卡在半空。有了 canPlace 之后落定和合并的邏輯就順了。GameController 的 tick 是整個游戲的主循環(huán)核心// gamecontroller.cpp —— 每次定時器觸發(fā)執(zhí)行一次下落 void GameController::tick() { if (m_state ! PLAYING) return; if (canMove(0, 1)) { m_current.setPos(m_current.pos().x(), m_current.pos().y() 1); } else { merge(); // 當前方塊寫入棋盤 int n board.clearLines(); if (n 0) linesCleared(n); spawnNext(); // 從預覽隊列取出下一塊 if (!canPlace(m_current, m_current.pos().x(), m_current.pos().y())) gameOver(); // 新方塊放不下判負 } }canMove 內(nèi)部就是調(diào) board.canPlace而 spawnNext 里同樣用 canPlace 判斷游戲是否結(jié)束也就是“生成時預判”的結(jié)束方式。這樣整個下落流程的所有動作都收口到同一個碰撞函數(shù)邏輯只有一條路徑排查問題時只需要看 canPlace 一個函數(shù)。3. 用 QT Widgets 把棋盤畫出來QPainter、QTimer 與鍵盤事件三步走3.1 工程文件與源碼清單一個 QWidget 項目需要哪幾個文件界面層我用 QMainWindow 作為主窗口中央放一個自繪的 GameWidget右側(cè)放信息面板。新建項目時在 Qt Creator 里直接選 QWidget Application會自動生成 .pro 或 CMakeLists。這里建議裝 Qt 5.15.2 LTS而不是追最新版原因很現(xiàn)實老師機器上的 QT 版本大概率是 5.x網(wǎng)上能搜到的答案也集中在 5.15遇到問題好查。課程設計不推薦用 VSCode 配置 C 環(huán)境來寫 QTCMake 加套件配置會吃掉你一大半時間老老實實用 Qt Creator 帶 qmake 的模板五分鐘就能把空項目跑起來。源碼文件清單大致如下文件職責關鍵成員main.cpp創(chuàng)建 QApplication 和主窗口無gamewidget.h/.cpp繪制棋盤、接收按鍵、驅(qū)動定時器paintEvent、keyPressEvent、QTimerboard.h/.cpp棋盤數(shù)據(jù)、碰撞檢測、消行grid、canPlace、clearLinestetromino.h/.cpp方塊形狀與旋轉(zhuǎn)matrix、rotate、cellsgamecontroller.h/.cpp游戲規(guī)則、分數(shù)、等級、狀態(tài)tick、move、rotate、hardDropGameWidget 頭文件的骨架長這樣// gamewidget.h —— 界面層只做三件事繪制、收按鍵、驅(qū)動定時器 #ifndef GAMEWIDGET_H #define GAMEWIDGET_H #include QWidget #include QTimer #include gamecontroller.h class GameWidget : public QWidget { Q_OBJECT public: explicit GameWidget(QWidget *parent nullptr); void start(); // 開始游戲并啟動定時器 protected: void paintEvent(QPaintEvent *e) override; void keyPressEvent(QKeyEvent *e) override; private: GameController m_game; QTimer m_timer; }; #endif注意 m_timer 這里作為成員對象而不是指針省去手動 delete。QTimer 的 timeout 信號用 lambda 槽連接可以少在頭文件里聲明一個槽函數(shù)課程代碼也更緊湊。3.2 paintEvent 繪制棋盤與方塊像素坐標換算的 CELL_SIZE 參數(shù)繪制只寫在 paintEvent 里這是 QT 的規(guī)矩不要在別的地方直接畫。每次游戲狀態(tài)變化后調(diào)用 update()QT 會合并重繪請求并在合適的時機觸發(fā) paintEvent。繪制順序是背景、已固定方塊、當前活動方塊一層層往上疊。// gamewidget.cpp —— paintEvent 是唯一繪制入口 void GameWidget::paintEvent(QPaintEvent *) { QPainter painter(this); const int CELL 30; // 每格 30x30 像素 const int ROWS 20, COLS 10; // 1. 畫背景 painter.fillRect(0, 0, COLS * CELL, ROWS * CELL, QColor(0x1e, 0x1e, 0x1e)); // 2. 畫已固定方塊 for (int r 0; r ROWS; r) { for (int c 0; c COLS; c) { int id m_game.board().cell(r, c); if (id ! 0) { painter.fillRect(c * CELL, r * CELL, CELL - 1, CELL - 1, m_game.colorOf(id)); } } } // 3. 畫當前活動方塊 Tetromino cur m_game.current(); QColor clr m_game.colorOf(cur.shape()); for (const QPoint p : cur.cells()) { int px (cur.pos().x() p.x()) * CELL; int py (cur.pos().y() p.y()) * CELL; if (py 0) // 頂部以上的部分不畫 painter.fillRect(px, py, CELL - 1, CELL - 1, clr); } }CELL_SIZE 的選取是個體驗問題10 列 20 行的棋盤用 30 像素畫布就是 300x600右側(cè)再留 150 像素放信息和下一個方塊預覽主窗口固定成 480x640 比較協(xié)調(diào)。用 24 會讓窗口顯得局促演示時分數(shù)看不清用 40 又太大筆記本屏幕上放不下。格子填充減 1 像素是為了自然露出背景色當格線不額外畫線的省力做法比 drawLine 畫 11 條豎線簡單且不會出現(xiàn) 1 像素錯位。3.3 QTimer 驅(qū)動下落與 keyPressEvent 響應按鍵主循環(huán)怎么寫游戲主循環(huán)不用 while(true)那會卡死 QT 的事件循環(huán)。正確姿勢是 QTimer 周期性觸發(fā)每次觸發(fā)做一次下落邏輯然后調(diào)用 update() 請求重繪。// gamewidget.cpp —— 啟動游戲、連接定時器和鍵盤 void GameWidget::start() { setFocusPolicy(Qt::StrongFocus); // 必須設置否則鍵盤事件進不來 connect(m_timer, QTimer::timeout, this, [this]() { m_game.tick(); update(); }); m_timer.start(m_game.interval()); // interval 由等級計算得出 } void GameWidget::keyPressEvent(QKeyEvent *e) { switch (e-key()) { case Qt::Key_Left: m_game.move(-1); break; case Qt::Key_Right: m_game.move(1); break; case Qt::Key_Down: m_game.move(0, 1); break; case Qt::Key_Up: m_game.rotate(); break; case Qt::Key_Space: m_game.hardDrop(); break; case Qt::Key_P: m_game.togglePause(); break; default: QWidget::keyPressEvent(e); return; } update(); // 每次按鍵后立即重繪 }兩個細節(jié)容易踩坑。第一setFocusPolicy 不寫的話鍵盤事件永遠進不了這個控件程序跑起來鼠標點哪都沒反應這是 QT 新手最常見的黑匣子之一。第二每次按鍵后都要調(diào)用 update()否則邏輯已經(jīng)變了但畫面還停在上一幀。定時器那邊也一樣tick 之后緊跟 update()缺了它你會看到方塊只在消行那一瞬間跳變其他操作都像沒響應。QTimer 的 interval 可以在運行中修改等級上升后直接 m_timer.start(newInterval) 就會重設定時周期。不要在 tick 里用 QThread::sleep 或 std::this_thread::sleep_for 模擬減速那是把整個界面線程睡死窗口拖動都會卡成幻燈片。3.4 右側(cè)信息面板與預覽區(qū)布局代碼比 Qt Designer 拖拽更快信息面板只有三個標簽加一個預覽畫布用代碼布局比開 Qt Designer 來回拖快也更好控制。預覽區(qū)可以復用 GameWidget 的繪制思路單獨做一個 PreviewWidget只畫下一塊// previewwidget.cpp —— 只畫一個方塊的迷你畫布 void PreviewWidget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.fillRect(rect(), QColor(0x12, 0x12, 0x12)); Tetromino next m_game.next(); QColor clr m_game.colorOf(next.shape()); for (const QPoint p : next.cells()) { int px (p.x() 1) * 20; // 4x4 模板在 4*20 的畫布上居中 int py (p.y() 1) * 20; painter.fillRect(px, py, 18, 18, clr); } }PreviewWidget 同樣要暴露一個 updatePreview() 接口在 GameController 的 spawnNext 之后由外部調(diào)用。這個類看起來多余但它把“預覽下一塊”從主繪制里拆了出去新增一個“未來五塊預覽”時不用動 GameWidget。主窗口的布局用 QHBoxLayout 放 GameWidget 和右側(cè) QVBoxLayout右側(cè)依次放分數(shù)標簽、等級標簽、PreviewWidget最后 addStretch 把控件頂?shù)缴戏健4翱?setFixedSize 禁止拉伸免得用戶把窗口拉變形后棋盤比例失調(diào)。4. 游戲邏輯細節(jié)消行判定、計分規(guī)則與等級加速的聯(lián)動4.1 從底部逐行掃描消行memcpy 整行下移的寫法和 y 陷阱消行邏輯寫在 Board 里常見做法是每次方塊落定后從最后一行往上掃遇到滿行就把它上面的所有行整體下移一行。代碼本身很短坑都在循環(huán)下標上// board.cpp —— 消行并返回消掉的函數(shù) int Board::clearLines() { int lines 0; for (int y ROWS - 1; y 0; --y) { bool full true; for (int x 0; x COLS; x) { if (m_grid[y][x] 0) { full false; break; } } if (!full) continue; // 當前行滿上方所有行下移一行頂部補空行 for (int yy y; yy 0; --yy) { std::memcpy(m_grid[yy], m_grid[yy - 1], sizeof(m_grid[0])); } std::memset(m_grid[0], 0, sizeof(m_grid[0])); y; // 下移后當前行換成了新內(nèi)容需要重新檢查 lines; } return lines; }那個 y 是容易看漏的細節(jié)。整行下移后原來的 y 行現(xiàn)在裝的是 y-1 行的內(nèi)容這一行可能也是滿的所以循環(huán)要回退一格重新檢查。漏掉 y 的后果是連續(xù)兩行同時滿時只消掉下面的那一行上面的滿行殘留測試同學常把這當成“消行 bug”其實是循環(huán)下標沒回退。從底部往上掃比從頂部往底部掃省事因為消掉底行后上方的行位置不變不需要額外處理。用 memcpy 整行拷貝比自己寫 for 循環(huán)逐列賦值快而且代碼少但要注意 sizeof(m_grid[0]) 必須等于一行數(shù)組的字節(jié)數(shù)這里因為 m_grid 是 int grid[ROWS][COLS]sizeof(m_grid[0]) 是 COLS 個 int 的大小正好對應。4.2 計分與等級行列數(shù)與下落速度 interval 怎么聯(lián)動計分規(guī)則直接參照經(jīng)典任天堂規(guī)則寫在文檔里既規(guī)范又好編碼。規(guī)則如下消行數(shù)基礎分倍率1100當前等級2300當前等級3500當前等級4800當前等級也就是單次消兩行得 300 乘以當前等級而不是 100 加 100這個區(qū)分讓玩家更愿意堆四行一起消也是答辯時可以講的一個設計點。等級按總消行數(shù)每 10 行升一級下落間隔從 500 毫秒起步每級減 30 毫秒最低 80 毫秒防止后期快到人眼跟不上// gamecontroller.cpp —— 計分和等級聯(lián)動 void GameController::linesCleared(int n) { static const int scoreTable[5] {0, 100, 300, 500, 800}; m_score scoreTable[n] * m_level; m_lines n; if (m_lines / 10 m_level - 1) { m_level; m_interval std::max(80, 500 - (m_level - 1) * 30); emit intervalChanged(m_interval); // 通知界面層重設定時器 } }等級變化后GameWidget 要響應 intervalChanged 信號并重新 m_timer.start。用信號而不是界面層輪詢 m_game.interval()是為了讓邏輯層不感知界面保持分層。很多同學在這里犯的錯是把 interval 寫死等級升了速度不變答辯被問“加速在哪”時答不上來。4.3 下一個方塊預覽用簡單成員還是隊列兩種寫法的取舍預告下一塊是俄羅斯方塊的標配實現(xiàn)上有兩種常見做法。一是 GameController 持有一個 Tetromino m_next落定后 current m_nextm_next 再隨機生成新形狀。二是維護一個 QQueue 每次從隊頭取一塊隊尾補新塊。課程設計階段我推薦第一種理由有三個代碼少一半不需要處理隊列為空的情況隨機性對一個課設來說完全夠用。只有當你計劃做“7-bag”隨機算法把七種方塊各放一次打亂依次出塊時才需要第二種配合一個固定大小的數(shù)組。生成隨機形狀時用 QT 的 QRandomGenerator::global()-bounded(7) 或者 C11 的 std::mt19937這兩種都是正經(jīng)的均勻分布隨機數(shù)能寫進文檔。退一步用 rand() % 7 雖然也能跑但答辯被問到隨機數(shù)質(zhì)量時不太好解釋。spawnNext 的代碼// gamecontroller.cpp —— 從預覽區(qū)取出新方塊 void GameController::spawnNext() { m_current m_next; m_next Tetromino(static_castTetromino::Shape( QRandomGenerator::global()-bounded(7) 1)); m_current.setPos(SPAWN_X, SPAWN_Y); // 例如 (3, 0)居中偏上 }SPAWN_X 取 (COLS - 4) / 2 附近讓方塊大致居中SPAWN_Y 取 0 或 -1 都可以如果取 -1方塊會從棋盤頂部上方一格滑下來視覺上更順滑且恰好利用 canPlace 對 y 0 放行的特性。4.4 游戲結(jié)束判定放在哪兩個時機生成時預判還是落定后檢查游戲結(jié)束的判定時機有兩個選擇。一個是在落定合并后看棋盤是否超出頂部另一個是在生成新方塊時看初始位置是否放得下。我推薦后者也就是 spawnNext 之后立刻檢查// gamecontroller.cpp —— 新方塊無法落位則結(jié)束 void GameController::spawnNext() { // ... 設置 m_current 和 m_next ... if (!board.canPlace(m_current, m_current.pos().x(), m_current.pos().y())) { m_state OVER; emit gameOver(m_score); } }這比落定后再檢查更早暴露問題而且不需要額外維護“最高行溢出”這種狀態(tài)。界面層收到 gameOver 信號后彈一個 QMessageBox顯示分數(shù)并詢問是否重開。注意 gameOver 信號發(fā)出后定時器要 stop否則 tick 還會繼續(xù)跑在 OVER 狀態(tài)下雖然 tick 里有一層防護但停止定時器能省 CPU 也讓邏輯更干凈。忘記停止定時器你會看到結(jié)束后方塊還在往下落這是很多人忽略的收尾細節(jié)。5. 高分項目避坑指南QT 環(huán)境、焦點事件與重繪卡頓的經(jīng)典事故5.1 平臺插件報錯qt.qpa.plugin 找不到 windows 或 linuxfb 平臺插件現(xiàn)象程序編譯通過雙擊 exe 或命令行運行時直接崩潰終端輸出一行類似 qt.qpa.plugin: Could not find the Qt platform plugin windows in 的報錯后面還跟著“已終止”或段錯誤。原因QT 程序運行時需要從 plugins 目錄加載平臺插件可執(zhí)行文件拷到別的路徑后找不到同目錄下的 platforms 文件夾或者系統(tǒng) PATH 里指向的 QT 安裝路徑和編譯時用的不是同一個。解決課程設計階段在 Qt Creator 里直接運行就行不要折騰綠色版。需要提交獨立可執(zhí)行文件時用 QT 自帶的 windeployqt 工具把依賴 DLL 和 plugins 目錄拷到 exe 旁邊一句命令搞定。Linux 下如果報的是 linuxfb 找不到多半是嵌入式交叉編譯環(huán)境的QT_QPA_PLATFORM設了不被支持的平臺檢查環(huán)境變量即可。成熟的老師看課設都在你筆記本上跑不用追求單文件綠色版那反而容易翻車。5.2 版本混用報錯cannot mix incompatible qt library (version ex50601)現(xiàn)象編譯鏈接全過運行時彈窗或終端報 Fatal: cannot mix incompatible Qt library (version 0x50601) with this library version 0x50a01程序直接退出。這種報錯在裝了多個 QT 版本的機器上非常常見。原因鏈接器找到的是 5.6.1 的頭文件和庫而運行時加載的 DLL 是 5.10.1 的版本對不上。通常是系統(tǒng)的 QT 路徑、Qt Creator 配置的 Kit、以及編譯器的鏈接搜索路徑三者不一致導致的比如你之前手動裝過某個舊版 QT環(huán)境變量里殘留 qmake 路徑VSCode 配置 C 環(huán)境時又指到了另一邊。解決打開 Qt Creator 的“工具 - 選項 - Kits - Qt Versions”把用不到的版本路徑全部移除只保留 5.15.2 的 qmake。項目構(gòu)建目錄建議刪掉重新 qmake 一次避免 Makefile 里殘留舊路徑。如果你確實在 VSCode 里配過 C 環(huán)境那個 QT 路徑和 Qt Creator 通常不是同一套兩者不要交叉使用。我的習慣是課程設計期間只開 Qt Creator見到這個報錯第一時間查 Kit而不是去重裝 QT。5.3 按鍵沒反應setFocusPolicy 與焦點丟失的那點事現(xiàn)象界面能正常顯示鼠標點按鈕有響應方向鍵、空格鍵怎么按都沒反應游戲像死了一樣。原因QWidget 默認不接受鍵盤焦點keyPressEvent 只有在控件獲得焦點時才會被調(diào)用。窗口剛顯示時焦點可能落在某個按鈕或者沒有焦點控件上按鍵事件被分發(fā)給焦點對象而不是你的 GameWidget。解決在 GameWidget 構(gòu)造函數(shù)里加一行 setFocusPolicy(Qt::StrongFocus)讓這個控件可以用鍵盤和 Tab 獲取焦點。如果界面上有 QPushButton 或 QLineEdit點擊它們之后焦點會轉(zhuǎn)移此時繼續(xù)按方向鍵就失靈。處理辦法是對按鈕調(diào)用 setFocusPolicy(Qt::NoFocus)或者重寫整個主窗口的 eventFilter 統(tǒng)一攔截鍵盤事件再轉(zhuǎn)給 GameWidget后者更徹底但課設代碼里用 NoFocus 就夠。這個坑一流出現(xiàn)查代碼半小時查不出來其實就是少寫了一行。5.4 界面閃爍與掉幀別在 timer 里 new QPainter統(tǒng)一用 update()現(xiàn)象方塊移動時窗口閃爍或者移動一頓一頓不跟手消行瞬間尤其明顯。原因把繪制代碼寫在了定時器回調(diào)或者按鍵處理函數(shù)里在事件循環(huán)外直接往窗口上畫東西系統(tǒng)在下一幀重繪時又把你的繪制覆蓋掉造成閃爍。另一種情況是邏輯層用了 sleep 或大量拷貝導致事件循環(huán)卡頓update() 延遲到很晚才合并觸發(fā)。解決所有繪制統(tǒng)一收進 paintEvent邏輯變化只調(diào) update()。QT 會合并同一次事件循環(huán)里的多個 update()所以按鍵加定時器連續(xù)觸發(fā) update 不會造成額外開銷不用擔心性能。不要在 tick 里做耗時的全棋盤掃描消行時只處理有變化的部分或至少把 clearLines 的實現(xiàn)保持為 O(ROWS*COLS)這個量級完全扛得住。如果 QPainter 開了抗鋸齒后覺得卡把 painter.setRenderHint(QPainter::Antialiasing) 關掉這里畫的是矩形抗鋸齒不僅沒用還拖慢速度。5.5 崩潰在 delete 上QT 父子對象機制與棧對象不要混用現(xiàn)象游戲正常運行退出程序時崩潰報 double free 或析構(gòu)相關斷言有時候是 CtrlC 結(jié)束沒反應關窗口才炸。原因QT 的 QObject 父子機制規(guī)定父對象析構(gòu)時會自動銷毀所有子對象。你把一個控件 new 出來并且傳了 parent之后又手動 delete 它就造成二次釋放。反過來在棧上創(chuàng)建了 QWidget 還給別人當了 parent棧對象析構(gòu)時父對象可能已經(jīng)先析構(gòu)了觸發(fā)懸垂指針。解決凡是構(gòu)造函數(shù)里傳了 parent 的對象一律不手動 delete交給父對象統(tǒng)一管理。如果需要提前銷毀用 deleteLater()它會在事件循環(huán)安全點執(zhí)行刪除。GameWidget 里的 QTimer m_timer 是成員對象不是 new 出來的析構(gòu)時隨 GameWidget 一起銷毀不涉及這個問題。這一條寫進文檔的“遇到的問題”章節(jié)算是展示你理解 QT 內(nèi)存管理比抄一段智能指針的八股答得實在。6. 項目文檔與答辯把“高分項目”的分數(shù)落在紙面上6.1 一份課程設計文檔的骨架需求分析、概要設計、測試記錄怎么寫源代碼寫得再好文檔拿不出手還是會被扣分。課程設計文檔的標準結(jié)構(gòu)是需求分析、概要設計、詳細設計、測試報告、心得五部分其中概要設計和測試報告占的分數(shù)最多。概要設計里放一張手繪的類圖就夠畫出 Tetromino、Board、GameController、GameWidget 四個類的關系標注關鍵的 public 接口比復制十頁代碼有用。測試報告別只寫“測試通過”把幾個典型場景列出來方塊到邊界能否停止、旋轉(zhuǎn)后碰墻能否拒絕、連續(xù)消四行得分是否正確、游戲結(jié)束后按鍵是否無響應每條配一張運行截圖。截圖記得把分數(shù)和等級一起截進去評閱老師會看分數(shù)是否和消行數(shù)對得上。6.2 答辯講這三個亮點分層架構(gòu)、碰撞收口、擴展性答辯時不用面面俱到講三個點足夠。第一講分層界面類不碰游戲數(shù)據(jù)控制器不碰繪制代碼老師問“加功能要改哪里”時你能明確指出改哪個類。第二講碰撞檢測收口到 canPlace 的取舍所有移動、旋轉(zhuǎn)、硬降共用同一個判定函數(shù)而不是每個動作各寫一堆邊界判斷。第三講擴展性加新方塊只改 Tetromino加 7-bag 隨機只用動 spawnNext加存檔只要在 GameController 里序列化分數(shù)和棋盤。這三句話比背概念更能讓老師相信項目是你自己寫的。我當年做這個題翻車就翻在 update() 上邏輯全對但界面紋絲不動查了整整一個晚上最后發(fā)現(xiàn)只是忘了在按鍵后請求重繪。“改代碼不如先懷疑重繪沒觸發(fā)”這道坎邁過去之后我對 QT 的繪圖機制算是徹底通了。這個項目的完整實現(xiàn)值得你親手敲一遍別直接抄源碼自己把 canPlace 和 clearLines 寫對一次收獲比跑通十遍別人的代碼都大。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
影音先锋一区| 色五月大香蕉| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 五月婷婷九九热| 99婷婷综合| 天天 青草 丝袜制服 在线| 色优久久| 五月丁香中文字幕| 99日本精品视频热| 国产美女无遮挡裸体毛片A片| 丁香婷婷五月激情| 五月天社区| 丁香花五月天激情| 三级毛片7979| 久久精品一区二区三区四区| 久色视频| 亚洲激情校园| 国产婷婷综合| 中文字幕人妻熟女在线| 亚洲中文字幕av| 婷婷开心深爱五月天| 丁香五月电影| 9久热这里只有精品| 五月丁香婷婷激情图片| 欧美综合五月天婷婷tin| www激情网| 色婷婷丁香综合中文字幕| 99亚洲视频| 伊人丁香婷婷东京| 日本一级黄色电影| 嫩草视频观看| 久久久全国免费视频| 欧美色性色好| 先锋资源996| 亚洲AV久久久久久久久久久久久久久久| 婷婷丁香十月| 插插五月天| 久久婷婷东京热大香樵| 久久精品99国产精品日本| 97婷婷五月| 超碰97免费在线| 国产激情综合| 婷婷性爱五月天| 这里都是精品99| 九月丁香久久网| 久久久久久人妻| 综合色色色色色色| 婷婷玉月丁香五月在线视频| 国产热精品| 久久久久久久97| 久久一级免费黄色片| 一级性爱视频| 色五月激情综合| 色五月婷婷少妇人妻| 婷婷丁香五月综合久久| 久久机热探花| 丁香五月电影| 五月丁香亚洲校园欧美| 婷婷97碰碰| 超级碰碰一区| 国产欧美大香蕉一区| 婷婷香蕉香| 99热人人操人人操| 色色免费网站| 久久机热这里只有| 91久久五月天| 亚洲精品视频在线| 成人丁香五月| 香蕉AV777XXX色综合一区| 久热黄色| 五月天丁香综合| 精品久久艹| 五月天激情无码| 天天日,天天干,天天操| 夜夜夜夜夜操| 微拍92| 天天爽天天| 人人爱操| 五月婷婷激情性爱| 六月丁香婷婷在线波多 | 成人做爰高潮A片免费视频| 日本不卡一区二区三区| 亚洲宗合激情| 黄色高清无码| 久久激情视频99| 天天色综合色| 五月天久久网站| 五月天激情久久| 北京熟妇搡BBBB搡BBBB| 国产免费一区二区三州老师F1F1| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 99色综合| 婷婷五月成人| 无码一级片| 99爱爱| 91人人爽狠狠狠| 狠狠色丁婷婷日日,伊人激情综合网| 婷婷丁香色五月亚洲| 欧美va视频不用播放器的va视频网| 天天天天天日| 天天做天天爱天天爽| www.色欲丁香婷婷| 精品国产va久| 色色色色色色网| 99久久婷婷国产综合精品草原| 免费观看欧美成人AA片爱我多深| 亚洲视频在线观看区| 秋霞九九无码| 狠狠色婷婷丁香六月| 色视五月天婷婷| 五月综合777| 五月丁香六月婷婷激情视频在线观看免费 | 丁香5月激情网| 婷婷久久草| 狠狠色丁香| 色婷婷成人久久| 婷婷色一二三区波多野结衣| 婷婷五月天六点丁香五月| 丁香 久久| 婷五月丁香俺| 五月婷人妻| 无码色| 国产99久久久国产精品免费看| 色色综合院| 色婷婷丁香五月天在线视频 | 九九热精品99| 五月天伊人久久久久| 久久99看免费| 99视频激情四射| 亚洲天堂婷婷丁香| 久久五月天色婷婷| 丁香五月 六月婷婷首页| 色久综合| 超碰色热| 欧美va亚洲va| 亚洲天堂久久| 九九日本视频| 狠狠色噜噜狠狠狠888| 国外亚洲成AV人片在线观看 | 狠狠狠狠狠狠草| 丁香五月首页| 婷婷五月综合基地| 青青草原福利在线| 久久婷婷亚洲| 182TV亚洲| 欧美性丁香色色五月天综合爱爱| 大香蕉啪啪网| 久久AV电影| 91Chinese在线| 伊人久热91网| 九九这里精品| 五月丁香久久激情综合| www夜夜| 综合色99| 69er小视频| 成人国产欧美大片一区| 伊人天天色| 激情五月激情综合网| WWW,激情五月天,COM| 国产免费一区二区在线A片视频| 超碰97免费在线| 婷婷综合激情| 国产成人综合网| 9久热在线视频精品| 婷婷激情五月呦呦| 婷婷五月六月丁香| 99啪啪视频| 99ri精品| 开心五月丁香婷婷| 97久久久免费福利网址| 久久99热久久99精品| av一区二区电影免费在线观看| 99热这里只有在线| 99久精品视频| 狠狠狠狠狠狠| 五月激情在线| 婷婷五日b| 日曰躁夜夜躁2026| 激情综合色婷婷啪啪六月天| 国产精品成人网站| 九九99久久| 久久总和99| 色婷婷狠狠| 婷婷五月天777| 亚洲色就是色色色| 操操人人| 人人草人人爱手机视频看看| 1769在线观看欧美国产| 成人在线精品| 色五月婷婷久久爱| 91久女| 很很干天天干| 五月婷婷狠天天色综合| 久久91久久91色欲精品| 激情五月天色播| 狠狠舔| 91919191919久久成人视频| 激情五月视频在线婷婷| 五月婷婷丁香网| 久久婷婷五月天懂色| 99热6这里只有精品6| 超极99精品| 婷激情五月| 丁香五月婷婷综合精品素人| 色婷婷很很丝袜| 超碰97人人操| 丁香五月欧美午夜视频| 五月丁香六月合| 亚洲AV无码影院| 人人摸人人搞| 久久人妻精品| 五月婷色激情五月| 九九这里是免费的视频5| 影音先锋女人AA鲁色资源| 六月丁香婷婷五月| 国产婷婷五月中文字幕高清| 五月婷婷激情综合| www.色婷婷.com| 亚洲亚洲人成综合网络| 91人妻PORNY九色大屁股| 99热这里只有精品亚洲| 99色天堂| 婷婷五月综激情| 激情性爱五月天网页| 天天天操天天天日| 五月丁香婷婷综合激情基地| 狠狠做六月爱婷婷综合aⅴ| 九九久久免费视频44| 日本啪啪天堂| 五月丁香激情四射| 高清无码中文字幕aVDV| 亚洲色色爱| 99久久終合| 久热大香蕉| 久久婷婷五月综合伊人| 玖玖婷婷综合| 人人看人人草人人摸| 激情综合五月天| 五月丁香婷色| 超级碰碰视频无码| 狠狠色网| 波多野结衣不卡AV| 综合另类激情| 日本久久极品| 丁香婷婷午夜| www.com.色色| 欧美 日韩 成人在线| 97ai婷婷| 日韩精品一品二区三区的使用体验| 日韩黄在免| 337p大胆噜噜噜噜噜91Av| 丁香五月婷婷亚洲综合精品| 一起草性爱不卡视频| 五月玖玖| 99只有精品| 丁香五月综合在线观看| 五月丁香操亭亭网| 国产精品美女| 五月激情六月丁香| 性av| 亚洲无码性爱| 婷婷成人AV| 日本丁香久在线| 色色网91| 色婷婷成人| 五月天基地| 另类图片五月天激情| 亚洲无码影音| 成人资源在线| 97成人丁香婷婷| 亚洲成人色五月婷婷综合| 婷婷五月天成人导航| 蜜臀丁香黄色婷婷五月天| 婷婷视频网| 99热永久在线观看| 欧洲激情五月天| 色人妻五月| 丁香狠狠色婷婷久久无码视频| 五月天婷婷一起草| 五月丁香网av| 丁香五月六月激情久久| www.五月婷婷久久.com| 成人无码精品1区2区3区免费看| 大香蕉啪啪啪| 91天堂网综合| 華人性愛AV在線| 国产寻花在线| 激情噜噜噜| 色操b| 丁香六月在线| 色色丁香| 婷婷伊人綜合| 激情开心五月婷婷| 丁香五月激情网| 中文AV网| 操日本色| www。狠狠干。com| 人妻久久久久久久| 香蕉久久国产AV一区二区| 婷婷五月综合社区在线| 五月婷婷免费在线| 婷婷六月丁香五月| 五月婷婷六月激情| 九月婷婷激情| 日日操日日爽| 五月激情站| 国产性爱大片久久| 五月激情丁香久久综合网| 色色射| 天天操天天操天天操天天操天天操| 变态 另类 在线| 五月丁香六月成人| 高清无码视频网址| 亚洲视频在线观看| 色五月天丁香| 青青草五月天| 五月婷婷激情啪啪| 天天插夜夜爽| 激情综合五月天| 婷婷六月偷拍| 成人精品人妻| 六月丁香VA| 激情久久久| 久9精品| 综合性视频99| 五月天激情小说网| 亚洲一个色| 99在线观看精品视频| 色五月亚洲| 激情五月天的婷婷| 久久偷拍综合五月天| 美女五月天| 五月婷婷色色网址| 色五月女| 五月婷中文娱乐综合| 婷婷成人在线| 九九色综合| 色v综合网| 亚洲六月色| 蜜桃成语时李时珍 免费| 精品成人在线观看| 97在线综合| 91久草五月天婷婷| se99视频| 久久国产AV| 天天天天天久久久久久| 亚洲欧美综合7777色亭亭| 亚洲成人色五月婷婷综合| 婷婷性爱网| 日韩在线一级| 神马欧美精| 五月天色色色色色| 开心婷婷中文字幕| 色综合九九色综合88| 激情五月婷婷五月| 91丨九色丨熟女丰满| 婷香五月激情视频| 婷婷综合网性| 欧美色99| 开心婷婷中文字慕| JAPANRCEP老熟妇乱子伦视频| 99热e| 欧美精品啪啪| 如何安全看伊人婷婷| 99碰超| 伊人久久婷| 丁香婷婷激情五月天无毒不卡蜜桃| 免费色婷婷| 日本激情五月| 九色无码| 六月激情网| 99人人操人人操人人精| 九色91国产| 色色色色色色色色五月先| 九九久久99精品免费观看www| 伊人玖玖精品| 六月丁香啪啪啪| 天天色天天爱天天舔| 三年高清大片免费观看国语| 丁香五月激情视频| 1024婷婷综合久久五月天| 天堂久久婷婷| 美臀自射自家人妻| 色久一| 狠狠色噜噜狠狠| 美欧日韩国产成人在战| 538在线精品| 婷婷伊人五月| 精典久久| 婷婷丁香熟女| 欧美精品99| 天天做综合| 国内一级片| 丁香五月婷婷六月丁香| 六月丁香基地| 1024成人在线观看| 人与禽A片啪啪| 亚洲六月色| 久久婷婷色情7777网站| 婷婷五月天A V| 久久婷婷综合国产| 五月丁香天堂网婷婷| 久久久久久久久18久久| 色婷婷www| 久久这里都是精品视频| 国産精品| 大香蕉丁香五月| 久久色五月| 激情播丁香| 啪啪色激情五月天| www.激情| 玖玖爱综合网| 伊人五月综合网| 玖月婷婷爱丁香| 久久九九99.www| 亚洲情欲| 久久色五月天| 99热在这里只有精品| 热九九在线| 五月激情婷婷四射| 色色欧美。| 日韩综合天堂| 操骚货在线| 丁香五月视频在线观看| 97人人操| 久久久五月天网站| 亚洲传媒在线观看| 五月婷婷深深爱| 色老久久| 久久综合五月天| 婷婷五月AA五月在线| 久久综合伊人77777蜜臀| 青草视频在线播放| 开心五月天激情网| 久久久免费精彩视频| 五月丁香色六月激情干大屄| 色综合网综合| 六月婷婷狠狠做| 依人大香蕉| 日韩精品99久久| 96丁香婷婷九月蜜桃综合久久| 色999亚洲人成色| 高清无码入口| 五月婷婷色五月| 天天干天天干天天干天天干天天干天天干天天 | 99riAV国产精品视频| www五月天激情com| 成年人99热| www。五月天激情| 色色五月天丁香婷婷| 婷婷天天五月天| 国产偷人爽久久久久久老妇APP | 中文字幕久久婷九女同| 国模九区| 激情玖玖综合网| 欧美成人AAA片一区国产精品| 九九激情| 人人操AV| 丰满人妻妇伦又伦精品国产| 中文中文在线| 潘金莲AAAAAAAAAA| 婷婷五月激情四射手| 天天干天天爽| 色一色综合| 狠狠爱深色婷婷综合| 国产美女无遮挡裸体毛片A片| 五月丁香啪啪啪| 大香蕉久操| 久久精典| 五月天婷婷色| 性av| 成人 九九九九| 五月天色欧美| 激情五月,激情综合网| 中文字幕成| 91九色国产熟女| 久久精品91视频| 久久9久久| 欧美久久婷婷| 激情婷婷五月天网址| 激情婷婷丁香五月| 这里只有精品2| 五月婷婷六月天| www久久艹| 久色网| 色玖玖| 日本乱子人伦在线视频| 69久久久| 日韩欧美颜射| 亚州视频九九99| 狠狠草狠狠草| 日日操夜夜撸| 久久久久久久久久久jjjj| 五月丁香婷婷激情爱爱| 91爱操| 丁香五月六月婷婷自拍| 婷婷 色 丁香 夜| 色婷婷成人| 欧美叉叉叉BBB网站| 婷婷五月天性爱视频| 97碰碰视频| 五月色综合网欧美网| 六月丁香婷啪射| 五月丁香婷婷激情视频| 日日操夜夜爽| 色色五月激情| 色久婷婷网| 任你搞网站| 婷婷丁香社区| 这里只精品| AV五月婷婷露脸| 中美日韩成人在线| 天堂美国久久| 丁香五月激情婷婷视频| 亚城区在线| 婷婷色网站| 亚洲网在线观看| 插逼综合网| 婷丁香五月天| 99熟女| 久久这里只有精品视频15| 玖玖午夜视频| 99免费热视频| 天天爽天天爽| 7777激情基地| 几激情五月婷婷色五月色天堂| 九九热视频在线观看| 激情五月狠狠喔| 开心五月激情| 丁香婷婷网| 五月刺激丁香月综合| 亚洲激情av| 操操操AV| 超碰人妻公开在线| 激情五月激情综合网一级丸片| 丁香五月激情五月| 亚洲无码 图片区| 亚洲综合激情五月久久| 91要啪| AV网在线观看| 99精品爱| 内射干少妇亚洲69XXX| 久久五月网| 夜夜躁爽日| 日本猛少妇色XXXXX猛叫| 久久刺激网| 九九免费精品| 久久综合五月天激情小说网站| 五月婷俺去也| 丁香色婷婷五月天| 99精品国产热久久91色欲| 五月天综合视频| 91夫妻网站九色| 成人色情五月天婷婷丁香| 91超碰人人操| 九九热中文| 五月丁香六月婷婷成人电影| 免费操超碰| 天天操天天日天天操| 99国产精品白浆在线观看免费| 婷婷丁香五月综合| 色中色综合| 日韩成人av在线| 婷婷五月激情欧美| 色噜噜夜夜夜综合网| www.五月天婷婷| 伊人久久中文网| 99热这里只有精品国产首页| 超级碰碰99| 色婷婷久久综合丁香五月| 五月桃花网综合| 天天操天天爱天天玩| 91色五月在线观看| 婷婷淫淫狠狠六月| 91九色在线视频| 97资源碰碰| 色~性~乱~伦~噜| 97干在线视频| 99 色色吧| 99热在线观看| 婷婷丁香综合成人| 国产中文字幕在线视频免费观看| 五日激情综合| 五月天色色色| 久草热久草在线视频| 九九久久99| www.com久久久久久久久久久久久久久久久| 一级二级香港秋霞欧美欧美秋霞| 超碰在线资源| 淫视馆AV在线| VA国产在线综合网站| 97在线观视频免费观看| 丁香六月婷婷综合缴| 91婷婷伊人牛牛| www.天天日| 色狠狠综合网| 久久天堂精品| 欧美99| 久久这里只有国产视频| 婷婷综合九月| 91超级碰| 狠狠干综合网| 色色丁香| 色婷婷中文| 激情网婷婷五月天| 五月婷婷六月丁| 国产99久| 亭亭五月色男人| 五月丁香婷中文字幕| 色欧美日| www.夜夜操| 五月丁香龟婷婷| 成人版视频在线观看| 丁香婷婷久久 | 亚洲韩国日产综合AV| 综合大香蕉| 男人综合网| 色五月大| 亚洲乱码日产精品BD| 可以直接看的av| 色婷婷基地在线| 97操碰日本女人| 丁香五月天激情| 婷婷五月丁综合| 五月丁香美女视频| 久久精品五月| 午夜无码熟熟妇丰满人妻| 超级碰碰碰97免费| 婷婷五月综合视频| 青青草搞屄视频网站| 婷婷久久伊人| 99精日本久久| 五月丁香久久| 亚洲综合色色| 色播五月| 激情丁香五月激情婷婷| www激情| 99精品丰满| 天天插天天插| 亚洲av骚货| 天天综合色| www开心激情网| 秋霞免费三级片| 日韩在线一级| 综合久久首页| 日韩在线观看网址| 精品一二三区久久AAA片| 日韩成人无码人妻| 黄色一级影片| 色色热| 五月天婷婷人妻| 五月丁香六月婷婷综合网| 97色婷| 人人人操| 超碰色婷婷| 99视频91| 色婷婷四色| Www.久久| 91狼友视频在线观看| AA片在线观看视频在线播放 | 1024成人免费看| www.99色| 开心激情婷婷| 中文成人在线| 色狠狠色噜噜AV天堂五区| 99热色精品| 婷婷亚洲天堂| www.天天干| 色色五月天激情| 日本色五月| 激情综合网五月激情| 99超级碰免费视频| 五月天大香蕉| 五月丁香色婷婷| 操91| 开心五月天激情网| 色婷婷五月综合| 婷婷啪啪| 2018夜夜草| 超碰人人摸AV| 五月丁香久久婷| 91婷婷五月丁香碰| 《久久综合九色综合97婷婷| 97影院一级片| 欧美色图45678| 五月天综合缴情网网站0| 丁香六月天婷婷在线| 六月综和久久| 激情九九这里只有精品| 婷婷丁香18| 久99综合婷婷| 五月天六月色| 五月天婷婷综合色| 99热国产婷婷| 99色在线| 亚洲色色色色| 九九热视频在线观看| 激情五月综合网最新| 色婷婷电影网| 色图亚洲91| 99爱爱网| 丁香五月综合色婷婷| 精品99爱免费视频在线观看| 开心婷婷五月天激情网| 大香蕉婷婷久久| 99色在线视频| 葵花AV在线| 色~性~乱~伦~噜| 3p日韩网站视频| 亚洲五月花| 色五月激情综合网| 激情内射人妻1区2区3区| 激情丁香久久| 99热这里只有精品98| 精品,99| 亚洲国产成人在线| 国产成人综合电影| 中文无码婷婷| 一区二区三区四区无码| 五月婷婷啪啪啪| 色www久视频| 婷婷色五月开心五月| 婷婷激情丁香五月婷婷激情丁香五月婷婷| 欧美性色五月天| 亚洲av综合网| 4399精品一区二区| 琪琪理论片| 另类激情首页| 激情婷婷丁香五月| 五月天丁香网| 五月成人天| 婷婷五月成人| 天天综合网91| 丁香五月婷婷色偷偷| 久久怕怕视频| 亚洲有码在线视频| 亚洲 小说 欧美 激情 另类| 99操久久| 色婷婷综合丁香五月天| 日韩AAA| 婷婷亚洲色| 亚洲激情六月| 色高清无码视频| 一级性爱视频| 五月丁香色婷婷久久| 五月丁香六月婷婷a v| www.色婷婷| 激情图片婷婷丁香五月| 狠狠草综合网| 无码少妇高潮喷水A片免费| 九九99九九99偷拍视频免费看| 色五月亚洲开心网| 99热在线观看| 深爱五月激情网| 婷香五月| 天堂中文国产| 一级二级色大片| 婷婷丁香先锋资源网站| 这里只有精品在线免费视频| 青青久在线视频免费观看| 婷婷丁香六月综合激情站| 色婷婷19| 婷婷99狠狠躁天天躁中| www.久久99热地址发布| 天天操五月天| 5月婷婷6月六月丁香| 激情五月婷婷丁香综合网| 色婷婷综合五月| 乱精品一区字幕二区| 婷婷色色五月天| 五月丁香色色网| 色情久久久| 亚洲成人中心| 色欲九区| 在线另类| 五月婷婷 欧美| 青青草成人网| 激情五月天激情网| 无码人妻精品一区二区蜜桃色欲| 色色色在线播放| www99热| 99热国产在| 婷婷五月花| 婷婷五月天深爱| 婷婷97色| 丁香五月天啪啪a日本| 丁香婷婷综合色五月激情国产基地| 99免费视频在线观看爱| 色情成人五月天| 天天做天天爱天天做| 婷婷狠狠狠爱| 婷婷五月综合久久中文字幕| 99操视频| 中文幕无线码中文字蜜桃| 五月天自拍网| 91高潮喷水久久久久久久久| 激情五月天影院| 97色天堂| 操99| 婷婷丁香亚洲五月天| 91fuliwang| 婷婷五月激情的图片| 久久99网站| 嫩草AV久久伊人妇女超级A| 99热在线这里只有精品| 热996精品在线观看| 婷婷伊人久久| 婷婷五月天AV激情| 97丁香视频| 超碰在线视屏| 激情五月天啪啪| AV网在线观看| 淫视馆aV二区一区| 69er小视频| 激情九色| 伊人色综合网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | www.精品久9| 狠狠操狠狠爱| 五月天激情婷婷丁香| 玖玖婷婷视频| 人人草人人舔| 中文字幕乱轮| 99视频内射三四| j五月香在线| 先锋资源婷婷| 五月色婷婷AV| 香蕉久久六月| 91.www综合| 综合狠狠干| 婷婷天天插天天爱| 婷婷五月,偷窥偷拍网| 日本丁香五月| 99er精品视频| 日韩三级片一区二区| 日韩五月婷婷| 精品无码久久久久久久久| 久久国产色| 91艹人| 91精品国产99久久久久久天美| 亚洲爆乳无码精品AAA片蜜桃| 亚洲色99| 五月婷婷熟女| 无码人妻激情| 伊人大香久久| 久久精品A片777777| 伊人婷婷大香蕉| 成人丁香婷婷五月天| 色五月激情网| 91婷婷五月丁香碰| 五月天丁香婷婷久久九| 五月婷在线| 日日干日日| 日韩十国产极品久久| 丁香五月综合激情久久潮喷| xx久久| 91高潮喷水久久久久久久久 | 国产精产国品一二三在观看| 五月丁香婷婷色色色| 日本欧美国产| 国产裸舞福利资源在线视频| 婷婷涩涩五月天| 婷婷五月天性爱视频| 午夜不卡久久精品无码免费| 久久久这里有精品| 婷久久| 婷婷 色 丁香 夜| 五月丁香激情婷婷综合| 日日天天操| 欧美天天爽| 亚洲中文字幕AV| 午夜九九九九九九九九九九九九九| 69人人操人人爽| 伊人九热| 日韩国产在线精品| 国产成人+综合亚洲+天堂| 久久久久久欧美精品se一二三四| 五月激情婷婷国产精品久久久久久| 激情5月天天天| 伊人天天色| 激情五月天在线| 精品九九在线观看| 亚洲综合色网站| 五月婷婷与六月丁香图片激情| 日韩成人网址| 亚洲第一成人无码A片| 激情五月天啪啪| 六月久久婷婷| 操逼三区| 中美日韩成人在线| 四虎成人精品永久免费AV九九| 激情人妻综合| 久色网址| 成久综合视频| 丁香 婷婷 激情 综合 五月| 亚洲色精彩| 亚洲美女婷婷五月天| 99视频地址| 婷婷久久六月天| 婷婷五月天激情综合深爱| 欧洲亚洲激情五月天在线| 久久婷婷在线| 五月丁六月香| 婷婷五月天小说| 色婷天天| 色五月av| 日本三级成人秘书精品片| 婷婷中合| 人妻操日日| 色99热| 天天爽夜夜爽夜夜爽精品| 久久性爱视频免费| 久久性爱网站| 性色五月天| 欧美 日韩 成人在线| 99久在线精品99re8| 欧美性生交XXXXX无码小说| 五月丁香综合色婷婷| 丁香六月欧美| 91九色精品女同系列| 五月丁香怕怕综合| 色婷婷五月天小说| 99riAv1国产在线观看| 九九婷婷网五月天| 青青草青青草五月天| 激情综合婷婷久久| 91丨九色丨大屁股| 26UUU在线观看| 66色在线日韩| 丁香五月天电影| 色啪久 | 91九色中文字幕女在线观看| 99热九九热| 啪啪日热| 97碰超级人人看| 天天综合干| 另类视频五月天| 五月丁香六月婷婷网| 五月停视频天堂| 97干在线观看视频| 五月丁香五月激情综合色综合| 婷婷夜夜操| 久久机热/这里只有精品| 久操乱| 人人爱操| 色色色色色色色色综合网| 九九热超碰| 97人人操人人拍| 天天狠狠婷婷在线| 五月激情婷婷在线| 五月婷婷性爱| 日本在线99| 伊人丁香婷婷东京| 超碰成人电影| 亚洲无码猫咪| 丁香六月婷婷缴情欧美| 五月丁香六月激情在线| 性色做爰片在线观看WW| 五月婷婷综合社区| 99亚洲大片精品永久在线观看 | 这里只有视频精品| 久久视频婷婷| 亚洲精品一二三| 色五月天丁香| 狠狠插狠狠操| 秋霞少妇AV网站| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 黄网免费看| 色婷视频| 亚洲精品国产A久久久久久| 超碰免费成人| 欧美综合激情丁香五月六月婷| 性爱久久| 日本精品在线噜噜噜| 丁香五月激情网| 国产精品24r| 婷婷丁香六月激情综合| 思思精品视频| 一区二区乱码视频| 思思热高清在线观看| 四虎国产精品永久在线国在线| 中文资源在线a| 久久婷婷五月天蜜桃| 天天色中文字幕女优AV| 国产阿姨日皮艹逼内射视频 | 在线中文亚洲| 激情五月婷婷网| 丁香五月色情av| 涩涩五| 久久九九99| 色狠狠五月天| 丁香久久| 日韩成人综合网| 五月丁香福利| 五月综合丁香婷婷| 五月天婷婷成人网| 亚洲欧洲小视频9| 婷婷五月天在线综合| 成人国产欧美大片一区| 五月情四婷婷| 丁香六月激情| 亚洲婷婷五月天综合| 五月丁香五月综合欧美| 丁香五月亚洲激情婷婷射| 久久婷婷五月天懂色| 综合99久久| 色五月综合| 九九精品网站| 九九av| 丁香五月花婷婷开心| 狠狠草在线观看| 五月婷婷丁香成人网| 亚洲AV成人在线| 色五月丁香总合网| 免费视频WWW在线观看网站| 丁香桃色综合网| 精品国产乱码久久久久久免费| 爱草视频在线| 久久婷婷五月综合色区| 天天色域综合网| 色五月开心久久网| 99热都是精品| 天堂中文国产| 五月婷婷成人| 亚洲婷婷丁香五月天激情小说| 丁香五月花| 久久久五月四色| 草榴视频网| 另类天堂| 色五月亚洲五月天| 一级片无码| 人人草人人爱| 大香蕉精品视频| 久青草影院| 99热这里只有精品23| 狠狠色婷婷丁香五月| 久久婷婷五月综合啪| 久久婷婷五月| http://www.com久久久精品一区| 久久成人人妻| 欧日韩成人| 五月婷婷色色| 天天综合影院| 狠狠人妻色综合| 六月婷婷五月丁香| 激情 婷婷 插| 亚洲色色五月天| 婷婷在线播放| 久久婷婷五月天综合| 婷婷网影院| 激情六月婷婷| 99免费热视频在线| 色性综合| 2050人人操免费工开爱| 欧美性爱一区| 婷婷五月开心中文字幕色| 久久久五月天婷婷成人网| 99综合久久| 另类综合国产| 综合久久影院| 国产成人综合电影| 在线观看中文字幕亚洲| 欧美性爱特黄一级aaaassss| 人人操人人看97干| 九九香蕉网| 99这里只有| ,99视频久久| 第五婷婷伊人丁香| 国产又粗又大又爽又黄| 色色亚洲五月天| 99热99日…..| 欧美色97| 综合久久狠狠| 色欲色香综合网| 九九精品视频在线观看| 天堂AV三级| 91se在线观看| 色色五月婷婷网| 日本色色网| 亚洲va欧美va天堂v国产综合| 99热香港| 久久婷婷色情7777网站| 国内自拍1区| 开心激情婷婷| 日韩淑女人妻luan伦激情精品一区二| www.91AV.com| 色婷五月| 亚洲第一成人无码A片| 开心五月丁香婷婷| 丁香5月激情网| 婷婷丁香五月激情密臀av| 亚洲综合网在线| 成人视频一区| 色综合天天| 久久视频在线| 日韩av大全| 亚洲色婷婷色| 亚洲精品视频在线播放| 91se在线观看| 99精品综合在线| 97人妻超级碰碰碰碰碰| 97久久久| 99这里只有精品|v| 亚州操操| 激情五月天在线免费美女视频| 九九亚洲小视频| 久久这里在精品视频| 国产成人av在线播放| 色情婷| www.com任你艹| 色天使色综合| 五月天丁香婷婷久久九| 成人免费120分钟啪啪| 婷婷五月天影院| 激情www| AA丁香综合激情| 91丨九色丨白浆秘| 伊人玖玖网| 国产在这里只有精品| 另类激情五月天| 亚洲五月天婷婷在线| 色婷婷九月综合| 热久久国产视频| 九九热这里只有精品12| 亚洲女婷婷五月基地综合久久久| 丁香五月天天日| 2025最新亚洲激情在线| 女人天堂av| 成人欧美一区二区三区在线观看| 六月激情丁香一道本7777| 六月婷婷私欲| 伊人五月人妻精品| 丁香综合伊人AV| 99亚洲大片精品永久在线观看 | 噜噜色天天开心| 婷婷综合五月| 久久婷婷六月| 日韩草草草草草草草草草草草草| 99免费热在线精品| 安息电影在线观看完整版| 国产99精品免费视频| 欧美成人无码一区二区三区| 亚洲一色色色色色色色色| 婷婷亚洲五月丁香综合在线| 丁香五月激情婷婷激情| 五月丁香激情欧洲啪啪| 色婷婷社区| 久草热在线视频| 女婷久久| 久久99精品视频| 国产99久久久国产精品免费看 | 丁香婷五月天| 淫水导航| 五月天狠狠| 99ri在线观看视频| 99这里只有精品| .青娱乐天天操B| 六月丁香婷婷综合影院| 97色97干| 综合亚洲六月婷婷在线| 伊人干练久| 久久丁香五月| 激情婷婷五月社区| 婷婷五月成人有| 思思久久思思| 婷婷丁香小说| 五月婷婷综合网| www.超碰97| 97碰碰碰| 五月婷婷黄色| 丁香五月网在线观看| 99视频精品在线| 人人操99| 超碰9799| 97欧美在线| 久久久久久久综合狠狠综合| 天天婷婷操| 五月丁香啪啪网| 超碰99在线观看| 五月天大香蕉婷| 日韩成人网址| site:ornaments52.com| 国产.亚洲.欧洲视频在线| 婷婷色综合| 免费观看日韩成人av| 亚洲av网站在线观看| 东北婷婷五月天| 九九干视频| 国产69久久久欧美黑人A片| 美女伊人久久| 色狠狠激情五月| 婷婷五月六月| 大香蕉手机视频| 99热精品网| 日本本土色网第一区| 激情五月小说婷婷| 免费观看的av| 九九热99熟女| 天天舔天天| 亭亭色色五月天| 久久大大香| 婷婷偷拍网| 婷婷五月丁香五月综合网| 色色色热| 在线观看av网站| 六月天无码网址| 综合色五月| 久久香视频| 丁香五月色综合色播五月| 激情綜合網址| www超碰com| 99热这里只有精品21| 狠狠色97| 啪啪操网| 婷婷激情区| 思思热视频在线| 婷婷婷久久久| 婷婷五月天成人网站| 色99色| www99在线观看视频| 啪到高潮激情丁香五月| 久久视频在线视频| 五月色网| 天天综合五月天| 色黄啪啪| 欧美天天干天天草| 丁香五月婷婷基地| 天天情天天狠天天透| 色色亚洲| 九九视频在线观看视频在线播放69| 亚洲丁香五月天在线视频| 久久婷婷伊人| 九九色大香蕉| 俺去也综合| www.cao.com久久| 婷婷播播五月天| 亚洲精品V天堂中文字幕| 免费AAAAA网| 色五月天激情| 强伦轩人妻一区二区电影| 日韩1区2区| 91精品久| 亚洲色激情| 亚洲av综合在线| 丁香五月天BBw| 久久一级AV| 色五月婷婷激情五月| 中文字幕丰满孑伦无码专区 | 婷婷五月精品中文字幕| 99久久色| 色噜噜五月天| 久艹伊| 99热在线观看免费精品| 九九精品少妇| 热热久久99| 狠狠综合久久综合| 涩涩涩五月天| 久99精品视频| 狠狠色大香蕉| 99在线视频免费| 五月熟妇婷婷久久| 成人片黄网站色大片免费毛片| 五月天激情播播网| 五月丁香六月婷综合成人综合 | av高清无码| 怡红院精品视频久久久久久久久|