Scratch版三國霸業(yè)創(chuàng)作歷程(一)城池將領(lǐng)篇
? ? ? ??其實一開始,只是突然想測試一下Scrach編寫超過1000個代碼塊的話,會不會卡頓或者直接崩潰,頭腦中第一個想到的就是小時候玩過的三國題材的游戲,于是從7月23日開始正式啟動Scratch版三國霸業(yè)的制作,這一做就一直持續(xù)到了9月11日最終完成!這也是我做過的Scratch作品中歷時最長的。(中間還抽出一周時間復(fù)習(xí)參加了NCT二級Python考試)
? ? ? ?為了最終能導(dǎo)出swf文件,起初一直是使用Scratch2.0制作,當(dāng)代碼塊超過1000個時,一點卡頓的感覺都沒有,實際上當(dāng)做到10000個代碼塊時,也根本沒有卡頓的現(xiàn)象,不得不說Scratch2.0確實很可靠。但是,當(dāng)代碼塊上到20000個,尤其是25000以后,Scratch2.0撐不住了!問題頻發(fā),比如,代碼顯示不全,拖動腳本頁面的滾動條時程序未響應(yīng)。所以個人覺得或許20000個代碼塊應(yīng)該是個分水嶺,20000個以內(nèi)Scratch2.0還是值得信賴的,超過了這個數(shù),問題就馬上出現(xiàn),應(yīng)該也很少人會用Scratch2.0寫超過萬個代碼吧,呵呵。后期要發(fā)布到Scratch中國網(wǎng)站,就用Scratch3.0重新生成了一份,Scratch3.0可以向下兼容。

? ? ? ? 縱觀整個程序的制作、設(shè)計過程,真的是遇到了非常、非常多的困難和問題。
? ? ? ??比如,將領(lǐng)有100多個,每個將領(lǐng)都有自己的武力、政治和忠誠度三個屬性。該怎么設(shè)計?想必大家都會想到用數(shù)據(jù)庫,可惜Scratch沒有數(shù)據(jù)庫,只有些許類似的列表,考慮到每個將領(lǐng)的武力、政治和忠誠度在游戲過程中都會有變化,于是分別用不同的列表來記錄它們的數(shù)值,使用這種方式的好處是每個將領(lǐng)都有唯一的一個序號,拿到該序號也就拿到了該將領(lǐng)的所有屬性的數(shù)值。這里我特意設(shè)定了一個所有數(shù)值全是99的神秘人物,哈哈!

? ? ? ? 三國霸業(yè)里共有17座城池,游戲開始要先選擇一座城池,被選中的城池會以紅色三角代表,沒被選中的城池會分為兩種——無太守的空城(未占領(lǐng))及有君主及將領(lǐng)的獨立城池。

每座城池都有農(nóng)業(yè)、糧食、商業(yè)、資金、人口、士兵等8項屬性。每座城池在每次開始游戲時,都能自己在隨機范圍內(nèi)設(shè)定相應(yīng)的屬性值,從而讓各個城池的屬性都不盡相同。

17座城池在游戲一開始會隨機擁有若干將領(lǐng),“將領(lǐng)序號”之所以從12開始,是因為2-11的序號是固定給10位君主,從序號12開始是可隨機分配的將領(lǐng),分配給17座城池。在這17座城池

中,有10座城池是有君主的,若游戲開始時選中的是有君主的城池,則該君主會自動加入。

其他所有有君主的城池則會自動獨立,并啟用本城在野的將領(lǐng),同時更新相應(yīng)的戰(zhàn)力。

每個月結(jié)束時,非玩家控制的城池會進行自動發(fā)展(算是小小的機器學(xué)習(xí)吧),可根據(jù)各自的農(nóng)業(yè)、商業(yè)值按我設(shè)定的數(shù)學(xué)公式自動增加,還可能自動征兵,提升戰(zhàn)力,征兵時會自動扣減本城的人口。同時,該城有將領(lǐng)時,還會根據(jù)將領(lǐng)的忠誠度,發(fā)生將領(lǐng)下野或叛逃到其他城池的可能。原先設(shè)定的是每個月都有可能發(fā)生將領(lǐng)叛變事件,但測試時發(fā)現(xiàn)幾乎每個月都有將領(lǐng)在叛變,有的將領(lǐng)在3個月內(nèi)叛變了2次,太過頻繁,后來就改成了每4個月才發(fā)生一次叛變事件(見倒數(shù)第三行代碼塊),不然有的將領(lǐng)都快成“流竄犯”了,哈哈。

以上主要是關(guān)于城池和將領(lǐng)方面的創(chuàng)作之路,設(shè)計不周之處還肯定各位大神多多指點!