Anda di halaman 1dari 14

DAFTAR PUSTAKA

A.G, M. (2001). Paradigma Pendidikan Islam; Upaya Mengefektifkan Pendidikan


Islam di Sekolah. Bandung: PT. Remaja Rosdakarya.

Abdhul, Y. (2022, 06 02). Penelitian Terdahulu: Cara Membuat dan Contoh.


Diambil kembali dari https://penerbitbukudeepublish.com/penelitian-
terdahulu/

Apriyani, M. (2021). Implementasi Pembelajaran PAI Berbasis Multimedia Di


SMP PGRI 4 Bandar Lampung. Lampung : Universitas Islam Negeri,
Raden Intan Lampung .

Arfida, S., & Binsar , R. S. (2017). Rancang Bangun Aplikasi Pembelajaran


Fuzzy Logic Berbasis Multimedia. Jurnal JUPITER, 9(2), 1-8.

Dicoding. (2022, 08 12). Contoh Use case Diagram. Diambil kembali dari
https://www.dicoding.com/blog/contoh-use-case-diagram/

Filus, T. (2017, 01 18). Pengenalan Bahasa Pemrograman C#. Diambil kembali


dari https://codepolitan.com/blog/pengenalan-bahasa-pemrograman-c-
587effa1cb95b

Henry, S. (2010). Cerdas Dengan Game. Jakarta: PT Gramedia Pustaka Utama.

Humairoh, N. K., Akbar , M., & Sauda, S. (2020). Pembangunan Aplikasi Game
Gerbang Dengan Menggunakan Metode IMSDD. Jurnal of information
system and informatics, 2(1), 1-11.

Irmanto. (2018). Pengembangan Media Pembelajaran Berbasis Unity 3d Untuk


Platform Android Pada Pembelajaran Gambar Teknik Kelas X Di Smk
Nasional Berbah. Yogyakarta : Universitas Negeri Yogyakarta.

Janner. (2006). Simarmata. Pengenalan Teknologi Komputer dan Informasi.


Yogyakarta: Penerbit Andi.
Nada , S. P. (2022, 06 02). Pengertian Pendidikan Agama Islam. Diambil kembali
dari https://stitmakrifatulilmi.ac.id/2021/02/06/pengertian-pendidikan-
agama-islam/

Nurul, D. A. (2021). Berbagai Problematika Pendidikan Dan Pembelajaran Di


Dalam Lembaga Pendidikan Paud Dan Tk/Ra Di Indonesia. Jurnal
Lantabur.

Pratama , R. A. (2016). Aplikasi Pembelajaran Pendidikan Agama Islam Berbasis


Android. Skripsi, 1-72.

Pratama, C. (2020). Pembelajaran Pendidikan Anak Usia Dini (PAUD) Dimasa


Pandemi Covid-19. Jurnal Anak Usia Dini, 2(2), 116-124.

Setiawan, R. (2021, 11 17). Black Box Testing Untuk Menguji Perangkat Lunak.
Diambil kembali dari https://www.dicoding.com/blog/black-box-testing/

Supriyanto, A. (2005). pengantar teknologi informasi. Jakarta: Salemba Infotek.

Sutiono. (2022, 08 12). Interactive Multimedia System Design and Development


Diagram: Pengertian, Tujuan dan Contohnyai . Diambil kembali dari
https://dosenit.com/software/Interactive Multimedia System Design and
Development-diagram

Wikipedia, A. (2022, 06 02). Adobe Photoshop. Diambil kembali dari


https://id.wikipedia.org/wiki/Adobe_Photoshop

Fathoni, A. (2011). Metodologi Penelitian & Tehnik Penulisan Karya Skripsi.


Jakarta: RinekaCipta.

Haka MJ, (2006). Teknologi Informasi, dan komunikasi. Solo : CV. Haka MJ.
LAMPIRAN

Lampiran 1 assets program

1. Home Manager

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;

public class HomeManager : MonoBehaviour


{
public Button ButtonExit;
public TMP_InputField textName;

private GameManager gameManager;

// Start is called before the first frame update


void Start()
{
gameManager = FindObjectOfType<GameManager>();

textName.text = gameManager.GetStudentName();

//exti game
ButtonExit.onClick.AddListener(delegate
{
Application.Quit();
});
}

// Update is called once per frame


void Update()
{

}
}

2. Materi Manager

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;

public class MateriManager : MonoBehaviour


