Advertisement
overactive

FDC

Jul 22nd, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. import random
  2. import sys
  3.  
  4. class Question():
  5.     def __init__(self, q, a, c):
  6.         self.question = q
  7.         self.answers = a
  8.         self.correct = c
  9.  
  10. class Quiz():
  11.     def __init__(self, fileName, playersNo):
  12.         self.playersNo = playersNo
  13.         self.entries = self.loadQuestions(fileName)
  14.         print('Witamy w grze')
  15.  
  16.     def loadQuestions(self,fileName):
  17.         entries = []
  18.         try:
  19.             with open(fileName, 'r') as file:
  20.                 data = file.readlines()
  21.         except IOError:
  22.           print ('Nie można otworzyc pliku')
  23.           sys.exit(1)
  24.        
  25.         for i in range(0, len(data), 4):
  26.             q = data[i].rstrip()
  27.             a = data[i + 1].rstrip().split(';')
  28.             c = data[i + 2].rstrip()
  29.             entries.append(Question(q, a, c))
  30.  
  31.         return entries
  32.        
  33.     def askQuestion(self, question, answers):
  34.         print(question)
  35.         random.shuffle(answers)
  36.         self.printAnswers(answers)
  37.  
  38.         print('Twoja odpowiedź to (wpisz literę):')
  39.         self.userAnswer = input()
  40.        
  41.     def printAnswers(self, answers):
  42.         for i in range(len(answers)):
  43.             print('{}) {}'.format(chr(i + 97), answers[i]))
  44.  
  45.     def getCorrectLetter(self, answers, correct):
  46.         return chr(answers.index(correct) + 97)
  47.        
  48.     def printScore(self):
  49.         questionCount = len(self.entries)
  50.         print('Koniec gry!\n')
  51.  
  52.         playersHeader = ''
  53.         for i in range(self.playersNo):
  54.             playersHeader += ' Gracz {} |'.format(i + 1)
  55.  
  56.         header = 'Numer pytania |' + playersHeader
  57.         print(header)
  58.         print('-' * len(header))
  59.  
  60.         for question in range(questionCount):
  61.             results = ''
  62.             for player in range(self.playersNo):
  63.                 results += ' {:^7} |'.format(self.points[player][question])
  64.             print(' {:^12} |'.format(question + 1) + results)
  65.  
  66.     def start(self):
  67.         self.points={}
  68.         for i in range(self.playersNo):
  69.             self.points[i] = []
  70.             for entry in self.entries:
  71.                 self.askQuestion(entry.question, entry.answers)
  72.                 correctLetter = self.getCorrectLetter(entry.answers, entry.correct)
  73.                 if correctLetter == self.userAnswer:
  74.                     self.points[i].append(1)
  75.                 else:
  76.                     self.points[i].append(0)
  77.                
  78.                 print('')
  79.  
  80. file = sys.argv[1]
  81.  
  82. if len(sys.argv) == 3:
  83.     if 1 <= int(sys.argv[2]) <= 3:
  84.         players = int(sys.argv[2])
  85.     elif int(sys.argv[2]) < 1:
  86.         print ('Minimlna liczba graczy to 1')
  87.         sys.exit(1)
  88.     elif int(sys.argv[2]) > 3:
  89.         print ('Maksymalna liczba graczy to 3')
  90.         sys.exit(1)
  91. else:
  92.     players = 1
  93.  
  94. game = Quiz(file, players)
  95. game.start()
  96. game.printScore()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement