Let's Move 是一項學習 Move 語言的激勵計畫,鼓勵更多的人學習 Move 語言
學習日誌 (alva-lin)
任務 4 - 完成一個遊戲的上鏈部署 (mainnet)#
任務
完成鏈遊相關知識的學習
完成隨機數的學習
完成如何存儲 Coin 在合約的學習
完成第一個遊戲合約部署主網
本次任務,我選擇了簡單的遊戲:石頭剪刀布,由單個玩家進行遊玩,與之對抗的電腦,使用隨機數來生成操作。隨機數的來源,使用全局時鐘
代碼#
隨機數#
代碼中使用了 sui::clock::Clock 時鐘,來作為隨機數。
我們可以找到對應的源碼 clock.move,其中關於 Clock 有一段註釋。解釋了 Clock 是一個單例共享對象,為 Move 的調用提供時間。該對象的地址為 0x6,只能由入口函數獨取(通過不可變引用訪問)。
Move 中,對象即地址,也就是說我們在需要傳入 Clock 時,直接使用它的地址 0x6,就可以傳入 Clock 對象。
推送和調用#
我們跳過包的發布流程,直接調用方法
可以得到輸出,因為我直接將遊戲結果寫到事件中,所以可以清晰看出結果內容,多次調用方法,可以看到 computer_choice 的變化,同時 result 也會正確計算。
也可以直接使用 SuiScan 來查看本次交易的信息