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

正文內(nèi)容

基于wpf的數(shù)獨游戲的開發(fā)畢業(yè)設(shè)計-資料下載頁

2025-07-10 12:01本頁面

【導(dǎo)讀】下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的。獲得及其它教育機構(gòu)的學(xué)位或?qū)W歷而使用過的材料。權(quán)保存畢業(yè)設(shè)計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);目的前提下,學(xué)校可以公布論文的部分或全部內(nèi)容?!皵?shù)獨”,顧名思義——每個數(shù)字只能出現(xiàn)一次。×n矩陣中填入數(shù)字,使得每一行、列和宮格里的數(shù)字不重復(fù)。這種游戲全面考驗做題者觀察能力和推理能力,雖然。玩法簡單,但數(shù)字排列方式卻千變?nèi)f化,所以不少教育者認為數(shù)獨游戲是訓(xùn)練頭腦的絕佳方式。研究人員建議將數(shù)獨游戲作為日?;顒拥囊徊糠?。基于DirectX9/10技術(shù)的WPF不僅帶來了前所未有的3D界。通過WPF,.NETFramework提供了一種比較。完整和一致的解決方案,以用于應(yīng)對用戶界面方面的難題。程序員在WPF的幫助下,將更加有效的工作開發(fā)出媲美。本論文著眼于WPF技術(shù)的應(yīng)用,開發(fā)一款具有精致美觀界面的Windows游戲程序——數(shù)。本論文介紹了WPF的相關(guān)技術(shù)及本程序的結(jié)構(gòu)分析和具體功能的實現(xiàn)。

  

