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 {

public enum {MenuUtama,start,player,berlari,item level,
    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;
        }
    }


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

Postingan Populer