あなたの質問に対するあなたのコメントで言うように、通常のロックペーパーはさみを実装しようとしています。さんは割り当ててみましょう:
Rock: 0
Paper: 1
Scissors: 2
この答えは、あなたがモジュロ演算子(%
)について知っていると仮定し、そうでない場合は、それが何を意味するのか理解するために最初のことを調べてください。私はこの答えでそれを使用するので、はさみ(2)に1を加えると、3の代わりに0が得られます。なぜなら、ロックは0であり、3の項目がないからです。
私たちは、それが他の人の選択の直後に来たら勝つ選択をしたい、それが前に来れば失う、そして彼らが等しいならば結ぶ。例えば、2は1の直後に来るので、ハサミは紙を打つ。モジュロ演算子を使用して、1〜3の範囲内にあることを確認します(1と3を含む)。
プレイヤー1が勝利したかどうかを判断するには、プレイヤー2の移動よりも移動が1大きいかどうかを確認します。彼らが結びついているかどうかを知るために、彼らは同じ動きをしているかどうかを確認するそして、どちらも真実でなければ、プレーヤー2は勝たなければならない。ここではいくつかのテストでの実装例です:
>>> def winner(p1, p2):
... if (p1+1) % 3 == p2:
... return "Player 2 won because their move is one greater than player 1"
... elif p1 == p2:
... return "It's a draw because both players played the same move"
... else:
... return "Player 1 wins because we know that it's not a draw and that player 2 didn't win"
...
>>>
>>>
>>> rock = 0
>>> paper = 1
>>> scissors = 2
>>> winner(rock, paper)
'Player 2 won because their move is one greater than player 1'
>>> winner(paper, scissors)
'Player 2 won because their move is one greater than player 1'
>>> winner(scissors, rock)
'Player 2 won because their move is one greater than player 1'
>>> winner(rock, scissors)
"Player 1 wins because we know that it's not a draw and that player 2 didn't win"
>>> winner(paper, paper)
"It's a draw because both players played the same move"
さて、このゲームでは、数学的なルールは、アイテムが数1それ未満(モジュロ3)でアイテムを打つということでした。アイテムを追加する場合は、ゲームの仕組みを管理する数学的なルールを用意する必要があります。 1つの例(それほど楽しいことではない)は、アイテム1がアイテム1よりも小さい(したがって、アイテム1よりも喪失している)ルールを維持し、他のアイテムとはネクタイを持つこれはやや退屈なゲームになります。
その回答が役立ちますように!がんばろう!
正確には、あなたの質問は何ですか? –
質問@Robが編集しました。私はちょうど数学のビットを使用して2つのintに応じて勝者を取得したい – dv02
@DirtyDevあなたは勝者が選ばれた方法を説明していない。あなたは数字を持つあなた自身のアイテムを追加したいと言ったが、どの数字が何の数字を打つのか分からず、その情報がなければ、あなたがアルゴリズムを書くのを手伝うことは不可能である。アルゴリズムが何をすべきか。 –