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

正文內(nèi)容

本科畢業(yè)論文-基于qt的貪吃蛇游戲設(shè)計與實(shí)現(xiàn)(參考版)

2025-01-19 17:46本頁面
  

【正文】 //難度設(shè)置按鈕 buttonsetText(tr(設(shè)置游戲難度 ))。 北京郵電大學(xué)畢業(yè)設(shè)計 22 setlabelsetPalette(pe1)。 QPalette pe1。 setlabelsetFont(QFont(Times,15,QFont::Black))。 setlabelsetAlignment(Qt::AlignCenter)。 //難度顯示器 setlabelsetFrameStyle(QFrame::Sunken | QFrame::Panel)。 //levelLabelsetGeometry(320,100,30,30)。 //等級標(biāo)簽 levelLabelsetFont(QFont(Times,15))。 //levelNumbersetGeometry(370,90,70,50)。 //等級顯示器 levelNumbersetSegmentStyle(QLCDNumber::Flat)。 //設(shè)置顯示內(nèi)容 //scoreLabelsetGeometry(320,40,30,30)。 //分?jǐn)?shù)標(biāo)簽 scoreLabelsetFont(QFont(Times,15))。 //scoreNumbersetGeometry(370,30,70,50)。 //得分顯示器 LCD數(shù)字顯示框 scoreNumbersetSegmentStyle(QLCDNumber::Flat)。 timeLabelsetText(Time:)。 timeLabel=new QLabel(this)。 初始化界面函數(shù) iniWidget() void Snake::iniWidget() { timeNumber=new QLabel(00:00:00)。初始化游戲時間為 00:00:00。 } 通過這個函數(shù)實(shí)現(xiàn)了 QWidget的簡單屬性設(shè)置,包括 QWidget的聚 焦及大小,初始化了貪吃蛇的運(yùn)動范圍,默認(rèn)設(shè)置游戲難度為禁止穿墻。 iniConnect()。hour=0。 //默認(rèn)初始化難度設(shè) 置為禁止穿墻 //初始化時分秒為 0 北京郵電大學(xué)畢業(yè)設(shè)計 21 sec=0。 //設(shè)置貪吃蛇活動區(qū)域大小 map_col=Width/step。 //設(shè)置 QWidgt大小 qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()))。 setFocusPolicy(Qt::StrongFocus)。 功能全面,如:開始新游戲、暫停、繼續(xù)、設(shè)置難度、查看游戲幫助 、退出游戲。易操作。為工作量繁大的用戶提供一個簡單而有趣的小游戲。 游戲相關(guān)信息顯示函數(shù),實(shí)現(xiàn)彈出對話框,提示游戲相關(guān)信息 。 操作信息顯示函數(shù), 實(shí)現(xiàn)彈出對話框,提示操作 說明 。 時間處理函數(shù),用于實(shí)現(xiàn)顯示游戲的時間 。 設(shè)置是否可穿墻函數(shù),將結(jié)果顯示在信息顯示界面 。 實(shí)現(xiàn)蛇在當(dāng)前方向下向前移動一步,并調(diào)用判斷是否吃到食物函數(shù)、判斷是否死亡函數(shù) 。 鍵盤處理事件, 捕獲按鍵信號 ,并作出相應(yīng)的處理 。 繪圖事件,繪制貪吃蛇、食物 。 獲取隨機(jī)顏色 。 更新并顯示等級,每增加 10個食物,升一級,并提高速度 。 更新并顯示得分 。 用于初始化游戲,設(shè)置初始速度、等級、已吃食物數(shù)量及定時器等,并 隨機(jī)得到 貪吃蛇和食物 的初始坐標(biāo) 。 通過之前的設(shè)置信息,判斷游戲是否結(jié)束 。 判斷貪吃蛇是否吃到食物 。 用于連接信號,使能夠在收到信號時,轉(zhuǎn)到相應(yīng)的函數(shù)處理 。 用于添加各類控件,并設(shè)置控件的屬性 。 Class Snake的析構(gòu)函數(shù),用于釋放一些空間 。 北京郵電大學(xué)畢業(yè)設(shè)計 19 Class Snake的 構(gòu)造函數(shù) ,設(shè)置 QWidget 的初始化信息,貪吃蛇運(yùn)動區(qū)域的大小,調(diào)用其他初始化函數(shù) 。 運(yùn)行時間 蛇移動方法及食物的顏色變化長期占用資源,改變方向、吃到食物、產(chǎn)生新食物都是瞬發(fā)動作,只是瞬間占用系統(tǒng)資源。 信息顯示界面中的按鈕點(diǎn)擊事件,發(fā)出信號,設(shè)置貪吃蛇運(yùn)動界面的限制性條件 。 系統(tǒng)的邏輯模型 系統(tǒng)的邏輯模型如圖 62所示 圖 62 系統(tǒng)邏輯模型 功能與程序的關(guān)系 ,信息顯示界面。當(dāng)你控制的貪吃蛇接觸到蛇的自身身體時或 墻壁時,游戲結(jié)束。 處理流程圖 基本概述了整個游戲的流程,首先打開游戲,彈出游戲的標(biāo)題畫面,等待游戲的加載,之后進(jìn)入游戲運(yùn)行界面,在此界面點(diǎn)擊右鍵會出現(xiàn)游戲幫助菜單、游戲關(guān)于菜單。 數(shù)據(jù) 字典 設(shè)計中用到的數(shù)據(jù)的名稱、類型、含義如表 61所示。且鏈表的第一個元素表示蛇的尾部。節(jié)是蛇身上最小的單位。 設(shè)計基礎(chǔ) 在設(shè)計中用到了節(jié)、數(shù)組、坐標(biāo)系來定義一些重要內(nèi)容,以便于程序的編寫。 蛇的移動 蛇的移動主要通過改變蛇的 坐標(biāo)位置,然后通過重繪蛇的位置,這樣就實(shí)現(xiàn)了蛇的移動 ,具體的為:從構(gòu)成蛇身的所有節(jié)點(diǎn)的最后一點(diǎn)開始,依次將前一個節(jié)點(diǎn)的坐標(biāo)賦值為后一個節(jié)點(diǎn),這樣就實(shí)現(xiàn)了蛇身的移動。 北京郵電大學(xué)畢業(yè)設(shè)計 15 6 貪吃蛇設(shè)計 系統(tǒng)的輸入輸出 輸入 在該程序設(shè)計中幾乎沒有什么從鍵盤你輸入的數(shù)據(jù),所有的程序所運(yùn)用的數(shù)據(jù)都是有程序本身提供的,由用戶來選擇,程序?qū)⒏鶕?jù)用戶的選擇來處理相應(yīng)的數(shù)據(jù),如在玩家改變游戲設(shè)置的時候,程序會根據(jù)玩家選擇的設(shè)置來改變圍墻的可穿性。這時 ,由于沒有清屏的原因 ,原來蛇的位置和新蛇的位置差一個單位 ,所以看起來蛇會多一節(jié)身體 ,應(yīng)將蛇的最后一節(jié)用背景覆蓋。移動時必須從蛇頭開始 ,所以蛇不能向相反移動 ,也就是蛇尾不能改作蛇頭。這個程序的關(guān)鍵點(diǎn)是表示蛇的圖形以及蛇的移動。通過按鍵盤上的四個光標(biāo)控鍵控制蛇向上下左右四個方向移動 ,蛇頭撞到食物 ,則表示食物被蛇吃掉 ,這時蛇的身體長一節(jié) ,同時計 10分 ,接著又出現(xiàn)食物 ,等待被蛇吃掉。標(biāo)題畫面以后,還要為游戲的運(yùn)行部分作初始化,包括繪制游戲運(yùn)行時的背景,對游戲某些重要變量的初始化。當(dāng)設(shè)置游戲難度為可以穿墻時,蛇頭的位置坐標(biāo)和自己身體的某個節(jié)點(diǎn)的坐標(biāo)相同時,蛇就死掉了,游戲結(jié)束。 食物的出現(xiàn)是先確定一組隨機(jī)數(shù),再填充方格,食物的消失是由于使用了更新函數(shù),當(dāng)吃掉食物后就不再重畫本次食物,而是生成一組新的隨機(jī)數(shù),畫新的食物 。用一個小矩形 塊 表示蛇的一節(jié)身體,身體每長一節(jié), 在身體最后 增加一個矩形塊。玩家可以通過鍵盤上下左右控制游戲區(qū)中貪吃蛇的行動 ,當(dāng)蛇頭碰到食物(和食物接觸)后增加蛇身 的長度 ,當(dāng)蛇碰到自己的身體或碰到墻壁時游戲結(jié)束。 特此說明,此軟件也可放在 Ubuntu環(huán)境下運(yùn)行。 ( 3)蛇可以運(yùn)動,隨著難易程度的不同,蛇的速度也不同;在界 面里可以隨機(jī)產(chǎn)生一個食物,但應(yīng)該注意不能和蛇身體一致,然后當(dāng)蛇 移 動并吃掉這個食物(覆蓋),北京郵電大學(xué)畢業(yè)設(shè)計 13 蛇的身體應(yīng)該相應(yīng)地增加,同時界面中顯示分?jǐn)?shù)一欄應(yīng)該相 應(yīng)地增加分值;當(dāng)蛇在移動的過程中頭部碰到墻壁,游戲結(jié)束。 ( 2)當(dāng)游戲剛開始的時候,先應(yīng)該產(chǎn)生一條蛇和隨機(jī)產(chǎn)生一個食物。 要解決的問題 ( 1) 可以用上 、下、左、右鍵游戲控制蛇的運(yùn)動方向,使之向著有食物的方向運(yùn)動,并吞吃食物使身體增長,如果蛇在移動過程中 ,撞到墻壁或身體交叉蛇頭撞到自己的身體游戲結(jié)束。 游戲主界面應(yīng)該力求美觀,賞心悅目。 游戲控制模塊: 主要完成游戲的開始、暫停、方向控制等功能。 需求規(guī)定 對功能的規(guī)定 本設(shè)計所開發(fā)的是基于 C++的一個貪吃蛇游戲軟件,主要實(shí)現(xiàn)游戲的開始、暫停、退出功能 ,分為:游戲主界面模塊、游戲控制模塊兩個模塊。 用戶特點(diǎn) 由于本程序簡單易操作,交互性好,對用戶沒有什么特別要求。 游戲的主界面應(yīng)該力求簡明美觀,賞心悅目,以提高玩家對游戲的興趣。 北京郵電大學(xué)畢業(yè)設(shè)計 12 任務(wù)概述 目標(biāo) 在如今社會,人們的工作學(xué)習(xí)壓力逐漸增大,生活節(jié)奏逐漸加快,大多數(shù)人沒有足夠的時間去休閑 娛樂,放松自己。雖然我的編程能力不是很強(qiáng),但是我有信心,在這次學(xué)習(xí)中我將從實(shí)踐和實(shí)際的項目中提高自己的編程能力。 貪吃蛇是家喻戶曉的益智類小游戲,選擇這個題目一是為了將自己的所學(xué)知識加以運(yùn)用,二是一直以來貪吃蛇這個游戲就深深地吸引著我,它的制作方法對于以前的我而言都是很神秘的??梢哉f該游戲的優(yōu)勢在于它的簡單易行,可以很快很順利的運(yùn)行。因?yàn)樗奶厥庠谟谒芪烁钊?,愛不釋手。因此,為了迎合眾多用戶的需求并適應(yīng)現(xiàn)在電腦的系統(tǒng),我們開發(fā)出一套適合各階層人士的具有很強(qiáng)娛樂性和交互性的貪吃蛇小游戲。 此需求分析說明書對貪吃蛇游戲軟件做了全面細(xì)致的用戶需求分析,明確所要開發(fā)的游戲軟件應(yīng)該具有的功能,并在此基礎(chǔ)上進(jìn)一步提出概要設(shè)計說明書和完成后續(xù)和開發(fā)工作。同時,需求過程與分析活動之間有相 當(dāng)程度的重疊,分析建模對于設(shè)定工作的范圍和其他一些事來說是必要的,所以我們利用分析模型來描述需求過程,隨著開發(fā)工作的繼續(xù),分析活動在工作中占的比例將變得越來越大,直到所有需求都已知。系統(tǒng)設(shè)計將來自于需求分析的抽象規(guī)格說明轉(zhuǎn)變?yōu)槊嫦蛘鎸?shí)世界的設(shè)計。 4 需求分析 研究目的 需求分析是系統(tǒng)開發(fā)必要環(huán)節(jié),也是重中之重。 可行性研究方法 通過 對周邊的企業(yè)職員和大學(xué)生進(jìn)行問卷調(diào)查,發(fā)現(xiàn)大家在閑暇時間大都會選擇玩游戲來打發(fā)時間,而且偏向簡單靈活的小游戲。 C++: 是在 C語言的基礎(chǔ)上開發(fā)的一種集面向?qū)ο缶幊獭⒎盒途幊毯瓦^程化編程于一體的編程語言 。 Qt Creator 可帶來兩大關(guān)鍵益處:提供首個專為支持跨平臺開發(fā)而設(shè)計的集成開發(fā)環(huán)境 (IDE),并確保首次接觸 Qt框架的開發(fā)人員能迅速上手和操作。 Qt 很容易擴(kuò)展,并且允許真正地組件編程。 專業(yè)術(shù)語 Qt:是一個跨平臺的 C++圖形用戶界面應(yīng)用程序框 架。 經(jīng)濟(jì)可行性 貪食蛇主要是通過 QT軟件編寫,在自己電腦上即可編寫實(shí)現(xiàn)。用戶使用此游戲也很簡單,游戲主要使用上 下左右控制貪食蛇吞食界面上出現(xiàn)的食物,簡單容易上手,同時能鍛煉用戶的操作及靈敏。因此我選定了這個題目。我希望通過自己的所學(xué)知識把它剖析開來,真真正正的了解它的本質(zhì)和精髓。游戲也正在迅速成長為一個龐大的產(chǎn)業(yè)。過去,人們主要是借助電影、電視、音樂等方式來娛樂。 開發(fā)的可行性 目前,以計算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)為核心的現(xiàn)代網(wǎng)絡(luò)技術(shù)已在現(xiàn)實(shí)生活和生產(chǎn)中得以廣泛的使用,休閑類網(wǎng)絡(luò)游戲集趣味性,娛樂性,互動性和益智性于一體,已經(jīng)成為多數(shù)人群的休閑方式。 該階段通過對系統(tǒng)目標(biāo)的初步調(diào)研和分析,提出可行性 方案并進(jìn)行論證。 pos )信號返回點(diǎn)擊位置 pos(在表頭視口坐標(biāo)系中位置),然后表頭即可調(diào)用 logicalIndexAt(pos)函數(shù)得到被點(diǎn)擊 section 對應(yīng)的 index即被點(diǎn)擊部分的列號,然后存下來可供后面 action 激活的排序槽使用。 使用 Qt::ActionsContextMenu 比較簡潔,但是如果需要根據(jù)當(dāng)前菜單彈出的位置來定義不同菜單,或者像上個例子,在表格( QTableView類型)表頭顯示右鍵菜單時,我需要知道是哪一列表頭被點(diǎn)擊,從而在后來調(diào)用 sort_ascend()排序函數(shù)時能夠根據(jù)不同列進(jìn)行不同排序策略,那么 Qt::ActionsContextMenu 就做不到了。 3)使用 Qt::ActionsContextMenu。但是對于 QAbstratScrollArea 及其子類例外,是對應(yīng)著其視口 viewport()的坐標(biāo)系。 pos ) 該信號的發(fā)出條件是: 用戶請求 contextMenu(常規(guī)就是鼠標(biāo)右擊啦)且同時被擊的 widget其 contextMenuPolicy 又是 Qt::CustomContextMenu。 它是發(fā)出 QWidget::customContextMenuRequested 信號,注意僅僅只是發(fā)信號,意味著要自己寫顯示右鍵菜單的 slot。就是要重寫 contextMenuEvent ( QContextMenuEvent * event )函數(shù)。繪制點(diǎn) drawPoint()、繪制直線 drawLine()、繪制折線drawPolyLine()、繪制多點(diǎn) drawPoints()、繪制多直線 drawLines()、繪制矩形區(qū)域drawRect()、繪制圓角區(qū)域 drawRoundRect()、繪制橢圓 drawEllipse()、繪制背景圖片 drawPixmap()等! 右鍵菜單 QWidget及其子類都可有右鍵菜單,因?yàn)?QWidget有以下兩個與右鍵菜單 有關(guān)的函數(shù): Qt::ContextMenuPolicy contextMenuPolicy () const void setContextMenuPolicy ( Qt::ContextMenuPolicy policy ) 使用方式如下: 1)默認(rèn)是 Qt::DefaultContextMenu。 可以
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1