Upload files to "/"
This commit is contained in:
parent
2a40e1b992
commit
1d9d16b4c5
|
@ -0,0 +1,261 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.UIElements;
|
||||
using Button = UnityEngine.UI.Button;
|
||||
using Image = UnityEngine.UI.Image;
|
||||
|
||||
public class ControlQuest : MonoBehaviour
|
||||
{
|
||||
public AudioSfx audioSfx;
|
||||
|
||||
[System.Serializable]
|
||||
public class Soals
|
||||
{
|
||||
[System.Serializable]
|
||||
public class ElementSoals // nomer 1 dst
|
||||
{
|
||||
public Sprite spriteSoal;
|
||||
public Sprite[] spriteJawabans;
|
||||
|
||||
public int kunciJawaban; //kunci jwb dlm int untuk array
|
||||
}
|
||||
|
||||
public ElementSoals elementSoals;
|
||||
}
|
||||
|
||||
public Soals[] soals;
|
||||
|
||||
[Header("Random Index")]
|
||||
//random index
|
||||
|
||||
public int[] indexRandomSoal;
|
||||
public int[] indexRandomJawaban;
|
||||
public int totalSoal; //total soal yang akan dipakai
|
||||
public int urutanSoal;
|
||||
int jawabanBenar;
|
||||
|
||||
|
||||
|
||||
[Header("UI soal dan jawaban")]
|
||||
public Image imageSoal;
|
||||
public Image[] imageJawabans;
|
||||
|
||||
|
||||
[Header("voice over")]
|
||||
public AudioSource audioSourceVO;
|
||||
public AudioClip[] audioClipVOs;
|
||||
public Button buttonPlayVO;
|
||||
|
||||
[Header("score")]
|
||||
public Text textScore; //di game
|
||||
public Text textScoreAkhir; //di akhir end game
|
||||
public int increaseScore; //score yg ditambahkan
|
||||
public int decreaseScore;
|
||||
public int totalScoreAkhir;
|
||||
public GameObject panelEndGame;
|
||||
|
||||
|
||||
[Header("kondisi next soal")]
|
||||
public bool isJawabanHarusBenar;
|
||||
[Tooltip("hanya untuk debug")]
|
||||
public bool isJawabanBenar;
|
||||
|
||||
[Header("sistem hasil jawaban")]
|
||||
public bool isHasilJawab;
|
||||
public GameObject panelHasilJawab;
|
||||
public Image imagecharacterhasiljawab;
|
||||
public Sprite[] spritecharacterhasiljawab;
|
||||
int indexHasilJawab;
|
||||
public float waktuTungguHasilJawab;
|
||||
|
||||
void Start()
|
||||
{
|
||||
GenerateIndexRandomSoal();
|
||||
GenerateIndexRandomJawaban();
|
||||
|
||||
GenerateSoal();
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void ReactiveButtonVO()
|
||||
{
|
||||
buttonPlayVO.interactable = true;
|
||||
}
|
||||
|
||||
public void ButtonPlayVoiceOver()
|
||||
{
|
||||
if (audioSourceVO.isPlaying == false)
|
||||
{
|
||||
audioSourceVO.clip = audioClipVOs[indexRandomSoal[urutanSoal]];
|
||||
audioSourceVO.Play();
|
||||
buttonPlayVO.interactable = false;
|
||||
|
||||
Invoke("ReactiveButtonVO", audioClipVOs[indexRandomSoal[urutanSoal]].length);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void DecreaseScore()
|
||||
{
|
||||
if (totalScoreAkhir - decreaseScore >= 0)
|
||||
{
|
||||
totalScoreAkhir -= decreaseScore;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("hasil negatif");
|
||||
|
||||
totalScoreAkhir = 0;
|
||||
}
|
||||
textScore.text = totalScoreAkhir.ToString();
|
||||
}
|
||||
|
||||
void IncreaseScore()
|
||||
{
|
||||
totalScoreAkhir += increaseScore;
|
||||
textScore.text = totalScoreAkhir.ToString();
|
||||
}
|
||||
public void ButtonJawabans(int indexJawaban)
|
||||
{
|
||||
if (indexRandomJawaban[indexJawaban] == jawabanBenar)
|
||||
{
|
||||
Debug.Log("benar");
|
||||
|
||||
IncreaseScore();
|
||||
|
||||
isJawabanBenar = true;
|
||||
|
||||
indexHasilJawab = 0;
|
||||
|
||||
audioSfx.SoundSfxBenar();
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
DecreaseScore();
|
||||
Debug.Log("salah");
|
||||
|
||||
indexHasilJawab = 1;
|
||||
audioSfx.SoundSfxSalah();
|
||||
}
|
||||
|
||||
if(isJawabanHarusBenar == true) //kontrolkondisi
|
||||
{
|
||||
if(isJawabanBenar == true) //cek kondisi
|
||||
{
|
||||
if(isHasilJawab == false)
|
||||
{
|
||||
GenerateNextSoal();
|
||||
}
|
||||
else //true
|
||||
{
|
||||
HasilJawab();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isHasilJawab == false)
|
||||
{
|
||||
GenerateNextSoal();
|
||||
}
|
||||
else
|
||||
{
|
||||
HasilJawab();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TutupHasilJawab()
|
||||
{
|
||||
panelHasilJawab.SetActive(false);
|
||||
|
||||
GenerateNextSoal() ;
|
||||
}
|
||||
|
||||
|
||||
void HasilJawab()
|
||||
{
|
||||
panelHasilJawab.SetActive(true);
|
||||
|
||||
imagecharacterhasiljawab.sprite = spritecharacterhasiljawab[indexHasilJawab];
|
||||
|
||||
Invoke("TutupHasilJawab", waktuTungguHasilJawab);
|
||||
}
|
||||
|
||||
|
||||
void GenerateNextSoal()
|
||||
{
|
||||
if (urutanSoal < totalSoal - 1) //check kondisi
|
||||
{
|
||||
urutanSoal += 1; //menambah urutan soal/lanjut
|
||||
GenerateSoal();
|
||||
//GenerateIndexRandomJawaban();
|
||||
|
||||
isJawabanBenar = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Finish Game");
|
||||
panelEndGame.SetActive(true);
|
||||
textScoreAkhir.text = totalScoreAkhir.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
void GenerateIndexRandomJawaban()
|
||||
{
|
||||
indexRandomJawaban = new int[2]; //opsi jawaban ab
|
||||
for (int i = 0; i < indexRandomJawaban.Length; i++)
|
||||
{
|
||||
indexRandomJawaban[i] = i;
|
||||
}
|
||||
|
||||
for (int i = 0; i < indexRandomJawaban.Length; i++)
|
||||
{
|
||||
int a = indexRandomJawaban[i];
|
||||
//int b = Random.Range(0, indexRandomJawaban.Length);
|
||||
//indexRandomJawaban[i] = indexRandomJawaban[b];
|
||||
//indexRandomJawaban[b] = a;
|
||||
}
|
||||
}
|
||||
void GenerateIndexRandomSoal()
|
||||
{
|
||||
indexRandomSoal = new int[soals.Length]; //create slot array
|
||||
for (int i = 0; i < indexRandomSoal.Length; i++) //fill slot array dengan int
|
||||
{
|
||||
indexRandomSoal[i] = i;
|
||||
}
|
||||
|
||||
for (int i = 0; i < indexRandomSoal.Length; i++) //random index
|
||||
{
|
||||
int a = indexRandomSoal[i];
|
||||
int b = Random.Range(0, indexRandomSoal.Length);
|
||||
indexRandomSoal[i] = indexRandomSoal[b];
|
||||
indexRandomSoal[b] = a;
|
||||
}
|
||||
}
|
||||
void GenerateSoal()
|
||||
{
|
||||
//update soal
|
||||
imageSoal.sprite = soals[indexRandomSoal[urutanSoal]].elementSoals.spriteSoal;
|
||||
|
||||
//update jawaban
|
||||
for (int i = 0; i < 2; i++) // opsi jawab ab
|
||||
{
|
||||
imageJawabans[i].sprite = soals[indexRandomSoal[urutanSoal]].elementSoals.spriteJawabans[indexRandomJawaban[i]];
|
||||
}
|
||||
//jawaban benar
|
||||
jawabanBenar = soals[indexRandomSoal[urutanSoal]].elementSoals.kunciJawaban; //mengambil kunci jawaban
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue