Finite State Machine (FSM) dan Pseudocode beserta Penjelasannya
Assalamualaikum Wr.Wb.
Saya akan memberikan penjelasan singkat tentang Finite State Machine (FSM) pada game beserta contohnya dan Pseudocode.
Pertama apakah itu FSM, Finite State Machine (FSM) adalah sebuah metodologi
perancangan sistem kontrol yang menggambarkan tingkah laku atau prinsip kerja
sistem dengan menggunakan tiga hal berikut: State (Keadaan), Event (kejadian)
dan action (aksi). Sebagai sebuah metodologi perancangan sistem kontrol,
penerapan FSM telah banyak diterapkan pada perangkat lunak, khususnya pada
game.
Berikut contoh FSM pada game yang pernah saya buat.
![]() |
| Contoh gambar FSM |
Pseudocode Game
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FSMGameku : MonoBehaviour {
using System.Collections.Generic;
using UnityEngine;
public class FSMGameku : MonoBehaviour {
public enum {MenuUtama,start,player,berlari,item level,
musuh,nyawa player,level,skor, waktu,GameOver,reward,GameSelesa}
musuh,nyawa player,level,skor, waktu,GameOver,reward,GameSelesa}
public TurnStates state;
public bool gameInProgress = true;
void Start () {
state = FSMgameku.Mulai.Init;
StartCoroutine ("TurnFSM");
}
private IEnumerator TurnFSM (){
while(gameInProgress){
switch(state){
case 0:
if(permainan dimulai())
{Diam :;}
}
break;
{
case 1:
if( Masuk Level ())
{Pernyataan:}
}
break;
{
case 2:
if( mencari jalan())
{berlari:}
}
break;
{
case 3:
if( mencari benda())
{item:}
if( menghindar musuh())
{Bertahan;}
}
break;
{
case 4:
if( mencari Benda ())
{Item:}
if(serang musuh())
{Musuh;}
}
break;
{
case 5:
if( Terkena musuh ())
{Nyawa Player:}
}
Break;
{
case 6:
if( Masuk Level ())
{Pernyataan:}
}
break;
{
case 7:
if(nyawa masih tersedia ())
{Diam:}
if(nyawa masih habis ())
{GameOver:}
}
Break;
{
case 8:
if( Memulai permainan ())
{Masuk level:}
}
break;
{
case 9:
if( berhasil menjawab())
{Mendapatkan Reward:}
}
break;
case 10:
if( Reward())
{Game Selesai:}
}
break;
}
}
case 0:
if(permainan dimulai())
{Diam :;}
}
break;
{
case 1:
if( Masuk Level ())
{Pernyataan:}
}
break;
{
case 2:
if( mencari jalan())
{berlari:}
}
break;
{
case 3:
if( mencari benda())
{item:}
if( menghindar musuh())
{Bertahan;}
}
break;
{
case 4:
if( mencari Benda ())
{Item:}
if(serang musuh())
{Musuh;}
}
break;
{
case 5:
if( Terkena musuh ())
{Nyawa Player:}
}
Break;
{
case 6:
if( Masuk Level ())
{Pernyataan:}
}
break;
{
case 7:
if(nyawa masih tersedia ())
{Diam:}
if(nyawa masih habis ())
{GameOver:}
}
Break;
{
case 8:
if( Memulai permainan ())
{Masuk level:}
}
break;
{
case 9:
if( berhasil menjawab())
{Mendapatkan Reward:}
}
break;
case 10:
if( Reward())
{Game Selesai:}
}
break;
}
}
Penjelasan Game
Dalam game yang saya buat sesuai gambaran diatas berbentuk
FSM, pertama kali ke menu utama untuk memilih level dengan mengklik tombol
level. Pada opsi ini bebas untuk memilih level mengklik tombol Level yang
tersedia maka akan diarahkan ke tampilan game survival. Player akan berlari
menghindari musuh untuk mendapatkan item yang akan mengarahkan ke level selanjutnya.
Disini player mempunyai 3 nyawa yang akan membuat bertahan hidup, jika nyawa
habis maka akan terjadi game over dan kembali ke menu utama. Setiap level akan
terkunci jika tidak dimainkan secara berurutan. Setiap level mempunyai jumlah
waktu dan skor yang berbeda. Jika dalam menjawab soal sampai kehabisan waktu
maka akan langsung game over dan kemudian bisa mengulang menjawab pertanyaan
kembali pada level tersebut. Setiap penyelesain level akan mendapatkan reward
berupa bintang sebanyak 3 jika menyelesaikan tiap level dengan sempurna dan
sebaliknya. Saat semua level sudah selesai dimainkan maka game dianggap tamat.
Wassalamu'alaikum wr.wb
Referensi :
https://forum.unity.com/threads/trouble-with-a-switch-case-finite-state-machine-in-c.107979/
http://e-journals.unmul.ac.id/index.php/JIM/article/view/198

Komentar
Posting Komentar