{"id":1885,"date":"2019-06-10T13:41:38","date_gmt":"2019-06-10T13:41:38","guid":{"rendered":"http:\/\/wiki.thomasandsofia.com\/?p=1885"},"modified":"2019-06-10T13:55:36","modified_gmt":"2019-06-10T13:55:36","slug":"section-7-tic-tac-toe","status":"publish","type":"post","link":"https:\/\/wiki.thomasandsofia.com\/?p=1885","title":{"rendered":"Section 7: Tic Tac Toe"},"content":{"rendered":"<p><a href=\"http:\/\/wiki.thomasandsofia.com\/?p=1870\" rel=\"noopener\">&lt; Section 6<\/a><br \/>\n<a href=\"http:\/\/wiki.thomasandsofia.com\/?p=1893\">Section 8 &gt;<\/a><\/p>\n<p><a href=\"https:\/\/www.udemy.com\/complete-python-bootcamp\/learn\/lecture\/9442462#questions\" target=\"_blank\" rel=\"noopener\">https:\/\/www.udemy.com\/complete-python-bootcamp\/learn\/lecture\/9442462#questions<\/a><\/p>\n<pre>def check_win(mark, board):\r\n    winpattern = mark * 3\r\n    #print(board['7'] + board['8'] + board['9'])\r\n    map=[board['7'] + board['8'] + board['9'],\r\n         board['4'] + board['5'] + board['6'],\r\n         board['1'] + board['2'] + board['3'],\r\n         board['7'] + board['4'] + board['1'],\r\n         board['8'] + board['5'] + board['2'],\r\n         board['9'] + board['6'] + board['3'],\r\n         board['7'] + board['5'] + board['3'],\r\n         board['9'] + board['5'] + board['1']]\r\n    for pattern in map:\r\n        #print(pattern)\r\n        if pattern == winpattern:\r\n            return True\r\n    return False<\/pre>\n<pre>def show_board(board):\r\n    clear_output()\r\n    print(f\"{board['7']}|{board['8']}|{board['9']}\")\r\n    print('-+-+-')\r\n    print(f\"{board['4']}|{board['5']}|{board['6']}\")\r\n    print('-+-+-')\r\n    print(f\"{board['1']}|{board['2']}|{board['3']}\")<\/pre>\n<pre>def get_player_name(player_num,players):\r\n    accept_name=False\r\n    while not accept_name:\r\n        players[player_num] = input(f\"Player {player_num}, please enter your name :\")\r\n        if player_num=='1' or players[player_num]!=players['1']:\r\n            accept_name=True\r\n        else:\r\n            print(f\"Name '{players['1']}' has been taken.  Please select another name.\")\r\n    print(f\"Thank you, {players[player_num]}!\")\r\n    return players<\/pre>\n<pre>def get_play(player, board):\r\n    need_play=True\r\n    while need_play:\r\n        play=input(f\"{player['name']}, please enter your play (1 - 9)\")\r\n        if play in board and play==board[play]:\r\n            board[play]=player['mark']\r\n            need_play=False\r\n        else:\r\n            print(\"Play unavailable. Please select another position.\")\r\n    return board<\/pre>\n<pre>from IPython.display import clear_output\r\ndebug=True\r\nkeep_playing=True\r\nboard={}\r\nplayers=[]\r\nwinner=0\r\nif debug:\r\n    players=['',{'name':'Thomas','mark':'X'},\r\n             {'name':'Sofia','mark':'O'}]\r\nelse:\r\n    players[0]=0\r\n    players=get_player_name(1, players)\r\n    players=get_player_name(2,players)\r\nwhile keep_playing:\r\n    #reset board\r\n    for pos in range(1,10):\r\n        i=str(pos)\r\n        board[i]=i\r\n    player=0\r\n    move=0\r\n    while not winner and move&lt;9:\r\n        move+=1\r\n        #change player\r\n        player = 2 if player == 1 else 1\r\n        show_board(board)\r\n        board=get_play(players[player], board)\r\n        winner=check_win(players[player]['mark'],board)\r\n        #winner=False #True\r\n    show_board(board)\r\n    if winner:\r\n        print(f\"Congratulations, {players[player]['name']}!  You won!\")\r\n    else:\r\n        print(\"It was a draw!\")\r\n    play_again = input(\"Play again? (Y or N)\")\r\n    if play_again.lower()=='n'  or play_again.lower()=='no':\r\n        keep_playing=False\r\n    else:\r\n        winner=False\r\nprint(\"Good bye!\")<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&lt; Section 6 Section 8 &gt; https:\/\/www.udemy.com\/complete-python-bootcamp\/learn\/lecture\/9442462#questions def check_win(mark, board): winpattern = mark * 3 #print(board[&#8216;7&#8217;] + board[&#8216;8&#8217;] + board[&#8216;9&#8217;]) map=[board[&#8216;7&#8217;] + board[&#8216;8&#8217;] + board[&#8216;9&#8217;], board[&#8216;4&#8217;] + board[&#8216;5&#8217;] + board[&#8216;6&#8217;], board[&#8216;1&#8217;] + board[&#8216;2&#8217;] + board[&#8216;3&#8217;], board[&#8216;7&#8217;] + board[&#8216;4&#8217;] + board[&#8216;1&#8217;], board[&#8216;8&#8217;] + board[&#8216;5&#8217;] + board[&#8216;2&#8217;], board[&#8216;9&#8217;] + board[&#8216;6&#8217;] + board[&#8216;3&#8217;], board[&#8216;7&#8217;] + board[&#8216;5&#8217;] + board[&#8216;3&#8217;], ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/wiki.thomasandsofia.com\/?p=1885\" title=\"read more...\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44],"tags":[],"class_list":["post-1885","post","type-post","status-publish","format-standard","hentry","category-python-bootcamp-0-to-hero"],"_links":{"self":[{"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=\/wp\/v2\/posts\/1885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1885"}],"version-history":[{"count":7,"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=\/wp\/v2\/posts\/1885\/revisions"}],"predecessor-version":[{"id":1895,"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=\/wp\/v2\/posts\/1885\/revisions\/1895"}],"wp:attachment":[{"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiki.thomasandsofia.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}