Skip to content

ljuben97/QuizGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

Quiz Game

Проект по визуелно програмирање

Изработил: Љубен Ангелкоски

Играта се состои од едно главно мени кое содржи две мали игри:

  • Квиз на време
  • Квиз кој сака да биде милионер?

Исто така главното мени се состои од компонента за внесување на име на играчот и табела со рекорди каде се прикажани две листи од имињата на играчите и нивните поени сортирани во опаѓачки редосед. Двата квиза се составени од исти прашања кои се земаат од текст документ. Секое прашање си има свое ниво на тежина при што се пресметува бројот на освоени поени. Дополнително секое прашање содржи четири понудени одговори од кои само едно е точно.

alt text

Квиз на време

Квизот на време се состои од еден Progress Bar кој е поврзан со тајмер кој "истекува" за 60 секунди. Корисникот има време од 60 секунди со можност да погоди што е можно повеќе точни одговори. Дополнително има три нивоа на и за кои што важи:

  • Првото ниво носи 1 поен
  • Второто ниво носи 3 поени
  • Третото ниво носи 5 поени

Доколку прашањето го одговори точно врз основа на нивото поени се додаваат на вкупниот број на поени, а доколку е грешно не се додава ништо. Притоа се генерира прањање од било која од трите нивоа и процесот се повторува се додека не истече времето или не се потрошат сите прашања. По завршување на играта вкупниот број на поени се додава во листата на рекорди.

alt text

Квиз кој сака да биде милионер?

Квизот кој сака да биде милионер работи слично како познатата квиз емисија само без џокери. Корисникот има 15 прашања за одговарање. При тоа за:

  • Од прво до петто прањаше се генерираат рандом прашања од првото ниво
  • Од шестто до десетто прањаше се генерираат рандом прашања од второто ниво
  • Од единаесетто до петнаесетто прањаше се генерираат рандом прашања од третото ниво

Секое прашање носи соодветна сума на пари. Корисникот има опција да се откажи каде при откажување ќе ги земи парите соодветни на последно-одговореното прашање. Но, доколку корисникот одговори на прашање а го згреши одговорот, ќе ги земи парите кои одговараат на последното прашање каде што се сменува нивото.

На пример доколку корисникот ќе го згреши седмото прашања ќе ги земе парите кои одговараат на петтото ниво, доколку го згреши тринаесеттото прашање ќе ги земи парите кои одговараат на десеттото ниво а доколку го згреши четвртото прашање нема да земи ништо

alt text

Објаснување на кодот

Кодот се содржи од две класи: Igrach која одговара на милионерот и Igrach1 која одговара на квизот на време. И двете класи содржат 3 листи од листи од стринг компоненти во вид на динамички матрици. Секоја листа се состои до 6 стринг компоненти:

  • Првиот компонент го содржи прашањето
  • Вторио компонент го содржи првиот понуден одговор
  • Третиот компонент го содржи вториот понуден одговор
  • Четвртиот компонент го содржи третиот понуден одговор
  • Петтиот компонент го содржи четвртиот понуден одговор
  • Шестиот компонент го содржи бројот на одговорот кој е точен

Притоа сите овие листи од стрингови се додаваат на трите листи.

  • Првата листа ги содржи прашањата од првото ниво
  • Втората листа ги содржи прашањата од второто ниво
  • Третата листа ги содржи прашањата од третото ниво

Притоа се бираат прашања по рандом од трите листи. Доколку играме квиз на време се бира од која листа да се земи прашање по рандом, доколку сме кај милионерот се поставува бројач кој се зголемува на секое наредно прашање и врз база на вредноста на бројачот се бира прашање од соодветната листа. Притоа четирите копчина се полнат со текст кој е еднаков на текстот на понуденото прашање. При клик на некое од четирите копчиња се повикува функцијата CheckAnswer(int n)

  • Доколку е кликнато првото копче параметарот на функцијата е еднаков на 1
  • Доколку е кликнато второто копче параметарот на функцијата е еднаков на 2
  • Доколку е кликнато третото копче параметарот на функцијата е еднаков на 3
  • Доколку е кликнато четвртото копче параметарот на функцијата е еднаков на 4

Потоа се проверува дали параметарот е еднаков со бројот во листата односно бројот на одговорот кој е точен. Доколку е еднаков се враќа вредност true а доколку не е се враќа вредност false.

При старт на програмата не иницијализираат две листи едната содржи објекти од едната класа а другата објекти од другата. При крај на секоја игра во функцијата endGame() се додава објектот кој ги содржи вкупниот број на освоени поени и вкупниот број на освоени пари за подоцна да се рангираат во делот за рекорди

Објаснување на функцијата nextQuestion()

Функцијата nextQuestion() ја има во двете класи со различен код. Во овој случај ќе го разгледаме кодот во класата за Квизот на Време:

public void nextQuestion()
    {
        grupa = random.Next(1, 4);
        if (grupa==3 && questionHigh.Count == 0) grupa = 2;
        if (grupa==2 && questionsMedium.Count == 0) grupa = 1;
        if (questionsLow.Count == 0 && questionsMedium.Count == 0 && questionHigh.Count==0)
        {
            empty = true;
        }
        if (grupa == 1)
        {
            poz = random.Next(0, questionsLow.Count);
            question = questionsLow.ElementAt(poz);
            questionsLow.RemoveAt(poz);
            poeni = 1;
        }
        else if (grupa == 2)
        {
            poz = random.Next(0, questionsMedium.Count);
            question = questionsMedium.ElementAt(poz);
            questionsMedium.RemoveAt(poz);
            poeni = 3;
        }
        else if(grupa==3)
        {
            poz = random.Next(0, questionHigh.Count);
            question = questionHigh.ElementAt(poz);
            questionHigh.RemoveAt(poz);
            poeni = 5;
        }
        question1 = question.ElementAt(0);
        answer1 = question.ElementAt(1);
        answer2 = question.ElementAt(2);
        answer3 = question.ElementAt(3);
        answer4 = question.ElementAt(4);
        answer = Int32.Parse(question.ElementAt(5));
    }

Прво за променливата grupa се бира случаен број од 1 до 3. Потоа имаме три if кодови секој зема прашање од различна листа со ниво. Променливата poz добива случајна вредност од 0 до бројот на елементи на листата односо се бира прашање по случаен избор со кодот:

poz = random.Next(0, questionHigh.Count);
question = questionHigh.ElementAt(poz);

Потоа истото прашање се бриши од листата за да не се избери повторно и врз база на нивото променливата poeni се мести на вредност или 1 или 3 или 5 за потоа да се додаде на вкупниот број на поени:

questionHigh.RemoveAt(poz);
poeni = 5;

Потоа стринговите question1, answer1, answer2, answer3 и answer4 се местат на елементите кои се на n-та позиција од листата соодветното и промелнивата answer се мести на бројот на точниот одговор.

alt text

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages