-
Notifications
You must be signed in to change notification settings - Fork 1
/
MIT-PS5_Ghost.py
102 lines (82 loc) · 2.83 KB
/
MIT-PS5_Ghost.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#Problem Set 5 - Ghost
#Name: Arko Annuk
#Time: 4h
#TODO FOR TÜ TTL PROJECT: Add comments, shape the code better, consider adding a GUI
import string
import sys
wordFrag = []
wordlist = []
WORDLIST_FILENAME = "/home/gabriel/Documents/ps5/words.txt"
def load_words():
"""
Returns a list of valid words. Words are strings of lowercase letters.
Depending on the size of the word list, this function may
take a while to finish.
"""
print ("Loading word list from file...")
# inFile: file
inFile = open(WORDLIST_FILENAME, 'r')
# wordlist: list of strings
global wordlist
for line in inFile:
wordlist.append(line.strip().lower())
print (" "), len(wordlist), "words loaded."
return wordlist
def isCharValid(char):
if char in string.ascii_letters and len(char) == 1:
return True
else:
return False
def addCharFrag(char):
global wordFrag
wordFrag.append(char.lower())
return wordFrag
def isFragWord(wordFragList):
wordFragString = ''.join(wordFrag)
if wordFragString in wordlist and len(wordFragString) >= 4:
return True
else:
return False
def isFragViable(wordFragList):
#Can words be formed with the given CHARS in wordlist?
wordFragString = ''.join(wordFrag)
for word in wordlist:
if word.startswith(wordFragString):
return True
return False
def playerOneTurn():
char = input('Please enter an alphabetical character as a string ')
if isCharValid(char):
addCharFrag(char)
if isFragViable(wordFrag) == True and isFragWord(wordFrag) == False:
print ('Player One adds ', char, ', to the word fragment. The fragment is now: ', wordFrag)
else:
print ('Player One input creates either an invalid fragment or a word, it loses')
sys.exit()
else:
print ('Player One input is not valid, it loses')
sys.exit()
def playerTwoTurn():
char = input('Please enter an alphabetical character as a string ')
if isCharValid(char):
addCharFrag(char)
if isFragViable(wordFrag) == True and isFragWord(wordFrag) == False:
print ('Player Two adds ', char, ', to the word fragment. The fragment is now: ', wordFrag)
else:
print ('Player Two input creates either an invalid fragment or a word, it loses')
sys.exit()
else:
return ('Player Two input is not valid, it loses')
sys.exit()
def playGhost():
while True:
cmd = input('Enter 1 to start playerOneTurn, enter 2 to start playerTwoTurn ')
if cmd == '1':
playerOneTurn()
return playGhost()
elif cmd == '2':
playerTwoTurn()
return playGhost()
else:
print ('Invalid command.')
return playGhost()