112程序員的考驗
作者:顓煜      更新:2020-12-24 17:27      字數:3070
  柳榮華接下了玉蝴蝶的奪金決鬥挑戰。戰鬥將在下周五進行。距今還有一周時間。

  孫軼民回到了自己房間,開始思考如何幫柳榮華贏得與玉蝴蝶決鬥的問題。

  正如柳榮華所言,這場戰鬥必須贏。所以要做到有十足把握的,決不能靠運氣。既然如此,就必然在戰場上具備絕對的優勢。

  如何取得絕對優勢?靠戰力高過對方?明顯不行。

  玉蝴蝶發起的奪金決鬥是基於公平原則的,是設定戰力上限的決鬥。雙方戰力不能超過33萬,否則無法入場,而如果不及時入場,則將被係統視為自動認輸。

  那麽如何取得戰鬥絕對優勢?按照孫軼民這個理工男的思維方式,很自然的聯想了技術。正如當初用襄王贏慕容那般,他需要為柳榮華專門製作一個用於羅漢對付禦冰的戰鬥程序。

  正所謂知己知彼百戰百勝。在設計這個程序之前,他必須要對兩個職業有充分的了解。他對玉蝴蝶的禦冰職業了解自然不在話下,但對羅漢職業的了解寥寥無幾,除了羅漢的攻擊模式為物理近戰為主這一點之外。

  他暫時向柳榮華要了賬號密碼在自己電腦上登錄玉樹春庭花,以便研究羅漢職業的戰鬥特點。

  他操作起“玉樹春庭花”的角色,跑到長安西郊野外區域,對著一些小怪一一測試羅漢的各種戰鬥技能。最後卻得出了一個令人沮喪的結論:羅漢職業無法像霸王職業那樣,可以采用計算機程序進行半自動的連招輔助戰鬥。

  根本原因在於:當初孫軼民開發的“演奏家”程序的輔助功能,是基於霸王職業可以將多種攻擊+增益+控製技能連貫起來施放從而讓敵人無法動彈瞬間殘血的職業能力特征。一般來說,一套連招下來,敵人基本上失血大半了,從而霸王能在戰場上占據極大的優勢。

  但施放連招完畢,則需要手動操作,采取躲避或追擊策略,在這個過程中等待所有的攻擊與控製技能冷卻完畢,再此啟用程序輔助功能發起另一輪連招攻擊。這其中,手動與自動的界限非常清楚。而且一場戰鬥中基本上隻需要切換一兩次就可以,操作並不繁瑣,並不會影響程序戰鬥的效率。

  但是羅漢職業不同。羅漢是防禦型職業。進攻技能自然有,但是它沒有控製技能。因而無法實現“攻擊+控製”連招快速克敵製勝,也就無法采用上述的半自動程序輔助模式。

  那麽羅漢的特點是什麽?第一:他的皮厚,更耐打,同時它的攻擊技能傷害低,這些特點注定了羅漢參與的pk必然是一場持久戰。絕不可能做到速戰速決。

  第二:它有解控技能。而且作為防禦性職業,羅漢的解控技能比霸王的更實用,冷卻時間更短。

  第三:羅漢有自助回血職業,回血冷卻時間隻有一分鍾。但是回血技能需要一個不被外界打擾的環境,一旦遭遇對方攻擊,回血過程即被打斷失效。

  第四,羅漢有多個可以增益自身防禦能力的技能,比如提升自己生命值上限,增加自身物理防禦能力,增加自身對法術攻擊的防禦能力,增加閃避幾率等等,這些增益技能的冷卻時間大多不長,在一場戰鬥中可以反複使用多次。另有一個通過鍛造武器+10獲得的增益技能“雷霆之怒”,可以在10秒內大幅度增加攻擊能力並且無敵。但冷卻很長,一場戰鬥基本上隻能用上一次。

  從以上特點可以得出結論:羅漢的職業技能功能瑣碎,操作繁複,需要很大程度的靈活配合,另外,戰鬥時間長,需要玩家有耐心與熟練度去操作。

  如果非要用計算機程序輔助羅漢職業進行戰鬥,那它就必須是全程自動化戰鬥。

  如果僅僅從理論上講,設計這個程序就如同演奏家一般,同樣基於黎允兒提供的服務器數據解碼模塊,並不存在問題。事實上有了這個解碼模塊,設計任何遊戲功能理論上都沒有問題。

  但問題是,如果要設計這樣一個全自動操作戰鬥的程序,其設計難度會遠遠超過當初的“演奏家”,嚴重考驗程序員的技術功底。

  畢竟演奏家的工作原理隻是做一個簡單的技能冷卻狀態監測,如果所有需要的技能準備完畢,那麽就按照預定的順序依次施放技能。這裏不涉及到戰鬥策略的問題。

  但是自動戰鬥程序則涉及到麵對複雜戰鬥狀況隨機應對問題,這意味著程序需要複雜高效的程序算法,直接考驗到他的專業能力。

  所謂的複雜狀況具體來講:第一,程序需要解決羅漢職業技能瑣碎繁複的配合使用問題,比如在進攻之前必須先開啟防禦狀態與增益狀態。躲避之前需要先判斷自身受控狀態。隨時關注自身的技能冷卻狀況,一旦某個防禦技能比如回血技能冷卻完畢就需要即刻施放,以求發揮最大效用。

  其次是解決靈活應對敵方禦冰技能的問題。比如在敵方對自己施放控製技能之後,自己必須及時解控並且選擇正確的路線躲避,以避開對方接下來的攻擊技能。同時要計算對方的各種技能冷卻時間,以求在合適的時機以最小的代價對敵方發動攻擊,從而獲取少量的優勢,並積少成多最終在pk中勝出。

  第三是需要設計複雜的戰鬥策略以應對不同的戰鬥局麵。比如根據自身以及對方的剩餘生命值多少,決定暫避回血還是乘勝追擊。以及什麽時候合適使用那個冷卻長達一小時“雷霆之怒”技能。

  總之這樣的設計過程需要花費更多的時間和精力,進行更多的思考,編寫更加複雜的函數代碼,以及進行更多的實戰測試。

  好在距離決鬥還有一個星期,在孫軼民看來,這時間足夠他開發這樣一個程序。而他自信的深厚計算機程序員功底,應該足以應付這個複雜程序的開發。

  他打開了vc60,新建了一個工程,取名為“刺客”。耗費半小時,寫下了程序的框架。剩下的程序細節,隻能慢慢來了。

  暫時休息一下,他翻看了下柳榮華的戰力,295萬。距離戰力上限33萬還差一點。所以眼下當務之急是把戰力提升上去,再論輸贏。他召喚了柳榮華來到自己房間探討這個戰力問題。

  玉樹春庭花全身雖然+10,但是防具和武器都基本上是60級的,裝備上的寶石,大多是極品寶石,隻有一顆神品。

  柳榮華認同提升戰力的方式,目前來說還是更換70防具比較合理,因為換武器太貴,提升寶石品質?神品寶石代價更高。

  柳榮華即刻回到自己電腦上,重新登錄賬號準備到藏寶閣拍幾件70級的羅漢防具裝備。

  此時,孫軼民突然想起國慶期間的某一項福利活動:長假期間所有裝備鍛造的費用打7折。當前已經是國慶最後一天,而自己包裹裏還剩下約26萬的金幣。便想著乘這個機會嚐試一下鍛造武器。

  畢竟,自從上次花了大量金幣鍛造全身防具+10之後,隻剩下武器沒有成功+10,目前還處於+8狀態。武器決定傷害能力。這+8的短板,令他殺敵效果打了折扣。

  身上這點錢,足夠嚐試一次+9鍛造。但如果失敗了,則原有鍛造等級歸零。得從0開始鍛造,那麽剩下的錢就不夠再鍛造會加8了。所以這一次操作還是有一定的風險。

  “即便失敗了,也認命吧。”孫軼民想著,便去元寶交易所換了一些元寶,然後到遊戲商城買了9顆神兵晶石+3顆鈦晶。

  匆匆跑到鐵匠處,擺上武器,晶石,鈦晶。鍛造成功率為20的基礎成功率加上3個鈦晶附加的15成功率,合計25。

  他挪動鼠標懸置於鍛造界麵的“開始鍛造”按鈕上。點擊,再次彈出一個對話框:“您確定要鍛造嗎?是,否。”

  閉上眼,帶著滿滿心中忐忑,狠狠心按下了“是”。

  電腦音箱中傳來一聲清脆的“叮……”。屏幕右下方的係統信息欄閃現提示:“恭喜,鍛造成功!”

  同時他的名字也出現在了世界頻道傳聞中:“【襄王有夢】成功將【幽蘭操】鍛造到+9,真是鴻運當頭!”

  這意外驚喜,一下子令孫軼民心情振奮起來。傳聞引來了很多好友的祝賀,孫軼民一一謝過。

  他迫不及待將武器裝配回去,然後打開自己的角色屬性界麵一看,戰力已經提升到了281069,這一刻,他心中充滿了激動與期待。

  興奮之餘,心中還有一絲猶豫:要不要繼續鍛造+10?