iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
Kotlin

Kotlin快速轉職系列-勇者篇系列 第 20

Day11#1 顯示和實際不一定一致,人性的黑暗面 Getters

  • 分享至 

  • xImage
  •  

「說起來這狀態窗和我想的不太一樣啊,感覺更像是名片呢。」蕭凱琪有點失望。「居然沒有HP和MP。」

「那是什麼?」勇者問。

「咦?你不知道?難道娛樂相關的常識都沒有嗎?他是打算讓你變成工作狂?」蕭凱琪不由得往黑暗面去想。

「所以那到底是什麼?」勇者耐心地再次發問。

蕭凱琪語速頗快地說明:「現在的遊戲中有一種分類是戰鬥模擬遊戲,在這些遊戲裡,HP是指血量或體力量,下降可能是因為受傷、生病、被詛咒,HP歸零的時候基本上不是死了就是癱在那啥都做不了,無法繼續進行戰鬥;MP的話,有魔法技能的話通常指魔力量,這種歸零就只是不能用魔法,但有時候連帶和精神力有關,下降的話和掉SAN值沒兩樣,可能會陷入、恐慌、昏迷或是發瘋。有些遊戲會把精神力獨立出來叫SP。」

「喔,那我能理解HP和MP代表的意思了,但我不理解妳為什麼看起來很失望?」

「因為我想知道你們的HP、MP的即時狀態是用整數、小數點、還是百分比顯示啊?」蕭凱琪一臉好奇這些是理所當然的模樣。

「有什麼差別嗎?」勇者想了想還是沒能想出蕭凱琪執著求知的點在哪。

「差別可大囉!你知道顯示和實際不一定一致嗎?」蕭凱琪說到後面突然降低音量,神秘兮兮地說:「我指的不是在顯示上造假,而是顯示不完全。」

「什麼意思?」勇者還是不明白。

蕭凱琪掩不住興奮地說:「比如說啊,用整數顯示血量,當敵方看到已經歸零的數字,認為自己勝券在握的時候,其實你還有0.1滴血,於是趁他鬆懈順利反擊。多刺激啊!」

「⋯⋯妳確定那樣能順利反擊?」勇者有點無言。

「就是機率低還成功,這種反差叫人心動不已啊!」蕭凱琪催促勇者:「你加進去這樣的設計看看。」

勇者沒辦法只好照做,他試著加入一個整數變數HP,指定數值為0.1。

https://ithelp.ithome.com.tw/upload/images/20231004/20129197x5Q5qp5Ntd.png

「根本不行啊!」勇者把游標移動到紅色抖抖線看到了錯誤訊息「The floating-point literal does not conform to the expected type Int」。

「不不不,整數型別的變數當然只能儲存整數資料。你要把真實的血量放在另外一個精準小數型別的變數HP_Real,而且加上『private』修飾符將它隱藏起來,這樣外部人士就不知道HP_Real的存在。然後再用Getters取出HP_Real的整數部分給HP。」

勇者照著蕭凱琪的話改了程式碼,可惜還是有錯誤訊息。

https://ithelp.ithome.com.tw/upload/images/20231004/20129197hMbvco1She.png

蕭凱琪提示勇者:「你其實可以看看IntelliJ IDEA提供的建議,點開燈泡試試。」

勇者看到了IntelliJ IDEA的四個建議,蕭凱琪和他說,最符合現在情形的是第三個選項,於是勇者點擊了第三個選項,IntelliJ IDEA就修改好了程式碼。

https://ithelp.ithome.com.tw/upload/images/20231004/20129197etp4inGCgq.png

https://ithelp.ithome.com.tw/upload/images/20231004/20129197t7dLH6o9ID.png

勇者揉揉眼睛,再次確認IntelliJ IDEA真的幫他修改好程式碼。

蕭凱琪對勇者得意的笑:「我之前就說過IntelliJ IDEA很棒的吧!」


上一篇
Day10#2 勇者狀態窗資料
下一篇
Day11#2 小數的格局:Float和Double
系列文
Kotlin快速轉職系列-勇者篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言