A few weeks ago, I developed a terminal game that increases your typing speed. The game is all about typing, providing difficulty levels from easy to hard. I feel like this terminal game won't become as popular as my others, so I need tips on how I could improve this code to make it shorter, easier to run, and more entertaining.
Here is the code developed by me, PYWPM:
import time import random logo = ''' _____ __ _______ __ __ | __ \ \ \ / / __ \| \/ | | |__) | \ \ /\ / /| |__) | \ / | | ___/ | | \ \/ \/ / | ___/| |\/| | | | | |_| |\ /\ / | | | | | | |_| \__, | \/ \/ |_| |_| |_| __/ | |___/ ''' print(logo) print(" ") difficulty = input("Enter difficulty level (easy/hard): ") if difficulty == "easy": openPlz = open('easywordbank.txt','r') readPlz = openPlz.read() wordBank = readPlz.split() elif difficulty == "hard": openPlz = open('hardwordbank.txt','r') readPlz = openPlz.read() wordBank = readPlz.split() open2 = open('highscore.txt','r+') open2lst = open2.readlines() stat = True strike = 0 score = 0 def gameMain(wordBank): #Primary game loop. Returns a lst: #lst[0] = added points, lst[1] = added strikes lst = [0,0] start = time.time() wordQuiz = wordBank[random.randint(0,(len(wordBank)-1))] wordType = input('Enter the word, '+ wordQuiz + ' : ') if wordType == wordQuiz and time.time()-start < 3: lst[0] += 1 elif time.time()-start >= 3: print('STRIKE! Too Slow! ') lst[1] += 1 else: print('STRIKE! Watch your spelling. Be careful with strikes!') lst[1] += 1 return lst def highScore(name,score,highScoreLst,zFile): for line in highScoreLst: if score >= int(line[-3:-1]): highScoreLst.insert(highScoreLst.index(line),name+'-'+str(score)+'\n') highScoreLst.pop() zFile.seek(0,0) zFile.writelines(highScoreLst) break def rsg(): print('Ready?') time.sleep(1) print('Set?') time.sleep(1) print('Go!') time.sleep(1) name = input('Enter a username for this session: ') print("Type the word then press enter in under 3 seconds!") time.sleep(2) rsg() #MainState while stat == True: lst = gameMain(wordBank) score += lst[0] strike += lst[1] if strike == 3: time.sleep(.5) print('Game Over! The game has ended..!\n') time.sleep(2) print('Your Typing & Accuracy Score: ' + str(score)) highScore(name,score,open2lst,open2) time.sleep(2) break print('\nHighscores for PyWPM:') time.sleep(2) for line in open2lst: print(line, end='') time.sleep(1.5) time.sleep(5) openPlz.close() open2.close() - Yes, this game includes a word bank that randomizes words.
- The high scores aren't global.
How could I make this better?