Test Uygulaması

      Test Uygulaması

      Arkadaşlar üniversite öğrencisiyim ve bazı sınavlara hazırlanmak için son yıllarda çıkmış soruları android uygulamasına dökmek istiyorum kendim daha rahat çalışabilmek için basit bir örnek proje varmıdır bu konu hakkında bildiğiniz teste girip cevaplıcam yanlış cevapladığım da ise bana doğrusunu göstercek basit bir örnek?
      Yapılmış bir uygulama mı istiyorsun yoksa kodlarını filan inceleyebileceğin bir taslak benzeri bir şey mi? Eğer sadece tarzı incelemek için yapılmış uygulama istiyorsan google playe çıkmış sorular diyerek aratırsan bir çok uygulama bulabilirsin.
      Powered by Basay

      basayx wrote:

      Yapılmış bir uygulama mı istiyorsun yoksa kodlarını filan inceleyebileceğin bir taslak benzeri bir şey mi? Eğer sadece tarzı incelemek için yapılmış uygulama istiyorsan google playe çıkmış sorular diyerek aratırsan bir çok uygulama bulabilirsin.


      Derdimi tam anlatamamışım programı ben buldum ve düzenledim tek derdim yanlış cevabı verince doğru cevap şıkkıda yansın istiyorum kodu atıyım buraya bi bakıverirsen sevinirim

      Source Code

      1. ​using System.Collections.Generic;
      2. using UnityEngine;
      3. using UnityEngine.UI;
      4. using AgileReaction.TriviaFramework.Core;
      5. namespace AgileReaction.TriviaFramework.Example
      6. {
      7. public class TriviaExample : MonoBehaviour
      8. {
      9. #region Private Fields
      10. [SerializeField]
      11. private Color ColorCorrect = new Color(0, 255, 0);
      12. [SerializeField]
      13. private Color ColorNormal = new Color(142, 182, 201);
      14. [SerializeField]
      15. private Color ColorWrong = new Color(255, 0, 0);
      16. [SerializeField]
      17. private List<Image> imgAnswers;
      18. private bool isAnswered = false;
      19. private TriviaDatabaseAccess TriviaData;
      20. [SerializeField]
      21. private List<Text> txtAnswers;
      22. [SerializeField]
      23. private Text txtQuestion;
      24. [SerializeField]
      25. private List<TriviaAnswer> answers;
      26. #endregion Private Fields
      27. #region Public Methods
      28. public void BtnAnswer0()
      29. {
      30. SubmitAnswer(0);
      31. }
      32. public void BtnAnswer1()
      33. {
      34. SubmitAnswer(1);
      35. }
      36. public void BtnAnswer2()
      37. {
      38. SubmitAnswer(2);
      39. }
      40. public void BtnAnswer3()
      41. {
      42. SubmitAnswer(3);
      43. }
      44. #endregion Public Methods
      45. #region Private Methods
      46. private void init()
      47. {
      48. TriviaData = TriviaDatabaseAccess.instance;
      49. if (TriviaData)
      50. {
      51. TriviaData.LoadTrivia(true);
      52. NewQuestion();
      53. }
      54. }
      55. private void NewQuestion()
      56. {
      57. isAnswered = false;
      58. SetInitBtnColor(ColorNormal);
      59. txtQuestion.text = TriviaData.GetQuestion();
      60. answers = TriviaData.GetRandomizeAnswers();
      61. for (int i = 0; i < answers.Count; i++)
      62. {
      63. txtAnswers[i].text = answers[i].answer;
      64. }
      65. }
      66. private void SetButtonColor(int btn, Color color)
      67. {
      68. imgAnswers[btn].color = color;
      69. }
      70. private void SetInitBtnColor(Color color)
      71. {
      72. for (int i = 0; i < imgAnswers.Count; i++)
      73. {
      74. imgAnswers[i].color = color;
      75. }
      76. }
      77. private void Start()
      78. {
      79. init();
      80. }
      81. private void SubmitAnswer(int btnPressed)
      82. {
      83. if (isAnswered)
      84. {
      85. return;
      86. }
      87. isAnswered = true;
      88. if (answers[btnPressed].isTrue)
      89. {
      90. SetButtonColor(btnPressed, ColorCorrect); //DOĞRU CEVAP RENGİ
      91. }
      92. else
      93. {
      94. SetButtonColor(btnPressed, ColorWrong); //YANLIŞ CEVAP RENGİ
      95. }
      96. if (TriviaData.trivia.Count > 1)
      97. {
      98. TriviaData.PopTrivia();
      99. Invoke("NewQuestion", 3);
      100. }
      101. else
      102. {
      103. Debug.Log("Soru Kalmadı");
      104. }
      105. }
      106. #endregion Private Methods
      107. }
      108. }
      Sanırım işleyişi uygulamayı direk görmeden anlayamayacağım ayrıca ben unity/ue4 kullanıyorum yani sadece oyun motorları. Anlayacağınız visual / android studio gibi program uygulamalarına hakim değilim.
      Ancak aynı mantıkla düşünürsem iki tane değişken atayın ve her soru için birini doğru cevap butonu diğerini yanlış olan butonu olarak ayarlayın. Aynı şekilde yine doğru cevap için bir void yanlış cevap içinde ayrı bir void oluşturun. Doğru cevap dışındaki tüm voidlere yanlış buton voidini ekleyin. Yanlış buton voidine birde doğru buton değişkenine atalı objenin rengini değiştirecek bir kod yazın. İstersenbunu sana yazabilirim ancak unity için olacağından senin kullandığın yazılıma uyacağını söyleyemem.
      Kolay gelsin
      Powered by Basay

      Post was edited 2 times, last by “basayx” ().

      Eğer unity ise yardımcı olabilirim sanırım. Öncelikle ui canvasın içinde ek olarak sorularınızı birer panel içinde oluşturun her soru için ayrı bir panel. Örnekte ben bunları soru paneli olarak isimlendirdim. Oluşturduğun soru panellerine aşağıdaki kodu ekle ve doğru cevapla beraber sıradaki soru panelinide ata:

      soruscript.cs

      Source Code

      1. using System.Collections;
      2. using System.Collections.Generic;
      3. using UnityEngine;
      4. using UnityEngine.UI;
      5. public class soruscript : MonoBehaviour {
      6. public GameObject siradakipanel;
      7. public Image dogrubuton;
      8. GameObject seceneklerA;
      9. GameObject seceneklerB;
      10. GameObject seceneklerC;
      11. GameObject seceneklerD;
      12. void Update()
      13. {
      14. seceneklerA = GameObject.FindGameObjectWithTag("A");
      15. seceneklerB = GameObject.FindGameObjectWithTag("B");
      16. seceneklerC = GameObject.FindGameObjectWithTag("C");
      17. seceneklerD = GameObject.FindGameObjectWithTag("D");
      18. }
      19. public void siradakisoru()
      20. {
      21. siradakipanel.SetActive(true);
      22. Destroy(this.gameObject);
      23. }
      24. public void dogrusu()
      25. {
      26. seceneklerA.GetComponent<Button>().enabled = false;
      27. seceneklerB.GetComponent<Button>().enabled = false;
      28. seceneklerC.GetComponent<Button>().enabled = false;
      29. seceneklerD.GetComponent<Button>().enabled = false;
      30. dogrubuton.GetComponent<Image>().color = new Color32(0, 208, 27, 255);
      31. }
      32. }





      Ardından doğru cevap dışındaki tüm butonların içine yanlış cevap scriptini ekleyin:

      yanliscevap.cs

      Source Code

      1. using System.Collections;
      2. using System.Collections.Generic;
      3. using UnityEngine;
      4. using UnityEngine.UI;
      5. public class yanliscevap : MonoBehaviour {
      6. public void yanlis()
      7. {
      8. GameObject soru;
      9. soru = GameObject.Find("sorupaneli");
      10. this.gameObject.GetComponent<Image>().color = new Color32(208,0,0,255);
      11. soruscript tru = soru.GetComponent<soruscript>();
      12. tru.dogrusu();
      13. }
      14. }



      Bunları yaparsanız sıkıntısız çalışacaktır. Tabi kodları ekledikten sonra voidleri butonlara görevlendirmelisiniz. Oldukça basit bir sistem olmasına karşın işinize yarayacaktır...
      Son olarak oluşturacağınız kodların isimleri benimkilerle aynı olsun çünkü namespcelerinden dolayı farklılık durumunda hata alırsınız, tabi namespaceleri değiştirip öylede ayarlama yapabilirsiniz.
      Powered by Basay

      basayx wrote:

      Eğer unity ise yardımcı olabilirim sanırım. Öncelikle ui canvasın içinde ek olarak sorularınızı birer panel içinde oluşturun her soru için ayrı bir panel. Örnekte ben bunları soru paneli olarak isimlendirdim. Oluşturduğun soru panellerine aşağıdaki kodu ekle ve doğru cevapla beraber sıradaki soru panelinide ata:

      soruscript.cs

      Source Code

      1. using System.Collections;
      2. using System.Collections.Generic;
      3. using UnityEngine;
      4. using UnityEngine.UI;
      5. public class soruscript : MonoBehaviour {
      6. public GameObject siradakipanel;
      7. public Image dogrubuton;
      8. GameObject seceneklerA;
      9. GameObject seceneklerB;
      10. GameObject seceneklerC;
      11. GameObject seceneklerD;
      12. void Update()
      13. {
      14. seceneklerA = GameObject.FindGameObjectWithTag("A");
      15. seceneklerB = GameObject.FindGameObjectWithTag("B");
      16. seceneklerC = GameObject.FindGameObjectWithTag("C");
      17. seceneklerD = GameObject.FindGameObjectWithTag("D");
      18. }
      19. public void siradakisoru()
      20. {
      21. siradakipanel.SetActive(true);
      22. Destroy(this.gameObject);
      23. }
      24. public void dogrusu()
      25. {
      26. seceneklerA.GetComponent<Button>().enabled = false;
      27. seceneklerB.GetComponent<Button>().enabled = false;
      28. seceneklerC.GetComponent<Button>().enabled = false;
      29. seceneklerD.GetComponent<Button>().enabled = false;
      30. dogrubuton.GetComponent<Image>().color = new Color32(0, 208, 27, 255);
      31. }
      32. }





      Ardından doğru cevap dışındaki tüm butonların içine yanlış cevap scriptini ekleyin:

      yanliscevap.cs

      Source Code

      1. using System.Collections;
      2. using System.Collections.Generic;
      3. using UnityEngine;
      4. using UnityEngine.UI;
      5. public class yanliscevap : MonoBehaviour {
      6. public void yanlis()
      7. {
      8. GameObject soru;
      9. soru = GameObject.Find("sorupaneli");
      10. this.gameObject.GetComponent<Image>().color = new Color32(208,0,0,255);
      11. soruscript tru = soru.GetComponent<soruscript>();
      12. tru.dogrusu();
      13. }
      14. }



      Bunları yaparsanız sıkıntısız çalışacaktır. Tabi kodları ekledikten sonra voidleri butonlara görevlendirmelisiniz. Oldukça basit bir sistem olmasına karşın işinize yarayacaktır...
      Son olarak oluşturacağınız kodların isimleri benimkilerle aynı olsun çünkü namespcelerinden dolayı farklılık durumunda hata alırsınız, tabi namespaceleri değiştirip öylede ayarlama yapabilirsiniz.



      ya basayx kusura bakma uygulama hazırda ve çalışıyo 150 adet soruda girdim zaten toplamda 1200 soru girmem lazım sadece uygulamada o kısmı beceremedim eğer skype adresin varsa hüseyin can kantar diye arat ekle uzaktan ekran paylaşımı ile bi bak yada proje dosyasını atıyım direk
      Projeyi inceledim kavramam biraz zaman alsa da çözdüm işi

      TriviaExample.cs kodunu aç ve hepsini sildikten sonra bunu yapıştır

      Source Code

      1. using System.Collections.Generic;
      2. using UnityEngine;
      3. using UnityEngine.UI;
      4. using AgileReaction.TriviaFramework.Core;
      5. namespace AgileReaction.TriviaFramework.Example
      6. {
      7. /// <summary>
      8. /// Simple example script of a implementation of TriviaFramework
      9. /// </summary>
      10. public class TriviaExample : MonoBehaviour
      11. {
      12. GameObject cevap;
      13. GameObject cevap1;
      14. GameObject cevap2;
      15. GameObject cevap3;
      16. /// <summary>
      17. /// This example requires the Answers Text List order
      18. /// to match up with button press events, because it
      19. /// doesn't actually read the answers on the buttons
      20. /// that are pressed.
      21. /// </summary>
      22. #region Private Fields
      23. [SerializeField]
      24. private Color ColorCorrect = new Color(0, 255, 0);
      25. [SerializeField]
      26. private Color ColorNormal = new Color(142, 182, 201);
      27. [SerializeField]
      28. private Color ColorWrong = new Color(255, 0, 0);
      29. [SerializeField]
      30. private List<Image> imgAnswers;
      31. private bool isAnswered = false;
      32. private TriviaDatabaseAccess TriviaData;
      33. [SerializeField]
      34. private List<Text> txtAnswers;
      35. [SerializeField]
      36. private Text txtQuestion;
      37. [SerializeField]
      38. private List<TriviaAnswer> answers;
      39. #endregion Private Fields
      40. #region Public Methods
      41. public void BtnAnswer0()
      42. {
      43. SubmitAnswer(0);
      44. }
      45. public void BtnAnswer1()
      46. {
      47. SubmitAnswer(1);
      48. }
      49. public void BtnAnswer2()
      50. {
      51. SubmitAnswer(2);
      52. }
      53. public void BtnAnswer3()
      54. {
      55. SubmitAnswer(3);
      56. }
      57. #endregion Public Methods
      58. #region Private Methods
      59. private void init()
      60. {
      61. TriviaData = TriviaDatabaseAccess.instance;
      62. if (TriviaData)
      63. {
      64. TriviaData.LoadTrivia(true); // Loads Trivia and makes it random, you can optionally load only one particular category too.
      65. NewQuestion();
      66. }
      67. }
      68. private void NewQuestion()
      69. {
      70. isAnswered = false;
      71. SetInitBtnColor(ColorNormal); //change buttons colors back to normal
      72. txtQuestion.text = TriviaData.GetQuestion(); // get and set the question to the label
      73. answers = TriviaData.GetRandomizeAnswers(); // gets a mix of answers
      74. //Set each button text to a answer
      75. for (int i = 0; i < answers.Count; i++)
      76. {
      77. txtAnswers[i].text = answers[i].answer;
      78. }
      79. }
      80. private void SetButtonColor(int btn, Color color)
      81. {
      82. imgAnswers[btn].color = color;
      83. }
      84. private void SetInitBtnColor(Color color)
      85. {
      86. for (int i = 0; i < imgAnswers.Count; i++)
      87. {
      88. imgAnswers[i].color = color;
      89. }
      90. }
      91. // text label for the question
      92. // Text labels for the buttons
      93. private void Start()
      94. {
      95. init(); // Needs to start after TriviaDatabaseAccess otherwise it can't find the instance which makes its
      96. // instance in Awake Function
      97. }
      98. private void SubmitAnswer(int btnPressed)
      99. {
      100. if (isAnswered)
      101. {
      102. return; //prevents from answering again till new question
      103. }
      104. isAnswered = true;
      105. if (answers[btnPressed].isTrue) // Test if button pressed number is the correct button number
      106. {
      107. //You got the Question Right
      108. SetButtonColor(btnPressed, ColorCorrect); //DOĞRU CEVAP RENGİ
      109. }
      110. else{
      111. SetButtonColor(btnPressed, ColorWrong);
      112. if (answers[0].isTrue == true) {
      113. imgAnswers[0].GetComponent<Image>().color = new Color32(20, 170, 0, 255); //DOĞRU CEVAP RENGİ
      114. }
      115. if (answers[1].isTrue == true)
      116. {
      117. imgAnswers[1].GetComponent<Image>().color = new Color32(20, 170, 0, 255); //DOĞRU CEVAP RENGİ
      118. }
      119. if (answers[2].isTrue == true)
      120. {
      121. imgAnswers[2].GetComponent<Image>().color = new Color32(20, 170, 0, 255); //DOĞRU CEVAP RENGİ
      122. }
      123. if (answers[3].isTrue == true)
      124. {
      125. imgAnswers[3].GetComponent<Image>().color = new Color32(20, 170, 0, 255); //DOĞRU CEVAP RENGİ
      126. }
      127. //You got the Question Wrong
      128. }
      129. if (TriviaData.trivia.Count > 1) // checks to see if that was the last one
      130. {
      131. TriviaData.PopTrivia(); // Removes Trivia from the list so its not repeated and
      132. Invoke("NewQuestion", 3); //Changes question in 5 seconds
      133. }
      134. else
      135. {
      136. Debug.Log("Soru Kalmadı");
      137. }
      138. }
      139. #endregion Private Methods
      140. }
      141. }


      Denediğimde sorunsuz çalışıyordu, umarım yardımcı olabilmişimdir...
      Powered by Basay
      Ups erken görmüş olsam yardım ederdim. Söylediğin olayın kodları bende vardı ama @basayx yardım etmiş boşa atmayayım emeğe saygısızlık olmasın ;)

      Bu arada ilgilenir misin bilmiyorum ama ben bu sisteme joker sistemi entegre ettim.
      - Double Answer : Bir cevaba tıkladığında eğer o cevap yanlışsa 1 kez daha basma hakkı veriyor. (Bu sırada yanlış bastığı cevap kırmızı renkte duruyor, süre azalmaya devam ediyor.)
      - Fifty Fifty : 4 şıktan yanlış 2 cevabı eliyorum.
      - Next Question : Diğer soruya geçiyor.

      Birde 4 farklı soru tipi var.
      - Text / 4 şık.
      - Image / 4 şık.
      - Poll / 2 şık (Yes/No) - (A/B).

      Sorularda kategori sistemi var, başta dinamik olarak kategorileri çekiyor. Seçtiği 3 kategori için de çark çeviriyor, rastgele bi kategori seçiliyor. Animasyonlu panellerle sorular geliyor ve cevaplıyor. İşin güzel yanı tüm bunlar cloud tabanlı. Sorular internet üzerinden çekiliyor, resimlerde ;)

      Saymadığım bir sürü özellik var daily bonus, shop, achivements(Cloud üzerinden kişinin ilerleme yüzdeliğine göre, mesela 20 türkçe sorusu, 100 matematik sorusu, 50 oyun kazanma), leaderboard, online friend match ...etc

      Trifles Games wrote:

      Ups erken görmüş olsam yardım ederdim. Söylediğin olayın kodları bende vardı ama @basayx yardım etmiş boşa atmayayım emeğe saygısızlık olmasın ;)

      Bu arada ilgilenir misin bilmiyorum ama ben bu sisteme joker sistemi entegre ettim.
      - Double Answer : Bir cevaba tıkladığında eğer o cevap yanlışsa 1 kez daha basma hakkı veriyor. (Bu sırada yanlış bastığı cevap kırmızı renkte duruyor, süre azalmaya devam ediyor.)
      - Fifty Fifty : 4 şıktan yanlış 2 cevabı eliyorum.
      - Next Question : Diğer soruya geçiyor.

      Birde 4 farklı soru tipi var.
      - Text / 4 şık.
      - Image / 4 şık.
      - Poll / 2 şık (Yes/No) - (A/B).

      Sorularda kategori sistemi var, başta dinamik olarak kategorileri çekiyor. Seçtiği 3 kategori için de çark çeviriyor, rastgele bi kategori seçiliyor. Animasyonlu panellerle sorular geliyor ve cevaplıyor. İşin güzel yanı tüm bunlar cloud tabanlı. Sorular internet üzerinden çekiliyor, resimlerde ;)

      Saymadığım bir sürü özellik var daily bonus, shop, achivements(Cloud üzerinden kişinin ilerleme yüzdeliğine göre, mesela 20 türkçe sorusu, 100 matematik sorusu, 50 oyun kazanma), leaderboard, online friend match ...etc


      Açıkcası benim bile ilgimi çekti :D eğer hazırda varsa ve tabii paylaşmak istersen çok memnun olurum :)
      Powered by Basay