【正文】 現(xiàn)的: ListBox SelectedItem ={Binding Path=Value,Mode=TwoWay} DataContext ={Binding RelativeSource} ={RelativeSource TemplatedParent},Path=DataContext} ItemsSource= {Binding Path=PossibleValues}/ 其中 ItemsSource 綁定的為候選數(shù)的值,這樣根據(jù)游戲規(guī)格的不同, ListBox 中的選擇項也會跟著不同。 如 圖表 53 游戲棋盤與填充菜單 所示是 9 9 規(guī)格的標準棋盤 , 具有藍色玻璃外觀上的數(shù)字為已知數(shù),通過鼠標右鍵點擊待填空格,可以彈出候選數(shù)菜單用于向空的數(shù)格填入數(shù)字。 圖表 53游戲棋盤與填充菜單 當玩家填充的數(shù)字是有沖突的,即所填數(shù)字的是 IsVaild 的值為 false 時候,顏色將變?yōu)榧t色 。 這主要是通過 DataTrigger 觸發(fā)實現(xiàn)的,其主要代碼如下: DataTrigger Binding ={Binding IsValid} Value =False Setter TargetName =TextBlock Property =Foreground Value=Red/ /DataTrigger 這個功能在一定程度上提醒了玩家所填數(shù)字的合法性,效果如 圖表 54 填入數(shù)字非法的提示 。 16 圖表 54填入數(shù)字非法的提示 計時器實現(xiàn) 圖表 55計時器的三種狀態(tài) 、 計時器的實現(xiàn)是通過使用自定義控件 Stopwach 來實現(xiàn)的 。 如 圖表 55 計時器的三種狀態(tài) ,計時器擁有三種狀態(tài),當用戶選用的是有計時器的狀態(tài),計時器顏色偏亮,其主要是通過外發(fā)光( OuterGlowBitmapEffect)來實現(xiàn): OuterGlowBitmapEffect GlowSize=10 GlowColor =LimeGreen/ / 當暫停計時,顏色變暗,上方數(shù)字也停止變動 。 未啟用計時器則是通過禁用計時器面板,并將計時器面板的 Opacity 屬性設(shè)為 。 計時器上的數(shù)字跳動,則是通過 StoryBoard 定義了一組動畫,里面有時間變化: !計時器動畫提供對象和屬性目標信息的容器時間線 Storyboard x:Key =TimerAnimation DoubleAnimation From =0 To =1 =StopWatchControl Duration=0:2:0 =CurrentTime/ Int32Animation From =1 To =0 =MinNumber =Tag Duration =0:2:0/ Int32Animation From =59 To =0 RepeatBehavior=Forever =SecNumber =Tag Duration =0:1:0/ Int32Animation From =59 To =0 RepeatBehavior=Forever =SubSecNumber =Tag Duration =0:0:1/ /Storyboard 17 解題器實現(xiàn) 解題器 圖表 56 解題器 ,被放置于 Expander 控件內(nèi)。在其里面,左邊有一個 ListBox 列出了所有的解題器,用戶可以選擇相應(yīng)的解題器用于生成題目和解題。當選擇了相應(yīng)的解題器后,將在右邊出現(xiàn)解題器的相關(guān)信息。 ListBox 下有一個 AI 對戰(zhàn)按鈕,用于人機對戰(zhàn),按下之后,將在獨立線程解題,解題完成后會將結(jié)果以槽的形式顯示在其中間。 圖表 56解題器 其他界面實現(xiàn) 其他界面的設(shè)計主要目的,是為了讓界面看起來更友好、美觀,不至于那么單調(diào),充分發(fā)揮了WPF 的優(yōu)勢。 游戲的背景類似水波蕩漾的效果是通過觸發(fā)器,在“ ”時候 觸發(fā) 一組動畫。 標題的倒影效果則是通過 VisualBrush 的渲染實現(xiàn)。 程序的開始運行時標題的特效也是 通過 LinearDoubleKeyFram 使用線性內(nèi)插,在前一個關(guān)鍵幀 和自己的 Value 之間進行動畫處理 來實現(xiàn)。 游戲的其他界面如友好的對話框如,對話框顯示“請稍后”,等提示玩家的界面相對簡單,這里不再做介紹。 用戶功能模塊實現(xiàn) 新游戲?qū)崿F(xiàn) 當用花按下新游戲按鈕的時候,將產(chǎn)生新的游戲。調(diào)用后臺的 NewGame_Click 處理,其主要根據(jù)當前所選擇游戲規(guī)格設(shè)置 GameBoard 大小,如果是快速生成方式,調(diào)用 GenerateGame 方法產(chǎn)生謎題。 使用解題 器的方式由于耗時較多,因此定義了一個 BackgroundWorker 使得生成謎題時候算法在單獨的線程上執(zhí)行操作 , 主要代碼如下: ISudokuSolver sol = as ISudokuSolver。 //所使用算法為列表選項 solverWorker = new BackgroundWorker()。 //初始化 += new DoWorkEventHandler(delegate(objectdwsender, DoWorkEventArgs dwe)//DoWorkEventHandler { (sol, givens)。 //調(diào)用使用解題器的生成游戲方法 })。 += new RunWorkerCompletedEventHandler(delegate (object rwcsender, RunWorkerCompletedEventArgs rwce) {//當后臺操作已完成時 += new ChangedEventHandler(GameBoard_PropertyChanged)。 //監(jiān)視棋盤是否填滿 })。 18 保存游戲、讀取游戲?qū)崿F(xiàn) 按下保存游戲按鈕的時候,將彈出保存文件的對話框。當按下保存按鈕的時候,將以二進制格式將對象系列化為流將其寫入磁盤: if ((this) == true) { Stream s = new FileStream(, )。 IFormatter f = new BinaryFormatter()。 //以二進制格式將對象序列化 (s, ())。 //將對象棋盤對象序列化為所提供的流 ()。 } 讀取游戲過程也是相類似的,是保存游戲的逆過程。當選擇打開后,若讀取失敗后通過消息框提示。否則將所讀的流反序列化。 游戲設(shè)定 游戲的時間難度是在生成游戲的時候, 通 過判斷 單選按鈕來設(shè)置的。當選擇沒計時器的時候,時間面板將被禁用,計時器也會被設(shè)為禁用。 如果有選擇時間難度,則根據(jù)所選項,進行時間的相應(yīng)設(shè)置,將時間設(shè)置為不同的長度。 計時功能實現(xiàn) 在計時器上添加 Checked=ResumeTimer Unchecked=PauseTimer,當點 擊 計時器的時候,將由PauseTimer 事件來處理 。 通過將動畫暫停, Pause 使得時間停止走動,并把棋盤禁用掉,使得游戲不能進行 。 再次點擊時候則調(diào)用 ResumeTimer,將時間恢復(fù),并將棋盤設(shè)為可用。 解題器插件實現(xiàn) 解題器里 有一個 ListBox 列出了所有的解題器,用戶可以選擇相應(yīng)的解題器用于生成題目和解題。當選擇了相應(yīng)的解題器后,將在右邊出現(xiàn)解題器的相關(guān)信息。 ListBox 下有一個 AI 對戰(zhàn)按鈕,用于人機對戰(zhàn),按下之后,將在獨立線程解題。在解題的同時,玩家還可以繼續(xù)游戲。 在題目解出后,會將時間以狀態(tài)條的形式顯示出來,狀態(tài)條上繪制有相應(yīng)的時間,如 圖表 57 解題器繪制的狀態(tài)條 : 圖表 57解題器繪制的狀態(tài)條 19 6. 測試打包的過程 打包 在使用 Visual Studio 完成代碼的編碼與調(diào)試后, 生成 WPF 應(yīng)用程序后,需要部署它們 ,在此采用 Windows Installer 進行 部署 。通過 Windows Installer , 將 應(yīng)用程序打包為獨立的可執(zhí)行程序,它們可以容易地分發(fā)到客戶端并運行。而且, Windows Installer 隨 Windows 安裝,從而能與桌面、 “開始 ”菜單和 “添加 /刪除程序 ”控制面板集成。 在 Visual Studio 中, 添加一個 SudokuSetup 的 “安裝 ”項目 ,它能將 文件安裝到目標計算機的文件系統(tǒng)中 。 在“文件系統(tǒng)”的“目標計算機上的文件系統(tǒng)”節(jié)點下選中“應(yīng)用程序文件夾”,添加一個名為“ Sudoku”的文件夾。接下來,該文件夾“添加項目輸出對話框”在該對話框中的“項目”下拉列表框中選擇要部署的應(yīng)用程序 SudokuWPF,然后選擇要輸出的類型 。 這里選擇主輸出,即可將項目輸出文件添加到 SudokuSetup 安裝項目中。 為了使程序能夠在客戶端運行,需要添加依賴項。在“ Sudoku”文件夾下選擇要添加的內(nèi)容文件,單擊“打開”按鈕即可將選中的內(nèi)容文件添加到安裝 項目中,這里需要添加的是解題器 Solvers 的文件夾和自制的題庫。 創(chuàng)建主輸出來之 SudokuWPF(活動)的快捷方式,將其拖動到目標計算機上的文件系統(tǒng)的桌面目錄。 “安裝 ”項目 的文件系統(tǒng)的配置如 圖表 61 SudokuSetup 的 “安裝 ”項目 的文件系統(tǒng)配置 。 圖表 61 SudokuSetup 的 “安裝 ”項目 的文件系統(tǒng)配置 在添加數(shù)獨游戲所需的項目輸出文件、 內(nèi)容文件、快捷方式等內(nèi)容后,在“解決方案資源管理器”中的 SudokuSetup 單擊生成,即可生成的 Windows Installer 軟件包 , 如 圖表 62 SudokuSetup 軟件包 。 圖表 62 SudokuSetup 軟件包 由于測試在編碼調(diào)試過程中已經(jīng)基本完成,所以本階段的測試是在程序打包后,將游戲分發(fā)給不同玩家使用,以期望發(fā)現(xiàn) BUG。 20 發(fā)現(xiàn)的 BUG 及解決 情況 幾乎每一個程序都會有這樣或那樣的不足,尤其是未經(jīng)過精心維護的非商業(yè)軟件。即使是作為操作系統(tǒng)的 Windows 也時常會發(fā)生許多類型的錯誤和漏洞。本游戲當然或多或少也存在些 bug,主要發(fā)現(xiàn)的 BUG 如下:編寫的遞歸解法,可以實現(xiàn)大部分題目的解題。不過可能出現(xiàn)“死遞歸”,即一直遞歸下去。 分析后,發(fā)現(xiàn)這主要是由于所采用的解題算法 —— 遞歸對于求解個別復(fù)雜的題目時,效率不高,比如對于本游戲提供的題庫的一道專殺暴力搜索程序的數(shù)獨,此算法就需要花費 40 多分鐘才能求解出答案,而其它的一般都是在一秒鐘內(nèi)就可以求解出答案。這 里的 AI 的設(shè)計與實現(xiàn)需要大量的研究和廣泛的試驗,這并不是短時間能做到的。 對此的 BUG 的暫時解決方案是在此期間友情提示玩家,當花費時間過長提示玩家重啟程序。在后期,將考慮數(shù)獨問題轉(zhuǎn)換為精確覆蓋的問題,采用 Knuth 的 Dancing Links 算法進行求解。 另一個主要 BUG 是:在 Windows XP 系統(tǒng)下,程序運行時候?qū)⒄加?100%的 CPU 問題,而在Windows 7 上測試卻沒有此現(xiàn)象。 經(jīng)查資料后,發(fā)現(xiàn)主要原因之一:操作系統(tǒng)版本的驅(qū)動模型影響。在 Windows Vista 以上版本的操作系統(tǒng)中 , WPF可以 充分利用新的 Windows Vista顯示驅(qū)動模型 (Windows Vista Display Driver Model,WDDM),相對于 Windows XP 的顯示驅(qū)動模型 (Windows XP Display Driver Model, XPDM), WDDM提供了幾處非常重要的改進。 WPF 所用到的動畫是使用了基于幀的動畫技術(shù), WPF 每秒將會調(diào)用 60次 事件關(guān)聯(lián)事件處理程序。在 WDDN 驅(qū)動模型下, WPF 程序會根據(jù)顯卡性能自動調(diào)節(jié)每秒的幀數(shù),使其不會占用大量 CPU。而在 XP 上則不存在自動調(diào)節(jié)幀數(shù)的問題。 目前在 XP 下解決占用 CPU 100%的技巧是,重寫 依賴項屬性的 PropertyMetadata,將 DefaultValue 設(shè)為較低的值: (typeof(Timeline), new FrameworkPropertyMetadata { DefaultValue = 5 })。//設(shè)置每秒傳輸 幀數(shù) 5 幀 未完善的功能 到目前為止,這已經(jīng)是一個功能較為完善的數(shù)獨游戲了。不過還可以做得 更好,經(jīng)過測試之后,發(fā)現(xiàn)本游戲可以完善的功能: 添加更多的解題器插件,寫一個更好的算法,使解題和生成題目的時間更短。 將界面風(fēng)格和邏輯分離得更清楚,實現(xiàn)皮膚定制和顏色風(fēng)格的變更。 添加更多的效果和動畫使游戲更具美觀。 使游戲具有背景音樂和聲音效果。 21 7. 結(jié)論 游戲的總結(jié)和展望 本游戲設(shè)計實現(xiàn)了 .NET Framework 上 WPF 為平臺的益智類游戲的數(shù)獨的開發(fā),游戲采用可以產(chǎn)生大量不同游戲的隨機生成的方法,具有 極高的耐玩性和益智性。經(jīng)過了細心的調(diào)試和排錯解決了絕大部分的問題。 游戲開發(fā)所涉及到的 WPF 技術(shù)如數(shù)據(jù)綁定、動畫和自定義控件只是冰山一角,后期開發(fā)可以嘗試加入 WPF 技術(shù)中的 3D 圖形,視頻和多媒體應(yīng)用, 將
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1