{
public JSONManager.Materi materi;
public TMP_Text JudulMateri;
public TMP_Text NormalText;
public TMP_Text NormalWithArabicText;
public RTLTMPro.RTLTextMeshPro ArabicText;
public Button buttonPlay;
public Image ImageToChange;

public Sprite Original;


public List<Sprite> ImageWudhu = new List<Sprite>();
// Start is called before the first frame update
void Start()
{

//reset image
private void OnDisable()
{
RectTransform image = ImageToChange.rectTransform;
image.localScale = Vector2.one;
float heigh = 383;
float width = 462;
image.sizeDelta = new Vector2(width, heigh);
ImageToChange.sprite = Original;
}

//change image if materi whudu


public IEnumerator ChangeImageWhudu()
{
yield return materi != null;
if (materi.id_parent == 100)
{
switch (materi.id)
{
case 101:
ImageToChange.sprite = ImageWudhu[0];
break;
case 102:
ImageToChange.sprite = ImageWudhu[1];
break;
case 103:
ImageToChange.sprite = ImageWudhu[2];
break;
case 104:
ImageToChange.sprite = ImageWudhu[3];
break;
case 105:
ImageToChange.sprite = ImageWudhu[4];
break;
case 106:
ImageToChange.sprite = ImageWudhu[5];
break;
case 107:
ImageToChange.sprite = ImageWudhu[6];
break;
case 108:
ImageToChange.sprite = ImageWudhu[7];
break;
case 109:
ImageToChange.sprite = ImageWudhu[8];
break;
case 110:
ImageToChange.sprite = ImageWudhu[9];
break;
default:
break;
}
ImageToChange.SetNativeSize();
ImageToChange.transform.localScale *= 2;
}
}
}

3. Setting manager

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;

public class SettingManager : MonoBehaviour


{
GameManager gameManager;

public Button ButtonOn;


public Button ButtonOff;

// Start is called before the first frame update


void Start()
{
gameManager = FindObjectOfType<GameManager>();

ButtonOn.onClick.AddListener(delegate
{
gameManager.PauseBGM();
ButtonOff.gameObject.SetActive(true);
ButtonOn.gameObject.SetActive(false);
});

ButtonOff.onClick.AddListener(delegate
{
gameManager.PlayBGM();
ButtonOn.gameObject.SetActive(true);
ButtonOff.gameObject.SetActive(false);
});
}

// Update is called once per frame


void Update()
{

}
}

4. Score Manager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScoreManager : MonoBehaviour


{
public GameManager gameManager;
public GameObject PrefabsRank;
public GameObject parentPrefabsRank;

public List<ListRank> ListOfRanks = new List<ListRank>();

// Start is called before the first frame update


void Start()
{
gameManager = FindObjectOfType<GameManager>();
}

private void OnEnable()


{
//clear list
foreach (var item in ListOfRanks)
{
Destroy(item.gameObject);
}

ListOfRanks = new List<ListRank>();

//create list of player rank in higrscore


if (gameManager.highScoreList != null ||
gameManager.highScoreList.Count > 0)
{
foreach (var item in gameManager.highScoreList)
{
GameObject listRankGO =
Instantiate(Resources.Load<GameObject>("Prefabs/PanelListScore"),
parentPrefabsRank.transform);
ListRank listRank = listRankGO.GetComponent<ListRank>();
listRank.highscoreData = item;
ListOfRanks.Add(listRank);
}
}

gameManager.LoadLeaderBoard();
}

// Update is called once per frame


void Update()
{

}
}

5. Quiz Manager
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;
using System;

public class QuizManager : MonoBehaviour


{
GameManager gameManager;
public TMP_Text textSoal;
public TMP_Text textTimer;
public TMP_Text textScore;
public List<GameObject> Buttons;
public JSONManager.Quiz quiz;

private bool clicked;


private bool finish;

// Start is called before the first frame update


void Start()
{

private void OnEnable()


{
gameManager = FindObjectOfType<GameManager>();
}

// Update is called once per frame


void Update()
{
// set time
if (gameManager.timer > 0)
{
gameManager.timer -= Time.deltaTime;
TimeSpan time = TimeSpan.FromSeconds(gameManager.timer);
textTimer.text = time.ToString("mm':'ss");
}
else
{
//if time zero
if (!finish)
{
StopAllCoroutines();
WaitForColldown();
finish = true;
}
}
}

//set Quiz
public void Initialization()
{
//reset button image
for (int i = 0; i < Buttons.Count; i++)
{
Buttons[i].GetComponent<Button>().enabled = true;
Buttons[i].GetComponent<Image>().color = Color.white;
}

//set text question


textSoal.text = quiz.soal;

//create ne list answer


List<string> Jawabans = new List<string>
{
quiz.jawabanA,
quiz.jawabanB,
quiz.jawabanC,
quiz.jawabanD
};

//loop trouhg all button answer


for (int i = 0; i < Buttons.Count; i++)
{
//set text of button answer
Buttons[i].GetComponentInChildren<TMP_Text>().text =
Jawabans[i];
Buttons[i].GetComponent<Button>().onClick.RemoveAllListeners();

//check if button is the right answer,if tru set color and ad


score
if (i == quiz.jawabanBenar)
{
int id = i;

Buttons[i].GetComponent<Button>().onClick.AddListener( delegate
{
if (!clicked)
{
gameManager.AddScore();
gameManager.PlayGood();

Buttons[id].GetComponent<Image>().color =
Color.green;
Buttons[id].GetComponent<Button>().enabled = false;
WaitForColldown();
clicked = true;
}
});
}
else
{
int id = i;

Buttons[i].GetComponent<Button>().onClick.AddListener( delegate
{
gameManager.SubScore();
gameManager.PlayWrong();

Buttons[id].GetComponent<Image>().color = Color.red;
Buttons[id].GetComponent<Button>().enabled = false;
});
}
}

}
//set score text
public void SetScoreTExt()
{
textScore.text = "Score : " + gameManager.score.ToString();
}

// when button answer right clicked wait for second


IEnumerator IEWaitForColldown;

public void WaitForColldown()


{
if (IEWaitForColldown != null)
{
StopCoroutine(IEWaitForColldown);
}
IEWaitForColldown = _IEWaitForColldown();
StartCoroutine(IEWaitForColldown);
}

IEnumerator _IEWaitForColldown()
{
yield return new WaitForSeconds(3);
clicked = false;
gameManager.CallFunctionQuiz();
}
}

6. Slider Snap

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using UnityEngine.UIElements;

public class SliderSnap : MonoBehaviour


{
public GameObject ScrollBar;
float _scrollPos;
float[] pos;

private void Start()


{

private void Update()


{
pos = new float[transform.childCount];
float distance = 1f / (pos.Length - 1f);
for (int i = 0; i < pos.Length; i++)
{
pos[i] = distance * i;
}
if (Input.GetMouseButtonDown(0))
{
_scrollPos = ScrollBar.GetComponent<Scrollbar>().value;
}
else
{
for (int i = 0; i < pos.Length; i++)
{
if (_scrollPos < pos[i] + (distance / 2) && _scrollPos >
pos[i] - (distance / 2))
{
ScrollBar.GetComponent<Scrollbar>().value =
Mathf.Lerp(ScrollBar.GetComponent<Scrollbar>().value, pos[i], .1f);
}
}
}

/* for (int i = 0; i < pos.Length; i++)


{
if (_scrollPos < pos[i] + (distance / 2) && _scrollPos > pos[i]
- (distance / 2))
{
transform.GetChild(i).localScale =
Vector2.Lerp(transform.GetChild(i).localScale, Vector2.one, .1f);
for (int j = 0; j < pos.Length; j++)
{
if (j != i)
{
transform.GetChild(i).localScale =
Vector2.Lerp(transform.GetChild(i).localScale, new Vector2(.8f, .8f), .1f);
}
}
}
}*/
}
}

7. List Rank

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class ListRank : MonoBehaviour


{
public HighScore highscoreData;
public TMP_Text textName;
public TMP_Text textScore;
// Start is called before the first frame update
void Start()
{
textName.text = highscoreData.studentName;
textScore.text = highscoreData.studentScore.ToString();
}

private void OnEnable()


{
textName.text = highscoreData.studentName;
textScore.text = highscoreData.studentScore.ToString();
}

// Update is called once per frame


void Update()
{

}
}

8. Finish Manager

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;

public class FinishManager : MonoBehaviour


{
GameManager gameManager;

public TMP_Text studentName;


public TMP_Text studentScore;

// Start is called before the first frame update


void Start()
{
gameManager = FindObjectOfType<GameManager>();
}

//set score in ui finnish


private void OnEnable()
{
gameManager = FindObjectOfType<GameManager>();

string name = gameManager.GetStudentName();


int score = gameManager.GetStudentScore();

studentName.text = name;
studentScore.text = score.ToString();

gameManager.ChechCurrentScore(name, score);
}

private void OnDisable()


{
gameManager.ResetScore();
}
// Update is called once per frame
void Update()
{

}
}
Lampiran 2 Dokumentasi Penerapan Aplikasi

Anda mungkin juga menyukai