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

正文內(nèi)容

基于qt的推箱子游戲的設(shè)計與實現(xiàn)論文(編輯修改稿)

2024-12-16 03:29 本頁面
 

【文章內(nèi)容簡介】 組件來使用。 槽 用于接收信號,而且槽只是普通的對象成員函數(shù)。一個槽并不知道是否有任何信號與自己相連接。而且對象并不了解具體的通信機制。 信號與槽的連接 如果這個類是從 QObject 或其子類派生的 ,那么這個 類 就包含了信號和槽 。 這是因為 QObject 的 connect() 成員函數(shù)是用來實現(xiàn)信號和槽的連接的。 connect(sender, SIGNAL(signal), receiver, SLOT(slot))。 其中 sender 與 receiver 是指向?qū)ο蟮闹羔槪?SIGNAL() 與 SLOT() 是轉(zhuǎn)換信號與槽的宏。 特點 : 信號的接收者數(shù)量是不受限制的,也就是一個信號可以由多個槽接受。當(dāng)信號發(fā)射出去以后,沒有指定的特定的槽,而是一個接一個的 去調(diào)用槽。 多個信號可以連接同一個槽即無論是哪一個信號被發(fā)射,都會調(diào)用這個槽。信號直接可以相互連接發(fā)射第一個信號時,也會發(fā)射第二個信號。 7 應(yīng)注意的問題 信號與槽機制在使用時也會有一定的危險性,因為這與普通函數(shù)的調(diào)用是一樣的,如果在使用 的過程中不恰當(dāng),那么,就可能造成程序崩潰,或者在執(zhí)行的時候進(jìn)入死循環(huán)。所以,為了避免這些危險,再定義槽函數(shù)時,不好出現(xiàn)間接循環(huán),比如,不要用槽在發(fā)射接收到的相同的信號。 當(dāng)一個信號與多個槽建立了連接,那么當(dāng)這個信號發(fā)射時,與之建立連接的槽都會被隨機的激活。 宏定義不能用在 signal 和 slot 的參數(shù)中。 信號和槽的參數(shù)個數(shù)與類型必須一致。 8 3 環(huán)境搭建 這個項目課題是在 Microsoft Visual Studio 2020 + 環(huán)境搭建下完成的 搭建過程如下: 首先要 安裝 Microsoft Visual Studio 2020 軟件 ; 然后安裝 Qt for Windows 32bit, 路徑是可以隨便選擇的,但是路徑名稱最好不要包含英文 ; 其次就是 安裝 Visual Studio Addin for Qt5; 再安裝的步驟住,一直默認(rèn)選項就可以。 前面的軟件安裝完成后,就是設(shè)置 系統(tǒng)環(huán)境變量 ,在系統(tǒng)環(huán)境變量 中添加 QTDIR,安裝 路徑 是 “ \msvc2020”,還要 在系統(tǒng)環(huán)境變量中添加 QtANGLE,安裝路徑是“ \msvc2020\include\QtANGLE”; 現(xiàn)在 打開 Microsoft Visual Studio 2020, 在軟件的菜單欄就會 多一項 QT5選項 ,點擊 QT5 下的 qt option, 然后 把第 四 步 中添加的環(huán)境變量添加 進(jìn)去。 最后測試是否成功。 9 4 推箱子游戲的總體設(shè)計 推箱子 的 簡介 這個游戲來源于日本,它是日本的一個古老的游戲。古人們通過這個游戲鍛煉大腦的邏輯思考能力。游戲的大概內(nèi)容是,在一個指定的很狹窄的區(qū)域范圍內(nèi),游戲者通過將所有箱子移動到指定的位置,獲取勝利。但是,如果游戲者稍有不小心就會無法移動箱子或者走動的通道就會被卡住,因此,這個游戲有很多的技巧在其中,需要游戲者通過邏輯思考去完成游戲。 在游戲開始后,游戲中會出現(xiàn)一個小人,玩家通過利用方向鍵移動小人,并推動箱子到游戲指定的位置。 推箱子游戲所實現(xiàn)的 功能 第一 在運行時,會顯示主界面以及菜單欄。菜單欄的作用主要是為玩家提供幫助以及供玩家游戲進(jìn)度的選擇。主界面包括了開始的界面,當(dāng)前關(guān)卡的顯示,當(dāng)前步數(shù)的顯示等。 第二 能夠讓玩家自由的選擇關(guān)卡,本游戲總共設(shè)置了 3關(guān),可以任由玩家自由選擇 。同時,還設(shè)置了選擇上一關(guān)卡和選擇下一關(guān)卡的功能。玩家在玩的過程可以隨意切換。 第三 在玩的過程中,如果玩家想重新開始,那么該游戲也提供了此功能,只需要點擊重新開始,玩家就可以重新玩該游戲。當(dāng)然,如果不想玩了,你可以點擊結(jié)束游戲功能,游戲會回到主界面。 第四 在游戲的過程中,游戲會自動 記錄當(dāng)前的關(guān)卡,可以提醒玩家當(dāng)前的關(guān)卡。在玩家移動小人的過程中,游戲的右面有自動記錄小人移動步數(shù)的記錄器,提高玩家競爭性。 第五 自動識別勝負(fù)功能,當(dāng)玩家將所有箱子移動到指定的位置后,系統(tǒng)會自動識別游戲是否完成。如果完成,那么會判別是否所有的掛卡都已經(jīng)通過,如果都通過,那么會提示闖關(guān)成功。如果沒有,會自動進(jìn)入下一關(guān)。 第六 能實現(xiàn)鍵盤支持功能。該游戲能接受鍵盤上的信息。根據(jù)玩家按得方向鍵的不同,進(jìn)行小人的移動。 10 第七 有幫助菜單幫助玩家。該菜單主要是幫助玩家如何進(jìn)行游戲以及對該游戲簡要介紹。 推箱子游戲系統(tǒng)的設(shè)計 游戲的功能架構(gòu) 在設(shè)計推箱子游戲時,根據(jù)推箱子游戲的基本要求以及做出的功能,進(jìn)行游戲結(jié)構(gòu)的設(shè)計,游戲的功能框架如圖 41 所示 圖 41 游戲的功能框架 圖 程序結(jié)構(gòu)設(shè)計 在這個游戲中,共有 3個類和 3個模塊組成。 第一 主界面對話框類,這個對話框主要是負(fù)責(zé)主界面,菜單,以及各個窗口類對象的創(chuàng)建和調(diào)用等的處理。 第二 鍵盤操作模塊。這個模塊主要是通過鍵盤操作可控制小人的移動,以及對關(guān)卡的選擇和設(shè)置。 第三 關(guān)口選擇對話框類。主要提示用戶關(guān)卡的選擇和關(guān)卡的設(shè)置。 主界面顯示 功能 選擇關(guān)卡功能 鍵盤操作功能 幫助功能 游戲勝負(fù)判斷功能 關(guān)卡顯示 功能 步數(shù) 計數(shù)功能 重新開始 功能 推箱子游 11 第四 地圖的繪制模塊。在這個模塊中,通過這個模塊,可以繪制地圖的形成。并進(jìn)行相應(yīng)的解析工作。 第五 幫助對話框類。 這主要是幫助玩家了解游戲。讓玩家了解游戲的來歷,以及游戲如何操作。 第六 游戲的規(guī)則模塊。主要負(fù)責(zé)游戲規(guī)則的判斷。 42 程序設(shè)計結(jié)構(gòu)圖 維護(hù)設(shè)計 該項目是一個經(jīng)典的小游戲,在開發(fā)該游戲的時候時刻注意開發(fā)的每個細(xì)節(jié),防止出現(xiàn)差錯。開發(fā)完成后,基本上不可能在出現(xiàn)大的程序錯誤,所以,后期的主要維護(hù)就是用戶的體驗以及在用戶使用過程中出現(xiàn)的錯誤,把這些解決就可以了。 游戲界面的設(shè)計 主界面 推箱子主界面設(shè)計代碼: 推箱子游戲 三個 類 三個模塊 關(guān)卡 選擇對話框類 幫助對話框類 游戲的規(guī)則 模塊 主界面對話框 類 鍵盤操作模塊 地圖繪制模塊 12 QpushBox::QpushBox(QWidget *parent): QMainWindow(parent) { createMenu()。 //創(chuàng)建菜單函數(shù) createAction()。 //創(chuàng)建按鈕函數(shù) widget=new QWidget。 QPalette palette = widgetpalette()。 (QPalette::Background,QBrush(Qt::gray))。//背景設(shè)為灰色 widgetsetPalette(palette)。 widgetsetAutoFillBackground(true)。 setCentralWidget(widget)。 levelLabel=new QLabel(QStringLiteral(當(dāng)前關(guān)卡 ))。 //設(shè)置字號 QFont ft。 (14)。 //設(shè)置字體大小 levelLabelsetFont(ft)。 //設(shè)置顏色 QPalette pe。 (QPalette::WindowText,Qt::black)。 levelLabelsetPalette(pe)。 stepLabel=new QLabel(QStringLiteral(當(dāng)前步數(shù) ))。 //創(chuàng)建步數(shù)標(biāo)簽 stepLabelsetFont(ft)。 //設(shè)置格式 stepLabelsetPalette(pe)。 levelLCD=new QLCDNumber。 //聲明一個關(guān)卡變量 levelLCDsetSegmentStyle(QLCDNumber::Flat)。 stepLCD=new QLCDNumber。 //聲明一個步數(shù)變量 stepLCDsetSegmentStyle(QLCDNumber::Flat)。 restartButton=new QPushButton(QStringLiteral(重新開始 ))。 connect(restartButton,SIGNAL(clicked()),this,SLOT(restartGameSlot()))。 restartButtonsetEnabled(false)。 //讓重新開始按鈕失效 QVBoxLayout *rightLayout=new QVBoxLayout。 13 rightLayoutaddSpacing(10)。 rightLayoutaddWidget(levelLabel)。 //關(guān)卡標(biāo)簽垂直部署 rightLayoutaddWidget(levelLCD)。 rightLayoutaddSpacing(30)。 //設(shè)置空格 30 // QImage *image=new QImage(./)。 //加載圖片 QLabel *label=new QLabel(this)。 //實例化圖片 labelsetGeometry(0,0,500,500)。 labelsetPixmap(QPixmap::fromImage(*image))。 rightLayoutaddWidget(label)。 // rightLayoutaddSpacing(30)。 rightLayoutaddWidget(stepLabel)。 //將步數(shù)標(biāo)簽加到窗口 rightLayoutaddWidget(stepLCD)。 rightLayoutaddWidget(restartButton)。 rightLayoutaddSpacing(30)。 mainmap=new mappaint。 QHBoxLayout *mainLayout=new QHBoxLayout。 //水平布局設(shè)置 mainLayoutaddWidget(mainmap)。 mainLayoutaddLayout(rightLayout)。 widgetsetLayout(mainLayout)。 mainmaplevelNow=0。 //初始化關(guān)卡為 0 mainmapstepNow=0。 //初始化步數(shù)為 0 mainmapman_x=0。 mainmapman_y=0。 mainmapBeginOrEnd=1。 mainmapupdate()。 //重新繪制圖片 boxNum=0。 levelLCDdisplay(mainmaplevelNow)。 stepLCDdisplay(mainmapstepNow)。 14 createMap()。 //程序整體設(shè)定 setWindowTitle(QStringLiteral(推箱子小游戲 LQN 設(shè)計 ))。 widgetsetFocus()。 statusBar()showMessage(QStringLiteral(歡迎進(jìn)入推箱子小游戲。 ))。 } 推箱子的主界面如圖 43 所示 圖 43 推箱子游戲主界面 圖 主界面的背景以純灰色進(jìn)行覆蓋,在左面用一張推箱子的圖片作為主要的界面,讓用戶一眼就知道這是什么游戲。右邊分別有當(dāng)前關(guān)卡的計數(shù)表,當(dāng)前步數(shù)的計數(shù)表,以及一個重新開始按鈕。 在該游戲中,用草地進(jìn)行鋪設(shè)場地,墻是用灰色的石頭 圍成的。小人用的卡通人物藍(lán)精靈,在圖 44中放置了三個箱子,三個小球,三個小球作為箱子的指定地點。 15 圖 44 游戲界面圖 菜單結(jié)構(gòu) 菜單結(jié)構(gòu)如圖 45所示 圖 45 菜單結(jié)構(gòu)圖 關(guān)卡 選擇 關(guān)卡的代碼 設(shè)計 如下
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1