>백엔드 개발 >파이썬 튜토리얼 >Python으로 간단한 tic-tac-toe 게임 만들기

Python으로 간단한 tic-tac-toe 게임 만들기

巴扎黑
巴扎黑원래의
2017-04-05 14:53:581735검색

이 튜토리얼에서는 Python을 사용하여 tic-tac-toe 게임을 만드는 방법을 보여 드리겠습니다. 여기에는 함수, 목록, if 문, while 루프, for 루프, 오류 처리 등이 포함됩니다.

먼저 두 가지 함수를 만듭니다. 첫 번째 함수는 tic-tac-toe 게임의 배경 템플릿을 인쇄합니다:

def print_board():
    for i in range(0,3):
        for j in range(0,3):
            print map[2-i][j],
            if j != 2:
                print "|",
        print ""

여기서는 두 개의 for 루프를 사용하여 map이라는 목록 변수를 탐색합니다. 이 변수는 각 위치에 대한 정보를 보유하는 2차원 목록입니다.

(나중에 살펴보겠지만) 키패드의 숫자에 따라 위치를 비교할 것이므로 첫 번째 값을 (2-i)로 설정한 다음 "|"을 사용하여 위치를 나누려고 합니다. 인쇄되면 "|"을 인쇄하여 동일한 줄에 인쇄되도록 여기서 쉼표 print map[2-i][j],를 사용합니다.

이제 이 기능은 게임의 배경을 인쇄할 수 있습니다.

  |   |   
  |   |   
  |   |
X | X |   
O | X | O 
  | O | X
X | X | X 
X | X | X 
X | X | X

다음으로, 각 라운드 후에 게임이 끝났는지 확인하는 check_done() 함수를 만듭니다. 게임이 끝났다면 True를 반환하고 메시지를 인쇄합니다.

아아아아

먼저 가로 및 세로 방향에 동일하고 비어 있지 않은 세 개의 행이 있는지 확인합니다. 따라서 세 개의 연속된 빈 행이 적합한 것으로 간주되지 않습니다. 두 번째로 동일한 방식으로 대각선을 확인합니다.

이 8줄 중 하나라도 조건을 만족하면 게임이 종료되고 "Won!!!"이 출력되며 동시에 True 변수에 주의하세요. 지금 어느 쪽이 체스를 두고 있는지 확인하고 최종적으로 "Xwon!!" 또는 "Owon!!"이 나오는 메시지를 표시합니다. turn

다음으로, 이 함수는 빈 자리가 없으면 아무도 게임에서 이길 수 없다는 것을 의미한다고 판단하고(앞에서 판단한 대로), 동점을 출력하고

을 반환합니다. True

위 두 가지 상황 중 어느 것도 해당되지 않으면 게임은 아직 끝나지 않았으며

으로 돌아갑니다. False

이제 두 개의 함수가 있습니다. 실제 프로그램을 시작하고 먼저 세 개의 변수를 만듭니다.

def check_done():
    for i in range(0,3):
        if map[i][0] == map[i][1] == map[i][2] != " " \
        or map[0][i] == map[1][i] == map[2][i] != " ":
            print turn, "won!!!"
            return True

    if map[0][0] == map[1][1] == map[2][2] != " " \
    or map[0][2] == map[1][1] == map[2][0] != " ":
        print turn, "won!!!"
        return True

    if " " not in map[0] and " " not in map[1] and " " not in map[2]:
        print "Draw"
        return True

    return False

이 세 가지 변수가 무엇을 의미하는지 이미 설명했습니다. 잊으셨다면 아래를 살펴보세요.

  • 차례: 갈 사람


  • 지도: 게임의 배경 지도


  • done: 게임 끝났나요?

다음으로 다음과 같이 작성하세요:

turn = "X"
map = [[" "," "," "],
       [" "," "," "],
       [" "," "," "]]
done = False

내부에는 while 루프가 있습니다. done이 True가 될 때까지 누구의 차례인지 출력합니다.

그런 다음

이라는 변수를 만들어 플레이어가 이동했는지 확인합니다. 그렇지 않은 경우 다음 루프를 입력합니다. moved

