freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

課程設計報告-俄羅斯方塊-嵌入式-其他專業(yè)-全文預覽

2025-02-16 01:58 上一頁面

下一頁面
  

【正文】 newPiece()。 case Qt::Key_B: tryMove((), curX, curY)。 case Qt::Key_Up: pause()。 case Qt::Key_Right: tryMove(curPiece, curX + 1, curY)。 } QFrame::keyPressEvent(event)。 } if (gameOver){ (rect, Qt::AlignCenter, tr(Game Over))。 15 int y = curY (i)。 if (shape != HTetrisPieceShapeNone) drawSquare(painter, () + j * squareWidth(), boardTop + i * squareHeight(), shape)。 i HTetrisBoardHeight。 QPainter painter(this)。 if (isPaused) { ()。 (timeoutTime(), this)。 clearBoard()。 gameOver = false。 } QSize HTetrisBoard::sizeHint() const { return QSize(HTetrisBoardWidth * 15 + frameWidth() * 2, HTetrisBoardHeight * 15 + frameWidth() * 2)。 clearBoard()。 setFocusPolicy(Qt::StrongFocus)。 HTetrisPieceShape board[HTetrisBoardWidth * HTetrisBoardHeight]。 int curY。 bool gameOver。 QPointerQLabel nextPieceLabel。newPiece, int newX, int newY)。 void removeFullLines()。 } void clearBoard()。shapeAt(int x, int y) { return board[(y * HTetrisBoardWidth) + x]。 protected: void paintEvent(QPaintEvent *event)。 void rotateRight()。 void pause()。 void setNextPieceLabel(QLabel *label)。 (i, x(i))。 = pieceShape。 (i, x(i))。 = pieceShape。 } break。 i4。 i++){ setX(i,x(i))。 setY(i, tmp)。 } void HTetrisPiece::setRotate(HTetrisPieceRotate rotate) { switch(rotate){ case HTetrisPieceRotate90: for(int i=0。 for (int i = 1。 i 4。 ++i) max = qMax(max, coords[i][0])。 return min。 } int HTetrisPiece::minX()const { int min = coords[0][0]。 i4。 }。 private: void setX(int index, int x) { coords[index][0] = x。 int maxY() const。 } int y(int index) const { return coords[index][1]。} void setRandomShape()。 return lbl。 thissetFixedSize(240, 400)。 mainLayoutsetRowMinimumHeight(7, 30)。 mainLayoutaddWidget(leftButton, 8, 0, Qt::AlignTop | Qt::AlignLeft)。 mainLayoutaddWidget(createLabel(tr(Level)), 5, 3, Qt::AlignCenter)。 mainLayoutaddWidget(nextPieceLabel, 1, 3, Qt::AlignCenter)。 connect(board, SIGNAL(scoreChanged(int)), scoreLcd, SLOT(display(int)))。 connect(downButton, SIGNAL(clicked()), board, SLOT(moveDown()))。 bButtonsetFixedWidth(50)。 8 downButtonsetIcon(QIcon(:/images/))。 upButton = new QPushButton。 leftButtonsetIcon(QIcon(:/images/))。 levelLcdsetSegmentStyle(QLCDNumber::Filled)。 scoreLcd = new QLCDNumber(6)。 nextPieceLabelsetMinimumSize(60, 60)。 nextPieceLabel = new QLabel。 QPushButton *aButton。 QPushButton *leftButton。 HTetrisBoard *board。 class QPushButton。 return ()。 6 附錄 參考資料 [1 [2]C plus plus GUI Programming with Qt 4 2nd Edition [3 程序源碼 /* *Filename: *Author: Hale Chan *Date: 20211124 */ include QtGui include int main(int argc, char *argv[]) { QApplication app(argc, argv)。 removeFullLines 負責判斷是否某行全部為方塊,如果是,則把該行消除,同時添加一定分數(shù)及經(jīng)驗。 HTetrisBoard 是整個程序的核心,相對前兩個類,這個類要復雜很多。 HTetrisWindow 對應程序窗口 , 它包含一個游戲顯示區(qū) ( HTetrisBoard) 、輔助顯示區(qū)、及一些按鍵 , HTetrisWindow 在自身的構(gòu)造函數(shù)中完成對這些界面元素的初始化及布局工作 ,同時建立起必要的信號 槽連接。如果你在自己的函數(shù)中并不打算實現(xiàn)所有的處理,你可以調(diào)用基類的實現(xiàn)。一些事件,比如 QMouseEvent 和 QKeyEvent,來自窗口系統(tǒng);有的,比如 QTimerEvent,來自于其他事件源;另外一些則來自應用程序本 身。事件能夠能過被 QObject 的子類接受或者處理 ,但是通常用在與組件有關的應用中。同時,也能夠直接將一個信號與另一個信號相連(這會使第一個信號發(fā)出時,馬上發(fā)出第二個信號)。 槽能夠被用于接收信號,也能夠像普通函數(shù)一樣使用。信號在 3 對象改變其狀態(tài),并且這個狀態(tài)可能有別的對象關心時被發(fā)出。 Qt 的信號槽機制保證了,如果你把一個信號同一個槽連接,那么在正確的時間,槽能夠接收到信號的參數(shù)并且被調(diào)用。 Qt 組件有很多預定義的槽,但是更常見的是,通過繼承組件添加你自己的槽,以便你能夠按照自己的方式處理信號。 在 Qt 中,我們有回調(diào)技術之外的選擇:信號槽。這樣,處理函數(shù)就會在合適的時候調(diào)用回調(diào)函數(shù)。更一般 2 地,我們希望任何類型的對象都能夠與另外的對象通訊。 QWidget 作為所有能夠 顯示在屏幕上的組件的父類,擴展了這種父子關系。 QObject 組織成為對象樹。 關鍵字 QT、嵌入式、軟件開發(fā) 1 功能說明 ? 支持俄羅斯方塊游戲的基本功能 ? 支持虛擬按鍵 2 開發(fā)環(huán)境 操作系統(tǒng): ubuntu LTS 開發(fā)工具: gnu 編譯工具鏈 (gcc 等 )、 Qt Creator、 Qt Qt 簡介 Qt 是跨平臺的應用程序和 UI框架。本程序利用 Qt 提供的相關類,實現(xiàn)了俄羅斯方塊的基本功能。 Qt 安裝 官網(wǎng)( SDK 下載,下載開發(fā)平臺的 SDK,下載完成后點擊即可安裝 Linux系統(tǒng),也可能通過命令行進行安裝,以 ubuntu LTS 為例: sudo aptget install qt4devtools qtcreator qt4doc qt4qtconfig qtdemos Qt 開發(fā)平臺,則需要參考相關開發(fā)板的說明,一般 是先制作交叉編譯工具鏈、再交叉編譯一個用于目標板的 Qt 庫,這里不再詳述 Qt 開發(fā)基礎 Qt 對象與對象樹 QObject 是所有 Qt 類的基類。例如,一個 QShortcut(鍵盤快捷鍵)對象是相關窗口的子對象,所以當用戶關閉窗口時,這個對象也能夠被刪除。 信號與槽 在 GUI 編程中,當我們改變了一個組件,我們經(jīng)常需要通知另外的一個組件。回調(diào)是一個指向一個函數(shù)的指針,所以如果你希望某種事件發(fā)生的時候,處理函數(shù)獲得通知,你就需要將指向另外函數(shù)的指針(也就是這個回調(diào))傳遞給處理函數(shù)。第二,回調(diào)函數(shù)和處理函數(shù)緊密地耦合在一起,因為處理函數(shù)必須知道哪一個函數(shù)被回調(diào)。槽則能夠響應特定信號的函數(shù)。信號和槽是松耦合的:發(fā)出信號的類不知道也不關心哪些槽連接到它的信號。 所有繼承自 QObject 或者它的一個子類(例如 QWidget) 都可以包含信號槽。這是真正的信息封裝,保證了這個對象能夠成為一個組件。 你可以將任意多個信號連接到同一個槽上,也可能將一個信號連接任意多個槽。此類用來表示程序內(nèi)部發(fā)生或者來自于外部但應用程序應該知道的動作。 event() 函數(shù)本身并不會處理事件,根據(jù)事件類型,它將調(diào)用相應的事件處理函數(shù),并且返回事件被接受還是被忽略。這個虛函數(shù)負責做出適當?shù)捻憫?,通常是用來重繪組件。而未被消除的方塊會一直累積,并對后來的方塊擺放造成各種影響 4 如果未被消除的方塊堆放的高度超過場地所規(guī)定的最大高度(并不 一定是 20 或者玩家所能見到的高度),則游戲結(jié)束 系統(tǒng)模塊 如上圖所示,系統(tǒng)可由以下幾個模塊組成: ? 虛擬顯示屏:為系統(tǒng)核心模塊,負責游戲元素的顯示、游戲邏輯的執(zhí)行、以及游戲狀態(tài)的維護、接收操作模塊的操作信息、為輔助顯示模塊提供必要的信息 ? 輔助
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1