Upload files to "/"

This commit is contained in:
aishandavaniaaanisah 2024-05-30 13:38:08 +07:00
parent 2a40e1b992
commit 1d9d16b4c5
1 changed files with 261 additions and 0 deletions

261
ControlQuest.cs Normal file
View File

@ -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
}
}