Sokoban Pro是經(jīng)典Sokoban難題游戲的一個現(xiàn)代版本。本文討論從XML技術(shù)角度來實現(xiàn)該游戲。下圖是游戲運行中的一個快照。
Sokoban Pro是經(jīng)典Sokoban難題游戲的一個現(xiàn)代版本。該游戲極其簡單,然而該游戲卻是極具挑戰(zhàn)性和富有吸引力。游戲規(guī)則是把所有的盒子移動到正確的地方。你可以僅僅推動一個盒子,而不是拉。你可以隨時通過按動U鍵來撤消你的上次移動。
該游戲的一個現(xiàn)代版本如今在Sokoban Pro網(wǎng)站上可以玩了。因為所有的最重要的部分(如讀取/寫XML,移動和繪畫)在本文的源代碼中提供,所以我決定在此討論第一個原始的版本。
最近的版本(v1.0b)相對于現(xiàn)在這個版本包括了下列幾個方面的改進(jìn):
·"官方"beta發(fā)行版
·增加菜單支持
·我發(fā)現(xiàn)使窗口的大小在每一級中改變是十分令人惱火的事情,所以在當(dāng)前版本中它變?yōu)楣潭ǖ?BR> ·你可以在不同級間來回跳動,但是僅限于你以前已經(jīng)完成的級上
·針對級別的撤消功能
·Splash屏幕和圖標(biāo)
·修改了許多錯誤
·也許還有其它一些
在游戲開始時,你可以創(chuàng)建一個新的玩家或選擇一個現(xiàn)有的玩家。既然Sokoban Pro能夠保存你的進(jìn)度,那么你還可以選擇是否你想要繼續(xù)你的上一次游戲。在創(chuàng)建一個玩家后,你可以選擇一個級別集合。一個級別集合包含你喜歡的盡可能多的級別。Sokoban Pro帶有原來的BoxWorld游戲中的前40個級別。級別集合被存儲在XML文件中,這意味著你可以從互聯(lián)網(wǎng)上不同的Sokoban站點下載級別集合。你還可以創(chuàng)建你自己的級別。當(dāng)你把它們放到級別目錄中時,Sokoban Pro將自動地識別級別集合。
你用一個XML文件來實現(xiàn)保存游戲。它保存最后玩完的級別集合和最后的玩的級別,這樣你可以從你上次玩游戲時離開的地方繼續(xù)玩下去。另外,它還保存你已經(jīng)完成的級別及相應(yīng)的得分(移動和推的數(shù)目)。如果你重玩一級并且你的執(zhí)行更好一些的話,那么你的分?jǐn)?shù)將被更新。
基本上,該游戲由下列幾個類組成:
·LevelSet-包含所有的有關(guān)一個級別集合(作者信息,級別數(shù)目,等等……)的信息。它也把級別集合XML中的級別裝載到內(nèi)存中。
·Level-代表在一個級別集合中的一個級別。這里發(fā)生的最重要的事情是它追蹤所有的你的移動。在玩家移動或推一個盒子時,它更新在一個級別中的項。它更新相應(yīng)的圖形并實現(xiàn)撤消功能,并且最后在屏幕上繪制出級別。
·PlayerData-追蹤所有的玩家信息?;旧?,它反映出你的SaveGame。
·Board(Form)-主表單處理所有的玩家輸入并且初始化所有的對象。
·Players(Form)-讓你創(chuàng)建一新的玩家或選擇一個現(xiàn)有的玩家。
·Levels(Form)-讓你選擇一個你想要玩的級別集合。
Sokoban Pro是經(jīng)典Sokoban難題游戲的一個現(xiàn)代版本。該游戲極其簡單,然而該游戲卻是極具挑戰(zhàn)性和富有吸引力。游戲規(guī)則是把所有的盒子移動到正確的地方。你可以僅僅推動一個盒子,而不是拉。你可以隨時通過按動U鍵來撤消你的上次移動。
該游戲的一個現(xiàn)代版本如今在Sokoban Pro網(wǎng)站上可以玩了。因為所有的最重要的部分(如讀取/寫XML,移動和繪畫)在本文的源代碼中提供,所以我決定在此討論第一個原始的版本。
最近的版本(v1.0b)相對于現(xiàn)在這個版本包括了下列幾個方面的改進(jìn):
·"官方"beta發(fā)行版
·增加菜單支持
·我發(fā)現(xiàn)使窗口的大小在每一級中改變是十分令人惱火的事情,所以在當(dāng)前版本中它變?yōu)楣潭ǖ?BR> ·你可以在不同級間來回跳動,但是僅限于你以前已經(jīng)完成的級上
·針對級別的撤消功能
·Splash屏幕和圖標(biāo)
·修改了許多錯誤
·也許還有其它一些
在游戲開始時,你可以創(chuàng)建一個新的玩家或選擇一個現(xiàn)有的玩家。既然Sokoban Pro能夠保存你的進(jìn)度,那么你還可以選擇是否你想要繼續(xù)你的上一次游戲。在創(chuàng)建一個玩家后,你可以選擇一個級別集合。一個級別集合包含你喜歡的盡可能多的級別。Sokoban Pro帶有原來的BoxWorld游戲中的前40個級別。級別集合被存儲在XML文件中,這意味著你可以從互聯(lián)網(wǎng)上不同的Sokoban站點下載級別集合。你還可以創(chuàng)建你自己的級別。當(dāng)你把它們放到級別目錄中時,Sokoban Pro將自動地識別級別集合。
你用一個XML文件來實現(xiàn)保存游戲。它保存最后玩完的級別集合和最后的玩的級別,這樣你可以從你上次玩游戲時離開的地方繼續(xù)玩下去。另外,它還保存你已經(jīng)完成的級別及相應(yīng)的得分(移動和推的數(shù)目)。如果你重玩一級并且你的執(zhí)行更好一些的話,那么你的分?jǐn)?shù)將被更新。
基本上,該游戲由下列幾個類組成:
·LevelSet-包含所有的有關(guān)一個級別集合(作者信息,級別數(shù)目,等等……)的信息。它也把級別集合XML中的級別裝載到內(nèi)存中。
·Level-代表在一個級別集合中的一個級別。這里發(fā)生的最重要的事情是它追蹤所有的你的移動。在玩家移動或推一個盒子時,它更新在一個級別中的項。它更新相應(yīng)的圖形并實現(xiàn)撤消功能,并且最后在屏幕上繪制出級別。
·PlayerData-追蹤所有的玩家信息?;旧?,它反映出你的SaveGame。
·Board(Form)-主表單處理所有的玩家輸入并且初始化所有的對象。
·Players(Form)-讓你創(chuàng)建一新的玩家或選擇一個現(xiàn)有的玩家。
·Levels(Form)-讓你選擇一個你想要玩的級別集合。

