Skip to content

Murder Mystery #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 94 additions & 126 deletions tictactoe.py
Original file line number Diff line number Diff line change
@@ -1,133 +1,101 @@
board = [' ' for x in range(10)]

def insertLetter(letter,pos):
board[pos] = letter

def spaceIsFree(pos):
return board[pos] == ' '

def printBoard(board):
print(' | | ')
print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
print(' | | ')
print('------------')
print(' | | ')
print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
print(' | | ')
print('------------')
print(' | | ')
print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
print(' | | ')

def isBoardFull(board):
if board.count(' ') > 1:
return False
else:
return True
import random

def welcome_scene():
print("Välkommen till Murder Mystery!") # Välkommen scen
print("Du står framför tre dörrar. Varje dörr har en uppgift.")
print("Du har bara tre liv. Förlorar du alla, är spelet över.")

def door_task_1():
print("Dörr 1: Hitta mördarens egenskaper!")
traits = ["brunett", "lång", "biffig"]

correct_answers = traits

attempts = 3
while attempts > 0:
answer = input("Vilket hår färg har mördaren?").lower()
if answer in correct_answers:
correct_answers.remove(answer)
print("Rätt svar! Fortsätt till nästa fråga.")

answer = input("Är han lång eller kort?").lower()
if answer in correct_answers:
correct_answers.remove(answer)
print("Rätt svar! Fortsätt till nästa fråga.")

answer = input("Är mördaren smal eller biffig?").lower()
if answer in correct_answers:
correct_answers.remove(answer)
print("Rätt svar! Du har klarat uppgifter till dörr 1")

def IsWinner(b,l):
return ((b[1] == l and b[2] == l and b[3] == l) or
(b[4] == l and b[5] == l and b[6] == l) or
(b[7] == l and b[8] == l and b[9] == l) or
(b[1] == l and b[4] == l and b[7] == l) or
(b[2] == l and b[5] == l and b[8] == l) or
(b[3] == l and b[6] == l and b[9] == l) or
(b[1] == l and b[5] == l and b[9] == l) or
(b[3] == l and b[5] == l and b[7] == l))

def playerMove():
run = True
while run:
move = input("please select a position to enter the X between 1 to 9\n")
try:
move = int(move)
if move > 0 and move < 10:
if spaceIsFree(move):
run = False
insertLetter('X' , move)
else:
print('Sorry, this space is occupied')
else:
print('please type a number between 1 and 9')

except:
print('Please type a number')

def computerMove():
possibleMoves = [x for x , letter in enumerate(board) if letter == ' ' and x != 0 ]
move = 0

for let in ['O' , 'X']:
for i in possibleMoves:
boardcopy = board[:]
boardcopy[i] = let
if IsWinner(boardcopy, let):
move = i
return move

cornersOpen = []
for i in possibleMoves:
if i in [1 , 3 , 7 , 9]:
cornersOpen.append(i)

if len(cornersOpen) > 0:
move = selectRandom(cornersOpen)
return move

if 5 in possibleMoves:
move = 5
return move

edgesOpen = []
for i in possibleMoves:
if i in [2,4,6,8]:
edgesOpen.append(i)

if len(edgesOpen) > 0:
move = selectRandom(edgesOpen)
return move

def selectRandom(li):
import random
ln = len(li)
r = random.randrange(0,ln)
return li[r]

def main():
print("Welcome to the game!")
printBoard(board)

while not(isBoardFull(board)):
if not(IsWinner(board , 'O')):
playerMove()
printBoard(board)
else:
print("sorry you loose!")
break

if not(IsWinner(board , 'X')):
move = computerMove()
if move == 0:
print(" ")
else:
insertLetter('O' , move)
print('computer placed an o on position' , move , ':')
printBoard(board)
else:
print("you win!")
break
print("Fel svar! Du förlorar ett liv.")
attempts -= 1

if attempts > 0:
print("Bra jobbat! Du har hittat mördaren. Du får ett vapen!")
return True
else:
print("Du förlorade alla dina liv. Spelet är över.")
return False

def door_task_2():
print("Dörr 2: Fälla! Du har triggat en fälla och förlorar ett liv.")
print("Du måste starta om spelet.")
return False


def door_task_3():
print("Dörr 3: Lösa tre uppgifter för att hitta mördaren.")
tasks = [
"Använde han pistol?",
"Åkte han bil?"
]

correct_answers = random.sample(tasks, 2)

attempts = 3
while attempts > 0:
print(f"Uppgift: {tasks[3 - attempts]}")
answer = input("Ditt svar: ").lower()
if answer in correct_answers:
correct_answers.remove(answer)
print("Rätt svar! Fortsätt till nästa uppgift.")
else:
print("Fel svar! Du förlorar ett liv.")
attempts -= 1

if attempts > 0:
print("Bra jobbat! Du har hittat mördaren. Du får ett vapen!")
return True
else:
print("Du förlorade alla dina liv. Spelet är över.")
return False

def capture_murderer():
print("Du har fångat mördaren och löst mysteriet. Grattis!")

if isBoardFull(board):
print("Tie game")
def main():
welcome_scene()

while True:
print("Du står framför tre dörrar.")
answer = input("Vilken dörr väljer du? (1, 2 eller 3) ")

if answer == "1":
door_1_result = door_task_1()
if door_1_result:
break
elif answer == "2":
door_2_result = door_task_2()
if door_2_result:
break
elif answer == "3":
door_3_result = door_task_3()
if door_3_result:
break
else:
print("Ogiltigt val. Försök igen.")

while True:
x = input("Do you want to play? Press y for yes or n for no (y/n)\n")
if x.lower() == 'y':
board = [' ' for x in range(10)]
print('--------------------')
main()
else:
break
if __name__ == "__main__":
main()