[SOLVED] COMP2710 -  Project 4    

30.00 $

Category:

Description

5/5 - (1 vote)

Goals: 

  • To learn    how     to         use       linked  data     structures        (Note:  no        array   is allowed)
  • To use       strings
  • To learn    creating           multiple           versions           via       conditional      compilation
  • To design  and      implement      functions
  • To perform           unit      testing

 

In         this      homework       assignment,     you      will      write    a          simple trivia    quiz      game.  Your            program          first      allows  players to         create  their    trivia    questions         and      answers.            Multiple          questions         should  be        organized        and      managed         using    a            linked  data    structured;     no        array   is          allowed           in         this      homework            assignment.    Then,   your     program          asks     a          question          to         the       player, input            the       player’s           answer,           and      check   if          the       player’s           answer matches            the       actual  answer.           If          so,        award  the       player  the       award  points  for       that            question.         If          the       player  enters  the       wrong  answer your     program          should            display the       correct answer.           When   all        questions         have    been    asked,  display the            total     award  points  that      the       player  has       won.

 

Please  perform           the       following         steps    to         finish   this      assignment.

  • Step 1:         Create a          TriviaNode      structure        that      contains           (1)        information about   a          single   trivia    question          and      (2)        a          pointer pointing           to         other      This      structure         must    contain            a          string  for       the       question, a          string  for       the       answer to         the       question,         an        integer representing points  the       question          is          worth,  and      a          pointer           of         the      TriviaNode type.   Please  keep    in         mind    that      a          harder question          should  be        worth   more points.

 

  • Step 2:         Create a          linked  list       of         Trivia   using    the       TriviaNode      structure defined            in         step
  • Step 3:         Design and      implement      a          function           that      initialize          the       Trivia linked  list       by        hard-coding     the       following         three   (3)        trivia    questions (including        answers           and      award  points).
    • Trivia 1:
      • Question: How     long     was      the       shortest           war      on        record?        (Hint:   how     many   minutes)
      • Answer: 38
      • Award points: 100      o Trivia           2:
      • Question: What   was      Bank    of         America’s        original            name? (Hint:   Bank        of         Italy     or         Bank    of         Germany)
      • Answer: Bank    of         Italy
      • Award points: 50        o Trivia           3:
      • Question: What   is          the       best-selling      video   game   of         all        time?        (Hint:   Call      of         Duty     or         Wii       Sports)?
      • Answer: Wii       Sports
      • Award points: 20
    • Step 4:         Design and      implement      a          function           to         create  and      add      a new     TriviaNode      into      the       linked        You      must    use       operator          new     to dynamic          allocate           memory          to         a          new     TriviaNode.     Please  remember to         check   that      a          new     TriviaNode      is          successfully     created.

 

  • Step 5:         Design and      implement      a          function           that      asks     a          question to         the       player, input    the       player’s           answer,           and      check   if          the player’s           answer matches          the       actual             If          so,        award  the player  the       dollar   amount            for       that      question.         If          the       player  enters  the wrong  answer your     program          should  display the       correct answer.
    • Input: a          linked  list       of         TriviaNode,     the       number           of         trivia    to            be        asked   in         the       list       o Output:       void     or         int        –          0            indicates          success            and      1          indicates

 

  • Step 6:         Write   a          test      driver  to         perform           unit      testing for       the function           implemented  in         step              Assume            there   are       three   trivia    in your     created            list,      you      must    cover   at         least    the       following         cases:  (see Fig.      1          on        page    3          for       the       sample user     interface.)       o Case 1:         ask 0          question.
    • Case 2:         ask       1          question          (i.e.,     the       first      one)     from    the       list
      • Correct answer
      • Wrong answer
    • Case 3:         ask       3          questions         (i.e.,     all        the       questions)        from    the
      • Correct answer
      • Wrong answer
    • Case 4:         ask       5          questions         that      exceed the       number           of            available         trivia    in         the       linked  list       (i.e.,     the       index   of         the            trivia    is          larger  than     the       size      of         the       linked  list).

 

  • Step 7:         Write   the       main    function           that      performs         the       following:        (see       2          on        page    4          for       the       sample user     interface)        o Create          hard-code     trivia    quizzes (i.e.,     questions/answers/awards)    (Note:  just      call      the       function implemented  in         step     3).
    • Create more than     1          trivia    quiz      from    a          keyboard         (Note:  just      call            the       function           implemented  in         step     4).
    • Write a          for       loop;    in         each    iteration          do        the       following:
      • asks a question          to         the       player,
      • input the       player’s           answer,
      • if the       player’s           answer matches          the       actual  answer,           then        award  the       player  the       award  points  for       that      question,
      • else (i.e., the       player  enters  the       wrong  answer)           your     program        should  display the       correct
    • When all        questions         have    been    asked,  display the       total     award  points  the            player  has

 

  • Step 8:         Create two      versions           using    conditional
    • Version 1:         simply  run       the       test      driver  implemented  in         step
    • Version 2:         a          regular version run       the       main    function            implemented  in         step

