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

正文內(nèi)容

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

2025-07-10 12:01本頁面

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