依照規劃好的里程碑,今天要能試做出遊戲玩法的核心。
基本上就是要能達成「觸發事件->互動->角色數值改變」的循環。
還有三十天寫文章的小遊戲。
昨天已經把一部份的畫面刻好了,動畫或影片可能暫時沒有辨法。
會先以跳出對話框的型式來模擬事件的發生及改變。
為了測試功能,先創一個範例的卡片導入遊戲,之後正式時會是從assets裡的json檔讀入資料。
class ExampleCard {
String name = "Example"; ///名稱
int rank = 5; ///稀有度
int level = 1; ///等級
int connect = 0; ///羈絆
int hpAdd = 10; ///體力增加值
int mpAdd = 10; ///靈感增加值
int pointAdd = 20; ///專業增加值
List<GameEvent> supportEvents = [];///夥伴事件
List<GameEvent> storyEvents = []; ///主線事件
List<GameEvent> uniqueEvents = []; ///獨有事件
}
然後需要有事件,包含系統事件,像是上班偷寫、下班趕稿之類的,
還要有隨機發生的夥伴事件,能加一些能力值。
所有的系統、角色、夥伴事件會在遊戲初始化時傳入GameManager中的EventHelper中,隨著進程及互動的結果取出,並對數值造成影響。
for(int i=0;i<gameManager!.eventHelper!.eventList.length;i++)
TextButton("事件名稱"),
裡面的onPressed:
onPressed: () {
gameManager!.role?.getEvent(gameManager!.eventHelper!.eventList[i]);
showDialog<void>(context: context,barrierDismissible: false,builder: (BuildContext dialogContext) {return AlertDialog(title:Text(gameManager!.eventHelper!.eventList[i]!.title!),
content: Text(gameManager!.eventHelper!.eventList[i]!.describe!),
actions: <Widget>[TextButton(
child: const Text('OK'),
onPressed: () {
Navigator.of(dialogContext)
.pop(); // Dismiss alert dialog
setState(() {});
},
),
],
);
},
);
},
之後再由GameManager控制流程的循環,就可以運作起來了。
目前是先測試看看核心的事件流程能不能順利跑起來。
展示如下:
在這個簡單的展示中,事件會被觸發、影響數值。
也簡單用天數及體力作為結束的標準,體力為負表示寫不下去了,天數為30表示完成挑戰。
這樣今天也算是有試做一部份出來吧?雖然是用很簡陋的方式,但至少是可以玩的~
明天也要繼續加油,往下個里程碑前進吧!