다음으로 플레이어가 어떻게 가야 하는지 인쇄합니다:

while done != True:
    print_board()

    print turn, "'s turn"
    print

    moved = False
    while moved != True:

다음:

아아아아

우리는 플레이어가 숫자를 입력하고 그 숫자가 1에서 9 사이인지 확인하기를 원합니다. 동시에 오류 처리를 추가해야 합니다. 예를 들어 플레이어가 "Hello"를 입력하면 프로그램이 종료될 수 없습니다. .

이제 그가 이 조치를 취할 수 있는지 확인해야 합니다.

print "Please select position by typing in a number between 1 and 9, see below for which number that is which position..."
print "7|8|9"
print "4|5|6"
print "1|2|3"
print

하하, 눈을 크게 뜨고 먼저 X와 Y의 값을 얻은 다음 이를 사용하여 그가 배치하려는 위치가 비어 있는지 확인합니다. 다음으로 X와 Y가 어떻게 작동하는지 설명하겠습니다. >

    위치 1: Y = 1/3 = 0, X = 1%3 = 1; 위치 2: Y = 2/3 = 0, X = 2%3 = 🎜> 위치 3: Y = 3/3 = 1, X = 3%3 = 0
  • ……

  • 아래에서 수학을 하면 바로 결론을 내릴 수 있습니다. (젠장, Hexo의 기본 템플릿은 표를 표시하지 않습니다. mou에서 편집했을 때 아래 템플릿보다 훨씬 더 예뻤습니다!):

    YX x=0 x=1 x=2 y=2 7 8 9 y=1 4 5 6 y=0 1 2 3

      aha,这个位置和我们键入的是一样的!

    print "7|8|9"
    print "4|5|6"
    print "1|2|3"

      现在我们完成大部分工作了,但是还有几行代码:

    map[Y][X] = turn
    moved = True
    done = check_done()
    
    if done == False:
        if turn == "X":
            turn = "O"
        else:
            turn = "X"
    
    except:
        print "You need to add a numeric value"

      嗯,我们给moved变量复制为True,并检查是否结束了,木有结束的话变换角色换下一个人走。

      OK,差不多结束了,假如你只是想Ctrl+C 和 Ctrl+V的话,下面是全部的代码,希望你学到了点什么,( ^_^ )/~~拜拜。

    def print_board():
        for i in range(0,3):
            for j in range(0,3):
                print map[2-i][j],
                if j != 2:
                    print "|",
            print ""
    
    def check_done():
        for i in range(0,3):
            if map[i][0] == map[i][1] == map[i][2] != " " \
            or map[0][i] == map[1][i] == map[2][i] != " ":
                print turn, "won!!!"
                return True
    
        if map[0][0] == map[1][1] == map[2][2] != " " \
        or map[0][2] == map[1][1] == map[2][0] != " ":
            print turn, "won!!!"
            return True
    
        if " " not in map[0] and " " not in map[1] and " " not in map[2]:
            print "Draw"
            return True
    
        return False
    
    turn = "X"
    map = [[" "," "," "],
           [" "," "," "],
           [" "," "," "]]
    done = False
    
    while done != True:
        print_board()
    
        print turn, "'s turn"
        print
    
        moved = False
        while moved != True:
            print "Please select position by typing in a number between 1 and 9, see below for which number that is which position..."
            print "7|8|9"
            print "4|5|6"
            print "1|2|3"
            print
    
            try:
                pos = input("Select: ")
                if pos <=9 and pos >=1:
                    Y = pos/3
                    X = pos%3
                    if X != 0:
                        X -=1
                    else:
                         X = 2
                         Y -=1
    
                    if map[Y][X] == " ":
                        map[Y][X] = turn
                        moved = True
                        done = check_done()
    
                        if done == False:
                            if turn == "X":
                                turn = "O"
                            else:
                                turn = "X"
    
            except:
                print "You need to add a numeric value"

      原文出处: Vswe

위 내용은 Python으로 간단한 tic-tac-toe 게임 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.