Fixed a bug where the answer was deemed incorrect if it had uppercase letter in the .tst file
This commit is contained in:
commit
e5467ba459
3 changed files with 40 additions and 29 deletions
BIN
programfiles/vyzkousejme.exe
Normal file
BIN
programfiles/vyzkousejme.exe
Normal file
Binary file not shown.
|
@ -3,9 +3,11 @@ from tkinter import filedialog
|
||||||
from tkinter import messagebox
|
from tkinter import messagebox
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
|
import multiprocessing
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
def swapSides(): # prohodi sloupce v souboru testu (a tim i zmeni co je otazka a co odpoved)
|
def swapSides(): # prohodi sloupce v souboru testu (a tim i zmeni co je otazka a co odpoved)
|
||||||
global test
|
global test
|
||||||
global score
|
global score
|
||||||
|
|
||||||
|
@ -18,41 +20,42 @@ def swapSides(): # prohodi sloupce v souboru testu (a tim i zmeni co je otazka a
|
||||||
newQuestion()
|
newQuestion()
|
||||||
|
|
||||||
|
|
||||||
def saveTest(): # ulozi soubor testu
|
def saveTest(): # ulozi soubor testu
|
||||||
print(test)
|
print(test)
|
||||||
print(filepath)
|
print(filepath)
|
||||||
with open(filepath, mode='w', encoding = "UTF-8") as file:
|
with open(filepath, mode='w', encoding="UTF-8") as file:
|
||||||
file.write(str(test[2])+'\n')
|
file.write(str(test[2]) + '\n')
|
||||||
for i in range(len(test[0])):
|
for i in range(len(test[0])):
|
||||||
for j in range(len(test[0][i])):
|
for j in range(len(test[0][i])):
|
||||||
file.write(test[0][i][j])
|
file.write(test[0][i][j])
|
||||||
if j < len(test[0][i])-1:
|
if j < len(test[0][i]) - 1:
|
||||||
file.write(',')
|
file.write(',')
|
||||||
file.write('/')
|
file.write('/')
|
||||||
for j in range(len(test[1][i])):
|
for j in range(len(test[1][i])):
|
||||||
file.write(test[1][i][j])
|
file.write(test[1][i][j])
|
||||||
if j < len(test[1][i])-1:
|
if j < len(test[1][i]) - 1:
|
||||||
file.write(',')
|
file.write(',')
|
||||||
file.write('\n')
|
file.write('\n')
|
||||||
|
|
||||||
|
|
||||||
def newQuestion(): # nastavi novou otazku
|
def newQuestion(): # nastavi novou otazku
|
||||||
global questionPlace
|
global questionPlace
|
||||||
global timeAsked
|
global timeAsked
|
||||||
questionPlace = random.randint(0, len(test[0])-1)
|
questionPlace = random.randint(0, len(test[0]) - 1)
|
||||||
newQuestion = test[0][questionPlace][0]
|
newQuestion = test[0][questionPlace][0]
|
||||||
question.set(newQuestion)
|
question.set(newQuestion)
|
||||||
timeAsked = time.time()-1
|
timeAsked = time.time() - 1
|
||||||
|
|
||||||
|
|
||||||
def on_closing(): #zobrazi se pri zavirani programu, pokud se uzivatel rozhodne program zavrit, tak prvne ulozi highscore
|
def on_closing(): # zobrazi se pri zavirani programu, pokud se uzivatel rozhodne program zavrit, tak prvne ulozi highscore
|
||||||
if messagebox.askokcancel("Quit", "Do you want to quit?"):
|
if messagebox.askokcancel("Quit", "Do you want to quit?"):
|
||||||
saveTest()
|
saveTest()
|
||||||
root.destroy()
|
root.destroy()
|
||||||
|
|
||||||
|
|
||||||
def submitAnswer(uselessArgument): # precte pole pro zadani odpovedi, zhodnoti ji, a vhodnym zpusobem zmeni score a highscore
|
def submitAnswer(uselessArgument): # precte pole pro zadani odpovedi, zhodnoti ji, a vhodnym zpusobem zmeni score a highscore
|
||||||
global score
|
global score
|
||||||
|
|
||||||
for i in test[1][questionPlace]:
|
for i in test[1][questionPlace]:
|
||||||
if answerEntry.get().lower() == i.lower():
|
if answerEntry.get().lower() == i.lower():
|
||||||
score += timeMultiplier
|
score += timeMultiplier
|
||||||
|
@ -63,15 +66,16 @@ def submitAnswer(uselessArgument): # precte pole pro zadani odpovedi, zhodnoti j
|
||||||
if score > test[2]:
|
if score > test[2]:
|
||||||
test[2] = score
|
test[2] = score
|
||||||
highScore.set('High score: %s' % (test[2]))
|
highScore.set('High score: %s' % (test[2]))
|
||||||
|
|
||||||
answerEntry.delete(0, 'end')
|
answerEntry.delete(0, 'end')
|
||||||
newQuestion()
|
newQuestion()
|
||||||
currentScore.set('Score: %s' % round(score, 2))
|
currentScore.set('Score: %s' % round(score, 2))
|
||||||
highScore.set('High score: %s' % round(test[2], 2))
|
highScore.set('High score: %s' % round(test[2], 2))
|
||||||
|
|
||||||
|
|
||||||
def formatTest(filepath): # precte soubor a formatuje jej do listu test
|
def formatTest(filepath): # precte soubor a formatuje jej do listu test
|
||||||
global score
|
global score
|
||||||
with open(filepath, encoding = "UTF-8") as file:
|
with open(filepath, encoding="UTF-8") as file:
|
||||||
file = file.readlines()
|
file = file.readlines()
|
||||||
|
|
||||||
sloupec1 = []
|
sloupec1 = []
|
||||||
|
@ -93,24 +97,26 @@ def getExtension(filename): # vrati posledni ctyry znaky jmena souboru
|
||||||
return filename[-4:None]
|
return filename[-4:None]
|
||||||
|
|
||||||
|
|
||||||
def openTest(): # ziska adresu testu a nastavi seznam test aby byl novy test, pote reqestuje novou otazku
|
def openTest(): # ziska adresu testu a nastavi seznam test aby byl novy test, pote reqestuje novou otazku
|
||||||
global test
|
global test
|
||||||
global filepath
|
global filepath
|
||||||
saveTest()
|
saveTest()
|
||||||
gotfile = False
|
gotfile = False
|
||||||
filepath = None
|
filepath = None
|
||||||
while not gotfile:
|
while not gotfile:
|
||||||
filepath = filedialog.askopenfilename(title='Select test file')
|
filepath = filedialog.askopenfilename(title='Select test file', initialdir="///tests")
|
||||||
if getExtension(filepath) == '.tst':
|
if getExtension(filepath) == '.tst':
|
||||||
gotfile = True
|
gotfile = True
|
||||||
|
elif getExtension(filepath) == None:
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
messagebox.showinfo("ERROR: unrecognized file", "We are sorry but files with the '%s' appendix are not supported, we support only '.tst' files." % (getExtension(filepath)))
|
messagebox.showinfo("ERROR: unrecognized file", "We are sorry but files with the '%s' appendix are not supported, we support only '.tst' files." % (getExtension(filepath)))
|
||||||
test = list(formatTest(filepath))
|
test = list(formatTest(filepath))
|
||||||
#newQuestion()
|
# newQuestion()
|
||||||
submitAnswer(0)
|
submitAnswer(0)
|
||||||
|
|
||||||
|
|
||||||
def makeMenu(root): # vytvori menu
|
def makeMenu(root): # vytvori menu
|
||||||
menu = Menu(root)
|
menu = Menu(root)
|
||||||
root.config(menu=menu)
|
root.config(menu=menu)
|
||||||
|
|
||||||
|
@ -120,19 +126,21 @@ def makeMenu(root): # vytvori menu
|
||||||
return menu
|
return menu
|
||||||
|
|
||||||
|
|
||||||
def makeRoot(): # vytvori hlavni okno
|
def makeRoot(): # vytvori hlavni okno
|
||||||
root = Tk()
|
root = Tk()
|
||||||
root.geometry('500x400')
|
root.geometry('500x400')
|
||||||
root.title('Test Me')
|
root.title('Test Me')
|
||||||
root.configure(bg="gray")
|
root.configure(bg="gray")
|
||||||
root.iconbitmap('programfiles/icon.ico')
|
root.iconbitmap('icon.ico')
|
||||||
return root
|
return root
|
||||||
|
|
||||||
|
|
||||||
|
multiprocessing.freeze_support()
|
||||||
|
|
||||||
root = makeRoot()
|
root = makeRoot()
|
||||||
|
|
||||||
filepath = 'programfiles/default.tst'
|
filepath = 'default.tst'
|
||||||
test = list(formatTest('programfiles/default.tst'))
|
test = list(formatTest('default.tst'))
|
||||||
questionPlace = 0
|
questionPlace = 0
|
||||||
score = 0.0
|
score = 0.0
|
||||||
|
|
||||||
|
@ -148,7 +156,7 @@ questionLabel = Label(root, textvariable=question, width=30)
|
||||||
spacingLabel = Label(bg='gray', padx=10)
|
spacingLabel = Label(bg='gray', padx=10)
|
||||||
answerEntry = Entry(root, width=30)
|
answerEntry = Entry(root, width=30)
|
||||||
answerButton = Button(root, text='submit', command=lambda: submitAnswer(0))
|
answerButton = Button(root, text='submit', command=lambda: submitAnswer(0))
|
||||||
timeMultiplierLabel = Label(root, text='Your time bonus is: %s' %timeMultiplier, bg='gray')
|
timeMultiplierLabel = Label(root, text='Your time bonus is: %s' % timeMultiplier, bg='gray')
|
||||||
|
|
||||||
anotherSpacingLabel.grid(row=0, column=0)
|
anotherSpacingLabel.grid(row=0, column=0)
|
||||||
currentScoreLabel.grid(row=0, column=1, columnspan=2, sticky=W)
|
currentScoreLabel.grid(row=0, column=1, columnspan=2, sticky=W)
|
||||||
|
@ -159,8 +167,8 @@ answerEntry.grid(row=1, column=4, sticky=E)
|
||||||
answerButton.grid(row=1, column=5, sticky=W)
|
answerButton.grid(row=1, column=5, sticky=W)
|
||||||
timeMultiplierLabel.grid(row=2, column=1, columnspan=5)
|
timeMultiplierLabel.grid(row=2, column=1, columnspan=5)
|
||||||
|
|
||||||
currentScore.set('Score: %s' %(score))
|
currentScore.set('Score: %s' % (score))
|
||||||
highScore.set('High score: %s' %(test[2]))
|
highScore.set('High score: %s' % (test[2]))
|
||||||
question.set('question will appear here')
|
question.set('question will appear here')
|
||||||
|
|
||||||
root.protocol("WM_DELETE_WINDOW", on_closing)
|
root.protocol("WM_DELETE_WINDOW", on_closing)
|
||||||
|
@ -170,13 +178,16 @@ menu = makeMenu(root)
|
||||||
|
|
||||||
running = True
|
running = True
|
||||||
|
|
||||||
while(running):
|
while (running):
|
||||||
try:
|
try:
|
||||||
if time.time() - timeAsked >=100:
|
if time.time() - timeAsked >= 100:
|
||||||
timeMultiplier = 1
|
timeMultiplier = 1
|
||||||
else:
|
else:
|
||||||
timeMultiplier = (1/(time.time()-timeAsked)*100)
|
timeMultiplier = (1 / (time.time() - timeAsked) * 100)
|
||||||
timeMultiplierLabel.configure(text='Your time bonus is: %s' %round(timeMultiplier, 2))
|
timeMultiplierLabel.configure(text='Your time bonus is: %s' % round(timeMultiplier, 2))
|
||||||
except:
|
except:
|
||||||
None
|
None
|
||||||
root.update()
|
try:
|
||||||
|
root.update()
|
||||||
|
except:
|
||||||
|
pass
|
BIN
vyzkousejme.exe.lnk
Normal file
BIN
vyzkousejme.exe.lnk
Normal file
Binary file not shown.
Loading…
Reference in a new issue