Python で簡単な三目並べゲームを作成する

巴扎黑
リリース: 2017-04-05 14:53:58
オリジナル
1709 人が閲覧しました

このチュートリアルでは、Python を使用して三目並べゲームを作成する方法を説明します。これには、関数、リスト、if ステートメント、while ループ、for ループ、エラー処理などが含まれます。

まず、2 つの関数を作成します。最初の関数は、三目並べゲームの背景テンプレートを出力します:

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 ""
ログイン後にコピー

ここでは、2 つの for ループを使用して map という名前のリスト変数を走査します。この変数は、各場所の情報を保持する 2 次元のリストです。

(後で説明するように) キーパッドの数字に従って位置を比較するので、最初の値を (2-i),然后我们想用"|"来进行分割我们的位置,所以在每个位置打印完之后,我们给他打印一个"|",我们在这里print map[2-i][j], に設定し、それらが同じ行に印刷されるようにコンマを使用します。

さて、この関数はゲームの背景を印刷できます。次のようになります。 次に、各ラウンド後にゲームが終了したかどうかを確認する

関数を作成します。ゲームが終了した場合は True を返し、メッセージを出力します。

りーcheck_done() まず、水平方向と垂直方向に同じで空でない行が 3 つあるかどうかを確認します (したがって、連続する 3 つの空の行は対象とはみなされません)。

これら 8 行のいずれかが条件を満たす場合、ゲームは終了し、「勝ち!!!」が出力され、変数

が返され、どちらが現在チェスをプレイしているかを決定します。 「X 勝利!」または「O 勝利!」

True,同时注意turn 次に、この関数は、ポジションが空いていない場合、誰もゲームに勝つことができないことを意味すると判断し (前に判断した)、引き分けを出力して

を返します。

True 上記 2 つの状況が存在しない場合は、ゲームはまだ終了していないため、

に戻ります。

False OK、これで 2 つの関数ができました。実際のプログラムを開始しましょう。まず 3 つの変数を作成します:

  |   |   
  |   |   
  |   |
ログイン後にコピー

これら 3 つの変数の意味についてはすでに説明しましたので、忘れた方は以下をご覧ください:

    ターン:誰が行くべきか

  • マップ: ゲームの背景マップ

  • 完了: このゲームはもう終わりますか?
  • 次に、次のように書きます:
X | X |   
O | X | O 
  | O | X
ログイン後にコピー

内部には while ループがあり、done が True になるまで、誰の順番になるかを出力します。

次に、

という名前の変数を作成して、プレーヤーが移動したかどうかを確認し、移動していない場合は次のループに入ります。

moved 次に、プレーヤーがどのように進むべきかを出力します:

X | X | X 
X | X | X 
X | X | X
ログイン後にコピー

次へ:

りー

プレーヤーに数字を入力してもらい、それが 1 から 9 までの間であるかどうかを確認します。同時に、エラー処理を追加する必要があります。たとえば、プレーヤーが「こんにちは」と入力した場合、プログラムをそのまま終了することはできません。 。

ここで、彼がこのステップを実行できるかどうかを確認する必要があります:

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
ログイン後にコピー

笑、よく見てください。まず X と Y の値を取得し、それを使用して配置したい位置が空かどうかを確認します。次に、X と Y がどのように機能するかを説明します。

位置 1: Y = 1/3 = 0、X = 1%3 = 1、x -= 1 = 0


  • 位置 2: Y = 2/3 = 0、X = 2%3 = 2。 位置 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 6

5
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 で簡単な三目並べゲームを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート