亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

C++/Qt俄羅斯方塊課程設計:從數(shù)據(jù)結構到高分答辯全攻略 簡介面向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。文件層次覆蓋游戲邏輯、界面繪制、構建配置與文檔說明其中ui與json負責界面及配置lib、dll等支撐編譯運行docx手冊用于快速了解設計與提交說明。已有316人學習或下載。該項目的突出價值在于以98分獲導師認可完整展示了俄羅斯方塊從游戲狀態(tài)管理、方塊生成與旋轉、碰撞檢測、消行計分到界面繪制的全過程。關鍵函數(shù)與算法均配有注釋新手也能跟著代碼梳理實現(xiàn)思路項目文檔則補充設計說明與運行方式為答辯和匯報提供支撐。源碼目錄和文檔命名清晰便于按需查閱對應模塊既可作為學習C與Qt協(xié)同開發(fā)的脫手范例也是課程設計或畢業(yè)設計可快速上手的高分參考模板。1. 選俄羅斯方塊作為 C/QT 大作業(yè)為什么它是高分題庫里的常青樹俄羅斯方塊在 C 課程大作業(yè)里屬于“看著不新鮮、做完不虧”的類型規(guī)則全世界都知道但要把七種方塊、旋轉、碰撞、消行、計分、等級加速這些要素寫干凈恰好覆蓋了類設計、數(shù)組與內存管理、QT 的信號槽與事件機制。比學生管理系統(tǒng)多一層實時交互比射擊游戲少一堆素材和物理計算工作量通常兩周內可控代碼量能控制在 1500 行左右評閱老師也容易看出你的設計思路。這個選題適合既要保成績又想沖優(yōu)的同學代碼不難但設計空間足夠撐起一份高分項目的課程文檔。下面按我自己的落地順序講先數(shù)據(jù)結構再界面渲染再游戲邏輯最后把文檔和答辯一起收尾。2. 先把數(shù)據(jù)結構立住方塊表示、旋轉矩陣與碰撞檢測怎么寫2.1 三個類拆清楚Tetromino、Board、GameController 各自只干一件事寫俄羅斯方塊最容易翻車的寫法是把所有變量和函數(shù)全部塞進 MainWindow界面邏輯和游戲邏輯揉成一團。課程設計階段我一般會拆三個純邏輯類加一個界面類分工如下Tetromino描述當前方塊的形狀、朝向和棋盤坐標提供旋轉和取格子的接口。Board負責棋盤內部用一個二維數(shù)組 grid[ROW][COL] 記錄已落定方塊的顏色編號提供碰撞檢測、落定合并和消行接口。GameController持有 Board、當前方塊、下一塊、分數(shù)和等級實現(xià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(); // 順時針旋轉 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 繪制省一次轉換。如果你想讓文檔更偏“純 C”換成 std::arraystd::arrayint,4,4 和自帶的坐標結構也一樣不影響其他類。構造時每種形狀自己填充 m_matrix比如 T 字塊在模板中的形態(tài)是 (1,0)、(0,1)、(1,1)、(2,1) 四個格子為 1。用 4x4 而不是直接存坐標數(shù)組是為了把旋轉變成純矩陣運算不引入額外算法。2.2 用 4×4 模板表示七種方塊旋轉就是“轉置 水平翻轉”矩陣旋轉是這里最值得寫在文檔里的細節(jié)。順時針旋轉 90 度等價于先對矩陣做轉置再把每一行左右翻轉寫成代碼只有四行// tetromino.cpp —— 旋轉矩陣的核心邏輯 #include tetromino.h #include cstring void Tetromino::rotate() { if (m_shape O) return; // 正方形的 O 方塊旋轉后不變直接跳過 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]; // 轉置后水平翻轉 } } std::memcpy(m_matrix, temp, sizeof(m_matrix)); }新手最容易寫錯的是下標寫成 temp[3 - i][j] 或者 temp[j][i] 不帶翻轉結果旋轉幾次后圖形發(fā)生漂移。驗證方法很簡單拿一個 I 方塊在紙上畫一遍旋轉后應該是橫躺狀態(tài)而且旋轉中心不偏移。這也是用 4x4 而不是 3x3 的原因3x3 矩陣放不下水平的 I 方塊4 格強行表示會造成旋轉中心偏移S、Z 方塊轉起來也會有錯位感。O 方塊在構造函數(shù)里就把矩陣填成 2x2 的田字放在 4x4 的左上角旋轉時直接 return避免無意義的矩陣拷貝。文檔里寫清楚這個特判評閱老師會認為你考慮過邊界情況。2.3 碰撞檢測的“先放后查”策略為什么比逐格判斷更不容易出 bug碰撞檢測是整個游戲正確性的地基。我見過不少實現(xià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ù)左移、右移、下落、旋轉、硬降全部調它判定邏輯只有一份。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 內部就是調 board.canPlace而 spawnNext 里同樣用 canPlace 判斷游戲是否結束也就是“生成時預判”的結束方式。這樣整個下落流程的所有動作都收口到同一個碰撞函數(shù)邏輯只有一條路徑排查問題時只需要看 canPlace 一個函數(shù)。3. 用 QT Widgets 把棋盤畫出來QPainter、QTimer 與鍵盤事件三步走3.1 工程文件與源碼清單一個 QWidget 項目需要哪幾個文件界面層我用 QMainWindow 作為主窗口中央放一個自繪的 GameWidget右側放信息面板。新建項目時在 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繪制棋盤、接收按鍵、驅動定時器paintEvent、keyPressEvent、QTimerboard.h/.cpp棋盤數(shù)據(jù)、碰撞檢測、消行grid、canPlace、clearLinestetromino.h/.cpp方塊形狀與旋轉matrix、rotate、cellsgamecontroller.h/.cpp游戲規(guī)則、分數(shù)、等級、狀態(tài)tick、move、rotate、hardDropGameWidget 頭文件的骨架長這樣// gamewidget.h —— 界面層只做三件事繪制、收按鍵、驅動定時器 #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)變化后調用 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右側再留 150 像素放信息和下一個方塊預覽主窗口固定成 480x640 比較協(xié)調。用 24 會讓窗口顯得局促演示時分數(shù)看不清用 40 又太大筆記本屏幕上放不下。格子填充減 1 像素是為了自然露出背景色當格線不額外畫線的省力做法比 drawLine 畫 11 條豎線簡單且不會出現(xiàn) 1 像素錯位。3.3 QTimer 驅動下落與 keyPressEvent 響應按鍵主循環(huán)怎么寫游戲主循環(huán)不用 while(true)那會卡死 QT 的事件循環(huán)。正確姿勢是 QTimer 周期性觸發(fā)每次觸發(fā)做一次下落邏輯然后調用 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 新手最常見的黑匣子之一。第二每次按鍵后都要調用 update()否則邏輯已經(jīng)變了但畫面還停在上一幀。定時器那邊也一樣tick 之后緊跟 update()缺了它你會看到方塊只在消行那一瞬間跳變其他操作都像沒響應。QTimer 的 interval 可以在運行中修改等級上升后直接 m_timer.start(newInterval) 就會重設定時周期。不要在 tick 里用 QThread::sleep 或 std::this_thread::sleep_for 模擬減速那是把整個界面線程睡死窗口拖動都會卡成幻燈片。3.4 右側信息面板與預覽區(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 之后由外部調用。這個類看起來多余但它把“預覽下一塊”從主繪制里拆了出去新增一個“未來五塊預覽”時不用動 GameWidget。主窗口的布局用 QHBoxLayout 放 GameWidget 和右側 QVBoxLayout右側依次放分數(shù)標簽、等級標簽、PreviewWidget最后 addStretch 把控件頂?shù)缴戏?。窗?setFixedSize 禁止拉伸免得用戶把窗口拉變形后棋盤比例失調。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; // 下移后當前行換成了新內容需要重新檢查 lines; } return lines; }那個 y 是容易看漏的細節(jié)。整行下移后原來的 y 行現(xiàn)在裝的是 y-1 行的內容這一行可能也是滿的所以循環(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ù)質量時不太好解釋。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 游戲結束判定放在哪兩個時機生成時預判還是落定后檢查游戲結束的判定時機有兩個選擇。一個是在落定合并后看棋盤是否超出頂部另一個是在生成新方塊時看初始位置是否放得下。我推薦后者也就是 spawnNext 之后立刻檢查// gamecontroller.cpp —— 新方塊無法落位則結束 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é)。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。項目構建目錄建議刪掉重新 qmake 一次避免 Makefile 里殘留舊路徑。如果你確實在 VSCode 里配過 C 環(huán)境那個 QT 路徑和 Qt Creator 通常不是同一套兩者不要交叉使用。我的習慣是課程設計期間只開 Qt Creator見到這個報錯第一時間查 Kit而不是去重裝 QT。5.3 按鍵沒反應setFocusPolicy 與焦點丟失的那點事現(xiàn)象界面能正常顯示鼠標點按鈕有響應方向鍵、空格鍵怎么按都沒反應游戲像死了一樣。原因QWidget 默認不接受鍵盤焦點keyPressEvent 只有在控件獲得焦點時才會被調用。窗口剛顯示時焦點可能落在某個按鈕或者沒有焦點控件上按鍵事件被分發(fā)給焦點對象而不是你的 GameWidget。解決在 GameWidget 構造函數(shù)里加一行 setFocusPolicy(Qt::StrongFocus)讓這個控件可以用鍵盤和 Tab 獲取焦點。如果界面上有 QPushButton 或 QLineEdit點擊它們之后焦點會轉移此時繼續(xù)按方向鍵就失靈。處理辦法是對按鈕調用 setFocusPolicy(Qt::NoFocus)或者重寫整個主窗口的 eventFilter 統(tǒng)一攔截鍵盤事件再轉給 GameWidget后者更徹底但課設代碼里用 NoFocus 就夠。這個坑一流出現(xiàn)查代碼半小時查不出來其實就是少寫了一行。5.4 界面閃爍與掉幀別在 timer 里 new QPainter統(tǒng)一用 update()現(xiàn)象方塊移動時窗口閃爍或者移動一頓一頓不跟手消行瞬間尤其明顯。原因把繪制代碼寫在了定時器回調或者按鍵處理函數(shù)里在事件循環(huán)外直接往窗口上畫東西系統(tǒng)在下一幀重繪時又把你的繪制覆蓋掉造成閃爍。另一種情況是邏輯層用了 sleep 或大量拷貝導致事件循環(huán)卡頓update() 延遲到很晚才合并觸發(fā)。解決所有繪制統(tǒng)一收進 paintEvent邏輯變化只調 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 或析構相關斷言有時候是 CtrlC 結束沒反應關窗口才炸。原因QT 的 QObject 父子機制規(guī)定父對象析構時會自動銷毀所有子對象。你把一個控件 new 出來并且傳了 parent之后又手動 delete 它就造成二次釋放。反過來在棧上創(chuàng)建了 QWidget 還給別人當了 parent棧對象析構時父對象可能已經(jīng)先析構了觸發(fā)懸垂指針。解決凡是構造函數(shù)里傳了 parent 的對象一律不手動 delete交給父對象統(tǒng)一管理。如果需要提前銷毀用 deleteLater()它會在事件循環(huán)安全點執(zhí)行刪除。GameWidget 里的 QTimer m_timer 是成員對象不是 new 出來的析構時隨 GameWidget 一起銷毀不涉及這個問題。這一條寫進文檔的“遇到的問題”章節(jié)算是展示你理解 QT 內存管理比抄一段智能指針的八股答得實在。6. 項目文檔與答辯把“高分項目”的分數(shù)落在紙面上6.1 一份課程設計文檔的骨架需求分析、概要設計、測試記錄怎么寫源代碼寫得再好文檔拿不出手還是會被扣分。課程設計文檔的標準結構是需求分析、概要設計、詳細設計、測試報告、心得五部分其中概要設計和測試報告占的分數(shù)最多。概要設計里放一張手繪的類圖就夠畫出 Tetromino、Board、GameController、GameWidget 四個類的關系標注關鍵的 public 接口比復制十頁代碼有用。測試報告別只寫“測試通過”把幾個典型場景列出來方塊到邊界能否停止、旋轉后碰墻能否拒絕、連續(xù)消四行得分是否正確、游戲結束后按鍵是否無響應每條配一張運行截圖。截圖記得把分數(shù)和等級一起截進去評閱老師會看分數(shù)是否和消行數(shù)對得上。6.2 答辯講這三個亮點分層架構、碰撞收口、擴展性答辯時不用面面俱到講三個點足夠。第一講分層界面類不碰游戲數(shù)據(jù)控制器不碰繪制代碼老師問“加功能要改哪里”時你能明確指出改哪個類。第二講碰撞檢測收口到 canPlace 的取舍所有移動、旋轉、硬降共用同一個判定函數(shù)而不是每個動作各寫一堆邊界判斷。第三講擴展性加新方塊只改 Tetromino加 7-bag 隨機只用動 spawnNext加存檔只要在 GameController 里序列化分數(shù)和棋盤。這三句話比背概念更能讓老師相信項目是你自己寫的。我當年做這個題翻車就翻在 update() 上邏輯全對但界面紋絲不動查了整整一個晚上最后發(fā)現(xiàn)只是忘了在按鍵后請求重繪?!案拇a不如先懷疑重繪沒觸發(fā)”這道坎邁過去之后我對 QT 的繪圖機制算是徹底通了。這個項目的完整實現(xiàn)值得你親手敲一遍別直接抄源碼自己把 canPlace 和 clearLines 寫對一次收獲比跑通十遍別人的代碼都大。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲drav色图| 日韩pv中文| 小说区 图片区色 综合区| 另类av天堂| 久久久久久久国产a∨| 欧美另类天堂| 欧洲精品网| 91一区二区| 久久黄色性爱视频| 欧美性爱91| 精品免费囯产一区二区三区| 99热精品在线观看| 国产精品久久久久久9999| 老女人爆菊| 日本欧美亚洲高清在线看| 第四色奇米影视777| 97亚洲中文| 91色堂| 北条麻妃99精品青青久久| 亚洲av影院在线观看| 蜜臀99久久精品久久久懂爱| 亚洲精品99999| 中文字幕一区二区三区人妻不卡 | 亚热日本熟女| 好屌色综合| 一区二区三区 丝袜 高跟 美腿| WWW黄片COM| 久久久久久电影| 日本人妻最新在线中| 亚洲综合有码| 操逼天美3区| 中文字幕美女91| 国产综合日韩伦理| 亚洲欧美日韩制服另类| 韩国手机不卡无码三级视频| 亚洲国产成人7777| 日韩不卡在线一区二区| 日本国产高清色www视频在线| 日韩簧片免费看| 91东北熟女| 中文 人妻 制服| 91在线观看,天天综合| 亚洲久久东京热一二三四五区视频| 久久久久久久久久久久黄色| 另类欧美| 久久精品国产亚洲粉嫩| 亚洲国产97| 日本天天干天天操一区| 在线有码中文字幕| 欧美精品久久久久久久久88| 冬京热男人的天堂| 欧美性爱一区| 国产超碰欧美| 国产精品午夜福利亚洲综合网| 国内偷拍精品一区二区| 成人aⅴ一区二区三区| 中文字幕亚洲永久精品| 99热超碰| 少妇色综合| 国产麻豆91欧美一区二区久久婷婷国产精品 | 91精品久久久久久久久久| 人人搡人人肉久久精品| 亚洲高清欧美总合| 色丁香五月婷婷| 69精品少妇一区二区三区蜜桃| 中文字幕二区日韩天堂| 伊人伊人LD| AV中文字幕三四五| 黄色免费网| 亚洲免费成人在线高清无码视频 | 国产女上位好爽在线| 97青娱乐超碰久久| 深爱伊人影院| 欧美,日韩,亚洲视频| 色综合色| 亚洲日韩熟女人妻高清在线| 欧美日韩97| 人人干黄色| 国模精品一区二区三区苹果色戒| 少妇天堂网络| 男人的天堂99| 日韩中文字幕视频| 精品国产乱码久久久久久久久1 | 免费操逼91| 小视频国产| 天天爱天天操| 骚人妻少妇视频| 91丝袜| 亚一综合久久久久久久久久| 久热色情精品| suv精产一二三区| 91碰超| 亚州伊人色综台| 久久中文字幕女同性恋一区| 成人精品久久久午夜福利| 久久欧美性爱视频| 中文字幕第二页| 青青伊人这里只有精品| 国产精品肉丝自拍| 嗯嗯啊好爽| 精品v日韩欧美国产| 啊啊啊 在线观看| 男人天堂导航| 日本午夜久久电影| 精品国产乱码久久久久久免费| 91综合色噜噜| 射丝袜高跟鞋99| 手机在线大香蕉| 人妻精品视频一区二区| 欧美人妻另类在线| 风流老熟女一区二区三区l| 香一区二区三区| 超碰97护士| 亚洲宅男天堂| 老熟女91| 天堂av2019| 亚洲久久久| 首页亚洲国产高跟丝袜诱惑视频| 国产在线激情| 成人丁香五月| 国产路线专区| 五月天黄色av| 青娱乐老司机视频| 麻豆国产原创AV色哟哟| 欧美大波激情xxxx| 日本免费一区二区不卡 | 国产呦精品一区二区三区下载| 99亚洲人人| 成人AV超碰免费在线| 一区二区三区日韩欧美 | 久久久久久久一级黄色打同平台| 欧美色图91| 日本超碰在线国产一区| 欧美大波激情xxxx| 很很很很操| 精品性爱一二三区| 久久有码视频| 天天操av懂色| 成人a v在线播放免费| 亚州乱码中文字幕综合久久久| 亚洲 小说 欧美 激情 另类| 蜜桃不卡一区二区| 国模无码一区二区三区在线| 日本在线999| 婷婷五月天久久久| 久久大黄片| 亚洲中文电影| 99热精品在线播放| 久久久性| 色天欧美| 国产精品色| 亚洲自拍偷拍视频在线| 久久人妻无码毛片A片麻豆| 色综合网1| 超碰免费人妻在线| 中国小夫妻勾搭露脸淫荡对白| 飘花国产午夜精品不卡| 漂亮人妻被强中文字幕hd| 青青11操操操操操操操操| 国产精品视频91久久| 试看60秒| 国产乱码精品久久久久久| 在线观看黄色电话| 亚洲无码视频免费在线观看网址!| 夜夜欢天天干| 亚洲综合校园春色| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 国产日韩欧美三级片| 99av| 九九九九97| 日本天天人人狠狠在线日美女| 四虎影视永久在线免费| 亚州男人天堂| 99蜜月精品久久| 大香蕉碰碰| 久草视频观看视频在线| 国产h小视频在线观看免费| 日韩不卡网操逼中文字幕日韩| 国产男女无套视频免费观看| 三级日本一区二区三区| 永久免费观看的毛片的网站| 草草草视频| 男人天堂网手机版婷婷| 品亲网欧美品亲网| 蜜桃在线观看一区二区三区| 91 国产丝袜在线放观看| 中文熟女五十乱码在线| 丝袜喷水在线| 日产狠狠干| 免费中文在线| 亚洲成人无码影院| 一区二区三区黄色片a| 91丨人妻丨国产丨丝袜| 久操免费观看| 日本影视久久免费| 好属操| 亚洲脚交| 天天摸天天舔天天操| 色香阁在线| 屌逼麻豆| 97天天搞在线| 精品久久久久,69国产成人精| 干日本人少妇午夜寂寞影院| 天天射天天操天天干天天吃2018| 欧美日韩1234| 久久久久亚洲| 欧美成人一级麻豆| 蜜乳视频网站| 免费一级a毛片久久久久久鸭绿欲| 12一15性XXXX粉嫩国产| 人妻性爱一区二区| 国产欧美精选激情视频| 青青草日韩无码| 亚洲成A∨人影院在线欢看| 一级黄色视频网| 在线观看一级α片刺激高潮视频| 久久久久久久久久久免费精品| 日B操| 亚洲网站一区二区在线| 黄色免费一级在线毛片| AV在线性爱| 日韩国产在线观看av| 404操逼福利视频| 天天干天天操天天干天天操| 超碰人人草| 天天干天天插| 91九久| 91人人看| 天天色综合影视网| 一区二区三区美女超清| 日本狂喷奶水在线播放212| 大香蕉久| 久久久A∨| 人人摸人人干| www.yw尤物| 欧美日韩另类在线| 一区二区首页| 91网站18+| 午夜噜噜噜| 99热成人| 97超碰欧美| 综合av社区| 在线观看岛国有码| 亚洲色图超碰在线| 裸体美女久久久| 欧美日韩国产色五月综合在线| 91精品国| 国产亚洲日韩欧| 无码乱人伦中文视频| 啊啊啊好爽快点啊啊啊嗯嗯| 综合 青草 伊久久 影院 综合| 97精品97久久| 中文字幕丰满人妻日本| 动漫爆乳3D奶水一区在线观看| 成人在线日韩| 97超碰巨乳| 青青青草原| 亚洲欧美色图小说| 天天影视色香色欲| 日韩人妻无码不卡网站| 91三级理论片播放器| 男人天堂久久精品| 亚洲不卡一| 性饥渴少妇av无码毛片| 亚洲另类综合欧美| 欧美淫乱视频| 操高情无码| 久草综合京东| 亚洲91色| 97色婷| 成人欧美日超碰| 日韩欧美亚洲自拍偷拍| 超碰亚洲97| 日本ZZ高免费A级视频| 偷拍三区| 欧美少妇色综合| A片大香蕉在线| 天天日B狠狠操| {男男暴菊gay无套网站| 精品久久久久瑟瑟| 国产精品点击进入在线影院高清| 99精品在线观看| 蜜臀av中文字幕| .精品人妻一区二区三| 一区二区三区 丝袜 高跟 美腿| 丰满欧美放荡少妇在线| 日本污ww视频网站| 超碰天天去日穴| 一区操逼日比视频| 日本黄色裸日本黄色裸体| 乱抡国产91| 大香蕉综合| 久久久性| 日日AV加勒比| 欧美一级久久久久久久大片动画| 麻豆伊人网| 人妻9117c| 97超碰天天| 欧美传媒| 人妻熟女一区二区| 动漫爆乳3D奶水一区在线观看| 人妻熟妇久草在线| 国产三级日产三级韩国三级| 自拍啪啪视频| 久久人妻丝袜一区二区三| 美女黄网| 伊人991| 亚洲少妇综合在线播放| 久久久一区二区三区麻豆| 六月丁香久久| 看全色黄大色大片免费视频| 久久久久久久九九九九九九| 蜜臀AV秘一区翔田千里| 丝袜狠狠草尤物 91| 国产激情av女片自拍| 久久久久久人| 日本在线不卡123| 99视频这有这里有精品| 青青草久久| 五月天社区| 日本人妻最新在线中| 夜夜高潮夜夜爽高清视频一| 日本色色色色色视频| 久久中文字幕女同性恋一区| 一本久道久久综合狠狠爱| 久久在线观看免费视频| 中文字幕乱偷人妻久久艾草网| 亚欧Av| 麻豆天美一区二区| 欧美激情色婷婷花野真衣一区二区| 天天干天天狼在线视频| 人人操人人93| 蜜臀网 一区| 黑人中出21连凳花野真衣| 黄色区免费观看中文字幕| 天美传媒精品久久视频| 色欲人妻一区二区在线| 国产高潮AA片免费看| 亚洲无码精品AV久久久| 国产在线视频二区| 久久久久极品| 最新精品久久蜜桃 | 久久思思热| 八戒无码国产午夜福利| 欧美97在线欧| 亚洲欧美97√| 欧美色吧综合| 亚洲系列欧美| 激情综合av| 天天影视网综合少妇| 午夜理论片在线观看免费| 亚洲精品97| 亚洲美腿丝袜香蕉影视欧美成人| 啊啊啊97视频| 欧美色九九九| 97干com| 老熟女搡BBBB搡BBBB视频| 97亚洲中文| 欧美精品,四区。五区| 天天射网| 67914亚洲精品| 综合网色| 色五月婷婷色| 午夜男女爽爽爽在线视频| 久久亚洲欧美中文字幕国语| 91P0RNY大屁股人妻| 欧美天天综合网版| 91色亚洲| 97网色| 91日产桃蜜| 中文字幕精品亚洲熟女| 乱子伦一区二区三区国产精品| 九久9热| 99re6国产精品99re在线| 久久久久久国产精品| 一区在线国产播放| 免费看欧美美女黄色大片| 久久精品中文字幕无码l| 国产乱伦亚洲| 久草国产在线视频| 404操逼福利视频| 很黄很色的视频在线观看| 青娱乐二区免费| 日韩兔费看黄片| 伊人天天久久动态图| 一区二区三| 日本黄色精品| 97超级色碰碰| 欧美日韩人妻精品系列一区二区三区| 97在线资源| 97中文字幕色| 1000午夜黄色| 麻豆a'v电影| 台湾佬中文娱乐网久久久久久久久久com| 欧美色图私拍91| 人妻精品4K4K4K4K4| 人妻aa| 天天色综亚洲91污| 久久熟女人| 99热这里只有精| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 亚洲男人天堂手机版| 3P乱轮视频| 成年人性爱日韩| 色色色天美视频| 91黑人无码激情在线| 人妻人人操| 婷婷天堂站| 人妻天堂综合网| A V少妇特黄三级| 天天日B狠狠操| 97色婷| 男女打扑克高清网站| 欧美亚洲第1页| 91新在线欧美| 97超碰公开| 女人香蕉久久毛毛片精品| 91亚洲网站| 91四海无码日韩欧美| 亚洲无线观看久久| 人人操肉肉| 丰满人妻av一区二区三区| 亚洲色图大香| 国产成人主播| 97中文综合| av黄图片在线观看| 欧美成人性爱视频大全| 按摩中文字幕| 国产AV人人夜夜澡人人爽麻豆| 亚洲中文字幕久久无码精品| 一级性爱网| 国产精品麻豆视频网站| 综合色色婷婷| 超碰午夜| 亚洲九九九| 青娱乐亚洲自拍| 国模限制级电影| 日日橹狠狠爱欧美超碰| 欧美韩日精品99综合| 综合网天天| 国内三级自拍小视频在线观看| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚州五月| 婷婷av在线中文字幕| 婷婷五月天影院| 日韩超碰精品综合| 久久久555| 亚洲激情片| 五月丁香六月婷| 色老汉色| 屁股久久久久久| 色区久久| 人妻喷水| 国内毛片婷婷六月色| 欧美一二三区四五区| 日韩综合色网| 人人贴人人摸| 江都AV在线| 欧美啪啪色吧在线| 五月婷婷综合网| 色综合20p| 久久国产性爱| 日韩成人午夜精品久久高潮| 张柏芝国产一区在线观看| 最新欧洲欧美日本激情网站| 国产美女口爆吞精视频| 能看的AV| 凹凸 69堂 在线播放| 国产尹人在线视频免费| 人人摸人人舔一区二区| 欧美黑人精品在线播放| 射丝袜大香蕉| 中文字幕亚洲永久精品| 亚洲性少妇| 亚洲少妇综合在线播放| 青娱乐手机日韩在线视频| PMv在线观看| 成人资源中文字幕在线观看天天| 日韩91网| 久久人妻办公室视频| 欧日韩一二三f区| 久久98| 丝袜美腿91| 黄色av一区二区在线| 男人的天堂kva| 69精品久久久久中文字幕| 91AV天美在线视频| 欧美特大黄一级片片免费| 大屁股熟女一区二区三区| 免费伦费视频在线观看| 欧美骚少妇| 午夜免费视频1000| 午夜爽爽爽| 97精品一二区| 先锋色眉乱伦资源| 无毛精品| 日本一级性爱| 熟妇女伦乱视频| 99激情视频| 久久久亚洲| 欧美 亚洲 大香| 亚洲成?V人片在线观看福利| 蜜臀在线网站| 大香蕉碰| 欧日a| 久久人妻熟女一区二区 | 中文字幕一区二区无码成人| 亚洲午夜免费狠狠干| 日本精品五区| 97精品网站| 五月婷婷综合网| 人人么人人操| 99re这里只有精品2| 欧亚综合一卡二卡中文字幕| 日韩黄色片子| 夜夜高潮夜夜爽夜夜爱爱一区| 无码9区| 日韩成人精品| 亚州男人天堂| 丰满人妻一区二区中文| 国产91美女高潮| 国产精品久久久久久 百度| 国产美女自拍视频| 亚洲色堂免费视频| 国模精品一区二区三区苹果色戒 | 国产乱码精品一区二区三区四川| 91美女网站| 人妻免费观看| 青青11操操操操操操操操| 国产精品999aaa| 天天干夜夜| 五月天色图| 午夜精品久久久久久久男人的天堂| 熟妇xxxxx性春色| 超碰97伊人| 美女诱惑在线一区| 一区二区精品更新提醒| 久久丁香五月天| 亚洲无码成人精品| 最新av中文字幕高清| 国产2.3.4区| 亚洲美欧999| 97天天爽| 久久婷五月天| 亚洲无码久久久久久久| 日韩色欲久久一二三四区| 91综合网站| 欧洲视频在线| 欧美中日韩XXXX| 欧美同性恋 的搜索结果 - 91n| 在线观看视频91| 欧美亚洲影视| 啊啊啊不要啊啊受不了了视频在线 | 99热97| 色丁香五月婷婷| 欧美大香蕉同搞| 操逼片国产| 91色人妻| 欧美成年人性爱视频免费观看| 九九热AV| 蜜臀99久久精品久久久懂爱| 欧美 色 亚洲| 亚洲日韩国产精品| 日本加勒比无码专区| 超碰在线1234区| 青青伊人加勒比海| 少妇色综合| 亚洲图片欧美另类综合免费视频大大香| 天天天肏屄欧美| 亚洲熟妇丝袜在线观看| 91天美传媒在线观看| 91色综合激情| 国内操逼视频二区| 九九九九97| 美国三级日本三级久久99| 岛国不卡超碰护士AV在线播放| 人人爽人人精品乱人伦AV| 久久夜夜夜| 五月开心久久AV官网| 日韩综合97P| 精品久久艹| 91老妇女| 中国AAAAAA黄色片| 久久黄色视频一区二区三区 | 久久天天艹| 亚洲色图综合| 欧美日韩操逼动图| 婷婷深爱五月| 宅男91视频在线播放| 人妻天天爽夜夜爽精品2| 国产女人高潮视频| 亚洲 欧美 小说| 岛国999| 久久久久久十| 少妇啪啪自拍| 免费黄色片子| 91精品国产综合久久久蜜臀| 亚洲和欧美裸体美女双飞视频| 超碰这里有精品| 亚洲春色欧美| 偷拍亚洲熟女视频播放| 曰韩av中文字幕专区| 婷婷五月成人| 午夜欧美精品久久久| 天天肏天天干| 大香蕉久| 插入综合网| 校园春色家庭伦理欧美激情| 97资源久久| 亚洲欧美不卡线| 日韩久久.一级黄色片| 婷婷久久久| 天美传媒Av在线| 91性网| 国产美女裸体秘 永久无遮挡| 人人透人人操| 91爰爱欧美| 99热一区二区三区四区| 性色av蜜臀av色欲aV| 激情文学网伊人| 黑丝91视频| 啊啊啊啊啊啊在线| 蜜乳AV网址| 亚洲天堂人人妻| 91欧美经典| 免费观看国产不卡av| 91在线综合网| 一本色道熟妇| 久热影视| 91麻豆天美国产| 精品人妻少妇| 成人av性爱电影在线观看| 女人高潮大叫一级毛片| av午夜玫瑰| 日本一二区不卡| 日本护士高潮| 激情文学 亚洲图片| 日本国产欧美一区三区二区| 婷婷色导航| 日韩大香蕉精品在线视频| 97精品| 高清不卡国产| 亚洲熟女av中文字幕| 天天干,天天日| 亚洲高清男人天堂| 久久黄色性爱视频| 精品无码人妻一区二区免费蜜桃| 99婷婷一区二区| 91成人在线免费视频| 麻豆成人av| 日韩欧美操逼xxx| 青青草视频在线观看一区二区| 欧美姓爱综合网| 色小视频蜜乳| 美女啊啊啊啊啊啊| 99久久综合| 国产精品白丝| 澳门人妻久久| 91视频精品| 99色婷婷中文字幕乱色| 100啪啪视频大全| 天天插夜夜爽| 丰满人妻无码一区二区三区| 97在线观看免费视频l| 青青久久手机线视频| 亚洲AV不卡在线观看尤物| 91社区拍啪人妻| 亚洲色图综合网| 黄片aaaaa一区| 9I1性色影院| 天天日天天插| 97K超碰在线| 人人色人人射人人妻| 日韩精品中文字幕人妻| 97爱b| 日韩成人性爱AV| #NAME?| 熟妇人妻一区二区三区| A一区片| 亚州黄站| 啊啊啊啊啊在线观看网址| 精品欧美不卡在线播放| 91爱做| 五月婷婷hd| 高清成年美女黄网站免费大全 | 33044男人的天堂深夜备| 免費黃色視頻觀看一| 夜夜嗨视频| 亚洲精品天天影视综合网 | 粉嫩久久久极品| 强奸乱伦AV网址| 九月丁香婷婷| 人人操人人摸人人看人人插| 日韩91网| 欧美一区二区在线资源| 另类一区| 亚洲欧美综合| 九九九精品一区二区无码| 午夜人妻精品综合在线| 国产欧美日本亚洲精品| 亚洲色综网| 偷拍网站久久男女男| 国产精品亚洲无码| 97超碰中文在线| 精品久久久不卡一区二区| 嗯嗯啊中文字幕| 日本三级一区二区 在线| 91成人亚洲色图| 蜜桃久久久久久久久久久久| 深爱五月婷婷| 亚洲一区二区三区四区视频| 91麻豆天美| 欧美91色| 中文字幕视频免费| 国产性感骚丝袜在线| 国内毛片免费h片在线| 麻豆视频国产一区二区| 一区二区国产视频在线观看| 97香焦色区| 色一色综合网| 两性色网| 午夜亚洲WWW湿好大| 少好三P| 97精品一二区| 日本色婷婷| 国产精品久久久久av| 69少妇一区二区| 91久久免费视频互動交流 | 五月天黄色激情视频| 在线日韩精品一区二区三区| 后入式福利| 中文字幕二区| 丝袜亚洲91| 色www精品视频在线观看| 啊好大好舒服| 亚洲天堂中文字幕无码男同| 久精品无码av一区二免费国产在线观看 | 中国一级操逼视频| 亚洲国产av中文字幕久久| 欧美夜夜| 黄色视频高清无码网站| 97在线免费看视频| 人人妻人人爱人人玩| 日日干日日摸| 久久大香蕉97| 久久精品无码专区| 久久线上视频免费看| 校园春色美腿丝袜 | 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 亚洲色图尤物视频| 精品中文字幕第一页| 国产日韩无码一区二区三区久久区| 欧美性爽xyxOOOO| 成·人免费午夜在线观看| 丁香色狠狠色综合久久小说| 国产传媒av天美传媒在线| 91美| 天堂69亚洲精品中文字| CCYY草草影院地址入口| 无码少妇精品一区二区60岁老人| 隔壁邻居波多野结衣中文字幕| 精品九九| 日本欧美一区二区三区视频麻豆| 欧美18 在线观看| 亚洲AV性爱电影| 日本性爱网址| 长长久久免费视频| 欧美色偷拍| av婷婷色网| juliaann丝袜大战黑鬼| se,,,亚洲欧美| 香蕉国产97| 国产AV中文| 人妻干天天| 日日干天天干夜夜爽| 人人贴人人摸| 岛国毛片在线观看免费| 欧美性爱视频免费一区一A| 91精品国产高清久久久久久,亚洲成人 | 激情视频网址| 第45页一区二区| 国产妇女精品视频青青草| 久久久亚洲精品中文字幕人妻| 超碰美国| 综合伊人激情| 99自拍视频在线| 久久久久久久久久久97| 偷拍2020| 蜜臀久久99精品久久久久久婷婷| 亚洲伊人a线观看视频| 精品v日韩欧美国产| 日本一区二区三区精品| 97在线青| 91性网| 亚洲第一黄色av网站 | 欧美情色亚洲| 亚洲黄色视频在线观看视频| 国内三级自拍小视频在线观看| 又大又长又爽| 天堂精品| 国产日韩精品人妻久久久久色欲网站| 精品超碰国产| 国产女人9999| 麻豆久久一区二区三区| 精品亚洲国产成人AV制服丝袜 | 91精品丝袜久久久久久无码人妻| 东方亚洲在线操逼天堂| 国产无码久久高清| 国产成人无码网站在线视频| 久久一二三四五六七八九区区| 国产97在线播放| 久久精品日韩| 国内精品999| 后入式999| www.91理论| 久久国产视频专区一二三| 久久婷婷成人综合色怡春院| av绯色| 欧美猛交黑寡妇中文字幕| 我想要 啊 啊 啊| 五月婷婷性爱| 伊人在线大香蕉视频久久| 成人性爱av| 91人人爽人人爽| 东京热天堂网| 五月丁香激情啪啪| 大逼色网站| 亚洲综合中文字幕有码| 99xav| 免费福利视频中文字幕| 久久天天性久久伊人| 精品人妻一区二区三区在线视频不卡| 久久性爱网站| 亚洲AV不卡在线观看| 成全在线观看免费观看| 日韩精品区二区三区不卡| 免费男人的天堂| 久久久久国产精品喷潮免费观看臀| 九九久久久九九| 97精| 精品久久久久黄少妇| 青青在线视频日韩欧美| 色性荡荡荡荡视频| 91无遮挡| 18岁禁 茉莉成人久久| 人人操人人摸人人骑| 日本裸体久久色噜噜| 日韩一级二级三级免费看完整版| 久久a久久| 亚洲色图欧美色图另类图片| 久久99国产综合精品女同| 国产精品久久久 | 国产在线不卡导航| 免费视频观看60秒| 91oumei| 91精品91久久久久77777俄罗斯老妇姓x| 免费夜夜爱黄色视频毛片| 麻豆91熟妇人妻中文字幕茄子| 狠狠中文字幕| 97爱| 综合97亚洲| 午夜福利免费精品视频| 熟女熟妇一区二区三四区| 丁香六月啪啪| 一区二区三区免费视频入口| 操人妻逼91| 国产成年免费大片黄在线观看| 日韩资源网| 午夜福利成人免费视频| 四虎AV在线播放| 三上制服丝AV| 超碰在线香蕉| 亚洲欧美洲综合| 欧美中文字幕男人天堂久久精品 | 91AV老熟女视频| 偷拍三区| 日本二三四区| yirendaxiangjiashipin| 多毛小伙内射老太婆| 欧美综合狠| 九九九久千久久激情蜜桃在线看 | 国产精品点击进入在线影院| 伊人性在线视频| 亚洲成人精品久久久| 中文字幕天堂在线| 亚洲性少妇| 制度丝袜99| 91少妇高潮| 91草草草| 99精品久久| 亚洲国产精品有声| 熟妇人妻丰满久久久久久久无码| 神马午夜久久久| 天堂种子在线www网资源| 波多野结衣AV无码一区| 中文字幕一品色图| 日韩国产十八禁| 柠檬AV导航| 可能人人看人人摸| 少妇综合| 午夜经典| 九九热精彩视频| 欧洲乱码一区二区| 国产99 中文字幕日韩小视频| 肏逼福利网站| 久久精品无码不卡| 黑人精品久久97| 蜜臀久久99精品久久久老,,| 99久久精品国产高潮| 国产日韩精品suv| 大鸡巴久久| 99精品高潮| 干B| 天美av在线观看| 婷婷伊人| 欧美综合国产精品久久丁香| 欧美精品97| 九九九九九九综合| 嗯嗯啊啊啊啊轻点视频| 久久夜嗨| 九色 人妻 大香蕉| 色情成人五月天| 欧美一区二区观看在线| 日韩精品国产一区二区| 亚洲欧美不卡线| 青青草福利视频| 日日日日做夜夜夜夜做无码97| 成人在线永久| 色婷婷蜜臀av| 日本一区99| 久操99| 特级大荫道BBwBBwBBW| 六月丁香婷| 日韩中文欧美| 久操婷婷| 思思热在线视频精品| 人人摸.人人色| 51久久夜色精品国产麻豆| 欧美AB在线| 中文字幕一区二区无码成人| 91宗合网| 蜜臀久久久99久久久久 | 2020视频1区2区3区| 青草av在线| 天天躁日日躁AAA片李宗瑞| www.久久最新地址| 多乙久久久久久| 青青操综合网| 亚洲中文字母在线播放| 404操逼福利视频| 在线观看精品国产免费| 国产男人又猛又粗又爽| 日韩性爱小视频在线观看| 在线观看AV片| 99热欧美| 日本三级韩三级99久久| 亚洲最大无码中文字幕网站| 97久久超碰| 色婷婷五月天| 9999伦理视频| 884t在线| 加勒比伊人综合| 蜜臀中文无码午夜| 久久αⅴ| 嫩草在线视频| 国产精品欧美日韩久久| 91九色精品熟女内射| 天天干,夜夜爽| 久久男人网| 一本色道久久综合亚洲二区三区| 欧美人妻一区二区| 毛片久久| 人妻 丝袜美腿 中文字幕| 天天看,天天做| 男人的天堂2019AV| 久久久久78| 亚洲图片偷拍欧美| 欧差乱伦二三| 亚洲精品九九九| 天天激情综合站| 综合网久久| 欧美少妇色综合| 日韩15p| 五月天婷婷在线看| 国产18精品亚洲精品| 97av在线视频| 九九英色视频| 天天爽入口| 欧美福利视频啊啊啊啊| 成人福利视频网| 91欧美| 亚欧美综合网。| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 97在线免费视频观看| 伊人操你| 欧美亚洲综合色| 搞中出视频在线观看| 超碰美国| 中日韩久久久| 激情露脸爱| 97网色| 十八岁啪啪视频免费看| 亚洲s在线观看| WWW美腿丝袜香蕉中文| 色综合V| 成功精品影院| 91精品婷婷国产综合久久| 无码精品久久| 99热免费| 中文字幕一二三av| 色婷婷六月丁香七月婷婷| 欧美综合站| 亚洲情色综合网| 三级色综合| 国产极品久久久| 麻豆精品.欧美精品.日韩精品.| 偷拍自拍在线视频观看| 久久久999日本大片| 嗯嗯啊啊啊好爽| 国产精品久久久久中文字幕| 国产成人AV麻豆| 呦呦影院| 欧美午夜精品久久久久久3D| 中文字幕欧洲有码| 国产一区二区三区视频在线看| 一区久久久二区| www欧美91| 狠狠干,狠狠操| 暴力av在线| 操逼1区| 视频黄站| 乱伦a片视频| 日日夜夜青青草母狗| 亚洲熟女av中文字幕| 99久久网站| 五月天婷婷社区| 家庭乱伦网站国产| 少妇久久久免费| 视频黄色国产一级| 天天操天天谢| 91人妻尻屄视频| 欧洲精品欧洲精品| 在线观看国产黄色| 999熟女精品| 熟女视频久久| 亚洲久9| 一级黄色影片| 综合网91| 91蜜臀在线久久久久| 另类图片欧美激情综合| 97色色国产视频| 人妻精品免费一二三区| 九九九久久久久| 午夜视频久久久久一区| 精品人妻一区二区三区视频| 亚洲日韩美国人妻| 日韩二区三四区五区六区在线看| 欧美强奸一区二区诱惑| 久艹视频在线| 国内91熟女人妻丝袜天天精品视频在线| 欧洲综合色图| 18一区二区三区| 四虎国产精品永久地址入口| 夜夜人妻爽| 免费毛片在线播放| 精品丰满熟妇人妻一区| 五月丁香色色网| 成人精品无码| 久久欧洲| 国产精选三级在线观看| 欧美色亚洲| 色综合潮| 日韩成人大片一区二区| 校园春色 亚洲| 涩爱AV在线| 亚洲黄色网址视频| 久久久极品| 久久亚洲不卡一区二区三区| 亚洲视频1区| 国产后入清纯| 男人的天堂2018东京热啪啪啪| 精品欧美老熟女一二区| 天天插天天操天天摸天天射天天看| 丁香啪啪| 91福利网在线观看| 熟妇一区,二区,三区。| 九九伊人网| 超碰无码加勒比| 中国91AV| 九九九九日本| 99精品视频在线观看| 欧 美 自 拍 偷 拍| 欧美伦乱| 日韩99神马视频片| 熟妇操花| 岛国在线免费视频| 91第一页| 嫩草影院永久在线制服丝袜| 色五月综合| 亚洲 国产 精品一区| 好爽视频在线观看视频| 九九九热精品| 国产久久一区二区午夜| 国产视频一区二区免费| 影视综合无码少妇| 日本幼女18+| 午夜精品久久999热蜜桃介男人用| 中文字幕国产精品1区| www.91逼逼.com| 黑人精品XXX一区一二区| 久欲AV| 欧美 亚洲 大香| 蜜臀久久99精品久久久老,,| 国产女人极品高潮毛片| 九九九精品成人免费视频小说| 在线看污网站| 啊啊啊啊啊啊啊啊啊啊在线观看| 久久99国产综合精品女同| 97色色网| 操逼逼福利视频| 午夜一区二区三区国产| 亚洲黄片免费在线播放| 78m啪啪啪| 色噜噜人妻av中文字幕| 五月天伊人| 综合网色| 亚洲成人综合在线| 亚洲熟女性高潮久久久| 无码高清操逼网址| 熟女乱3伦999| 色九久| 久久久久久久9| 丰满人妻-区二区三区| 呦女网站| 久艹99| 老鸭窝在线视频播放| 操死我了嗯嗯嗯| 精品性爱久久视频| 久噜噜| 老汉网| 亚洲熟久久| 啊嗯嗯啊好大好爽| 密臀视频一区二区三区| 99只有精品| 久久噜| 久久精品99久久久久久| 啊啊啊久久久视频| 少妇精品久久久八区九区| 日韩欧亚中文在线| 欧美一品道| 97精品一区二区视频在线观看| 99re在线视频| 熟妇无码视频三区| 国产sv美女内射| 欧美97网| 欧美亚洲情色| 岛国福利在线精品播放| 亚洲国产精品成人综合| 性爱视频无打码在线观看| 日韩一性一交一A片俄罗斯|