diff --git a/tictactoe.py b/tictactoe.py index aaaf9e5..b67bd25 100644 --- a/tictactoe.py +++ b/tictactoe.py @@ -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()