Note:   this      version does     not       include the       test      driver.

You      must    provide            the       following         user     interface         for       the       debug version.            In         this      version,           your     program          must    run       the       test      driver  you      build            in         step     6.

 

***This is a debugging version ***

Unit Test Case 1: Ask no question. The program should give a warning message. Warning – the number of trivia to be asked must equal to or be larger than 1.

Case 1 Passed

Unit Test Case 2.1: Ask 1 question in the linked list.  The tester enters an incorrect answer.

Question: How long was the shortest war on record?

Answer: 85

Your answer is wrong. The correct answer is 38

Your total points 0

 

Case 2.1 passed

Unit Test Case 2.2: Ask 1 question in the linked list.  The tester enters a correct answer.

Question: How long was the shortest war on record?

Answer: 38

Your answer is correct! You receive 100 points.

Your total points: 100

 

Case 2.2 passed

Unit Test Case 3: Ask all the questions of the last trivia in the linked list. Question: How long was the shortest war on record?

Answer: 38

Your answer is correct! You receive 100 points.

Your total points: 100

Question: What was Bank of America’s original name? (Hint: Bank of Italy or Bank of Germany)?

Answer: Bank of Germany

Your answer is wrong. The correct answer is Bank of Italy

Your total points 100

 

show question here Add your answer here

. . .

Case 3 passed

 

Unit Test Case 4: Ask 5 questions in the linked list.

Warning – There is only 3 trivia in the list.

Case 4 passed

 

*** End of the Debugging Version ***

          

Fig.      1:         Sample            user     interface         for       the      debug version           

 

You      must    provide            the       following         user     interface         for       the       production            version.           The      user     input    is          depicted          as         Bold,   but       you      do        not            need    to         display user     input    in         bold.    Please  replace            “Li”      with     your            name.  In         this      version,           your     program          must    run       the       test      driver  you            build    in         step     6.

*** Welcome to Li’s trivia quiz game ***

Enter a question: enter your first question here.

Enter an answer: enter your first answer here.

Enter award points: enter your first award points here.

Continue? (Yes/No): Yes

Enter a question: enter your second question here.

Enter an answer: enter your second answer here.

Enter award points: enter your second award points here.

Continue? (Yes/No): No 

 

Question: How long was the shortest war on record? (Hint: how many minutes) Answer: 38

Your answer is correct. You receive 100 points.

Your total points: 100

Question: What was Bank of America’s original name? (Hint: Bank of Italy or

Bank of Germany)?

Answer: Bank of Germany

Your answer is wrong. The correct answer is: Bank of Italy

Your Total points: 100

 

Question: What is the best-selling video game of all time? (Hint: Call of

Duty or Wii Sports)?

Answer: Wii Sports

Your answer is correct. You receive 20 points.

Your total points: 120

Display more questions/answers and information here…

*** Thank you for playing the trivia quiz game. Goodbye! ***

 

          

Fig.      2:         Sample            user     interface         for       the      production     version           

 

How     to         Create Two     Versions?       

You      can      use       the       preprocessor   directive          #ifdef   to         create  and      maintain          two            versions           (i.e.,     a          debugging       version and      a          product            version)           in            your     program.         If          you      have    the       sequence

 

#ifdef UNIT_TESTING

add your unit testing code here

#else

add your code for the product version here  #endif

in         your     program,         the       code    that      is          compiled         depends           on        whether            a          preprocessor   macro  by        that      name   is          defined            or         not.      For            example,         if          there   has       been    a          “#define          UNIT_TESTING”           macro  line),            then     “ add your unit testing code here” is  compiled         and      “ add your code for the product version here” is   ignored.           If          the       macro  is          not       defined,            “             add your code for the product version here” is         compiled         and “add your unit testing code here” is     ignored.

These   macros look     a          lot        like      if          statements,     but       macros behave completely differently.      More   specifically,     an        if          statement        decides            which   statements      of your     program          must    be        executed         at         run       time;    #ifdef   controls           which   lines of         code    in         your     program          are       actually           compiled.

Unit     Testing:          

Unit     testing is          a          way      of         determining    if          an        individual        function           or            class    works.  You      need    to         isolate a          single   function           or         class    and      test            only     that      function           or         class.   For       each    function           in         this      homework,            you      need    to         check   normal cases   and      boundary         cases.             

           

Examples         for       tested  values:

–     String   –          empty  string,  medium           length, very      long.    –           Array   –          empty  array,  first      element,      last      element.          –           Int        –          zero,    mid-value,      high-value.

 

You      must    implement      a          unit      test      driver  for       each    function           implemented  in            your     program.         You      may     need    to         use       assert()            to         develop           your            unit      test      drivers if          tested  results are       predictable.

 

Integration      Testing:          

Integration      testing (a.k.a., Integration      and      Testing)           is          the       phase   in         software            testing in         which   individual        software          modules          are       combined        and            tested  as         a          group.  You      may     use       the       sample user     interface         illustrated            in         Fig.      2          on        page    4          to         perform           an        integration      testing for            your     program.