プログラマー向けゲーム-雄牛と雌牛

こんにちはHabraludi。 Pythonのプログラマ向けのエンジンとおおよそのゲームボットの作成方法を説明します。 プログラマー向けのゲームは、人ではなくプログラムによってプレイされるゲームです。





Bulls and Cowsという英語版のゲームBulls and Cowsのバージョンを作成します。 ここで2人間のオリジナルゲームのルールを読むことができます

ゲームのルール:

  1. エンジンは数字を偽造します。これはnであり、数字は繰り返せません。 エンジンはプレーヤープログラムに番号nを伝えます
  2. プレーヤープログラムは特定の番号を想定し、そのエンジンに通知します
  3. エンジンは、プレーヤープログラムの数のうち、考えられる位置に何桁あるか(Bulls)、および位置に入れないが何個あるか(牛)をプレーヤープログラムに通知します。
  4. 番号が推測されない場合は、手順2に戻ります




プレーヤープログラムは、stdin / outを介してエンジンと通信します。 仕様では、エンジンは引数として渡されたプレーヤープログラムを実行すると想定しています。



エンジン





最初に、機能部分を作成します。



Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  1. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  2. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  3. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  4. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  5. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  6. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  7. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  8. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  9. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  10. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  11. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  12. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  13. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  14. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  15. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  16. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  17. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  18. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  19. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  20. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  21. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  22. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  23. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  24. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  25. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  26. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result



  27. Copy Source | Copy HTML #!/usr/bin/python import random class Game (object): def __init__ (self, number= 6 ): if number > 10 : exit() self .number = number self .secret = self . make_secret ( self .number) self .main() def is_right_secret (self, secret): """check all digits are different""" dct = {} for digit in secret: try : if dct[digit]: return False except KeyError: dct[digit] = True return True def make_secret (self, number): """generate number-counted secret""" while True: result = "" for i in range (number): result += "%d" % random .randint( 0 , 9 ) if self . is_right_secret (result): return result







ここで、プレーヤープログラムが推測する数を考えます。 また、番号内のすべての番号が異なることを確認します。 次に、メインプログラムループであるGame.mainを起動します。



また、牛と牛を数える機能を追加する必要があります。



Copy Source | Copy HTML



  1. def count_bulls_cows (self、number、secret):
  2. 「」「牛と牛の数を数える/秘密にする」「」
  3. 牛、雄牛= 0、0
  4. dct = {}
  5. 範囲内の i( len (秘密)):
  6. 秘密[i] ==数[i]の場合:
  7. 雄牛+ = 1
  8. その他
  9. dct [secret [i]] = True
  10. 試してください
  11. if dct [number [i]]:
  12. 牛+ = 1
  13. KeyError を除く
  14. 合格する
  15. 雄牛、牛を返す




次に、プレーヤーや他のいくつかのユーザーとプログラムと通信するためのコードワードを示す定数を紹介します。



Copy Source | Copy HTML



  1. MESS_NUMBER_DIGITS = "number_digits"#開始 メッセージ
  2. MESS_GUESS = 「推測!」
  3. MESS_COWS = "cows:" #一致する数字が異なる位置にある場合、それらは "cows"
  4. MESS_BULLS = " bulls :" #一致する数字が正しい位置にある場合、それらは「bulls」です
  5. MESS_BULLS_COWS_SPLIT = "|" #牛と雄牛の間のスプリッターメッセージ
  6. MAX_TURN_NUMBER = 1000




次に、メイン()でゲームプレイについて説明します(デバッグメッセージを引用)



Copy Source | Copy HTML



  1. def main (自己):
  2. 自己 .playersのプレーヤーの場合:
  3. player.connect()
  4. player.send( "%s%d" %(MESS_NUMBER_DIGITS、 自己 .nu​​mber))
  5. 印刷「%s%d」 %(MESS_NUMBER_DIGITS、 自己 .nu​​mber))
  6. starttime = time時間 ()
  7. Trueの場合:
  8. player.turns> MAX_TURN_NUMBERの場合
  9. print ">>>>プレイヤー '%s'はタイムアウトになります" %player.name
  10. player.disconnect()
  11. 破る
  12. answer = player.recieve()
  13. print ">>>> Answer is%s" %answer
  14. lenself .secret)!= len (答え):
  15. self .stop_game( "間違った番号"
  16. 雄牛、雌牛= self .count_bulls_cows(答え、 self .secret)
  17. bulls == self .nu​​mberの場合
  18. player.time = time 時間 ()-開始時間
  19. player.send( "%s" %MESS_GUESS)
  20. player.disconnect()
  21. 「>>>> Player disonected」を 印刷
  22. 破る
  23. その他
  24. player.turns + = 1
  25. player.send( "%s%d%s%s%d" %(MESS_BULLS、bulls、\
  26. MESS_BULLS_COWS_SPLIT、MESS_COWS、牛))
  27. print">>>>%s%d%s%s%d" %(MESS_BULLS、ブル、\
  28. MESS_BULLS_COWS_SPLIT、MESS_COWS、牛))
  29. 勝者= self .players [ 0 ]
  30. 自己 .playersのプレーヤーの場合:
  31. player.turns <winner.turnsの場合
  32. 勝者=プレーヤー
  33. print ">>>>勝者名:%s"勝者名




ここではすべてが明確です。 各プレイヤーと交互にプレイします。 まず、隠し番号の桁数を送信します。 時間に注意してください。 推測していない場合は、プレイヤーの推測数を受け入れます(雄牛の数は数字の桁数に等しくありません)-雄牛/牛の数を送信し、動きの数を増やします。次のものに行きます。



最後に、勝者を選択します。



Playerクラスのプレーヤープログラムのプロセスとの接続方法を説明しましょう。



Copy Source | Copy HTML



  1. クラス Player (オブジェクト):
  2. def __init__ (self、name、progname):
  3. self .name = name
  4. self.turns = 0
  5. self .time = -1
  6. self .progname = progname
  7. def connect (self):
  8. self .__ proc = subprocess .Popen( self .progname、stdin = subprocess .PIPE、\
  9. stdout = サブプロセス .PIPE)
  10. def send (self、sendstring):
  11. self .__ proc.stdin.write(送信文字列+ '\ n'
  12. def recieve (self)
  13. self .__ proc.stdoutを返します。 readline ().strip( '\ n'
  14. def disconnect (自己)
  15. self .__ proc.terminate()




Game .__ init__を少し書き換えて、プレーヤーを初期化します。



Copy Source | Copy HTML



  1. def __init__(self、number、players_progs):
  2. 数値> 10の 場合
  3. 終了()
  4. self .nu​​mber = number
  5. self .secret = self .make_secret( self .nu​​mber)
  6. self .players = []
  7. players_progsのplayernameの場合:
  8. self .players.append(プレーヤー(playername、players_progs [playername]))
  9. 自己のメイン()




ダムボット





次に、結果をテストする必要があります。 テストには、最も単純なプレーヤープログラムが必要です。 api-実際のプレーヤープログラムが継承されるクラス

プロジェクトフォルダーにapiサブフォルダーを作成し、その中にmooapi.pyファイルを作成します。



Copy Source | Copy HTML



  1. #!/ usr / bin / python
  2. ランダムにインポート
  3. インポートシステム
  4. MESS_NUMBER_DIGITS = "number_digits"#開始 メッセージ
  5. MESS_GUESS = 「推測!」
  6. MESS_COWS = "cows:" #一致する数字が異なる位置にある場合、それらは "cows"
  7. MESS_BULLS = " bulls :" #一致する数字が正しい位置にある場合、それらは「bulls」です
  8. MESS_BULLS_COWS_SPLIT = "|" #牛と雄牛の間のスプリッターメッセージ
  9. クラス MooPlayer (オブジェクト):
  10. ##技術的な機能
  11. def send (self、st):
  12. sys .stdout.write( "%s \ n" %st)
  13. sys .stdout.flush()
  14. def recieve (self):
  15. sys .stdinを返します。 readline ().strip( "\ n"
  16. def number_split (self、st):
  17. num = st.split( ''
  18. num [ 0 ] == MESS_NUMBER_DIGITSの場合:
  19. return int (num [ 1 ])
  20. その他
  21. 終了()
  22. def answer_split (self、st):
  23. 試してください
  24. ブルスト、カウスト= st.split(MESS_BULLS_COWS_SPLIT)
  25. ValueError を除く
  26. 終了()
  27. 雄牛、牛= bullst.split( '' )、cowst.split( ''
  28. 雄牛[ 0 ] == MESS_BULLS および雌牛[ 0 ] == MESS_COWSの場合:
  29. 雄牛[ 1 ]、牛[ 1 ]
  30. その他
  31. 終了()
  32. def main (自己):
  33. self .nu​​mber = self number_splitself。recieve ())
  34. Trueの場合:
  35. 試してください
  36. self .oldguess = guess
  37. guess = self推測 (牛=牛、雄牛=雄牛、firstrun = False)
  38. NameError を除く
  39. guess = self推測 (firstrun = True)
  40. 自己送信推測
  41. answer = self 受け取る ()
  42. 回答== MESS_GUESSの場合
  43. 終了()
  44. その他
  45. 雄牛、牛= 自己answer_split (回答)
  46. ##いくつかの機能
  47. def is_right_secret (self、secret):
  48. 「」「すべての数字が異なることを確認」「」
  49. dct = {}
  50. 秘密の数字:
  51. 試してください
  52. dct [数字]の場合
  53. 偽を返す
  54. KeyError を除く
  55. dct [digit] = True
  56. 真を返す
  57. def generate_number (self、number):
  58. 「」「数えられた秘密を生成する」「」
  59. Trueの場合:
  60. 結果= ""
  61. 範囲内の iの場合(数値):
  62. result + = "%d"random .randint(0、9)
  63. 自己の 場合is_right_secret (結果):
  64. 結果を返す
  65. #############主な推測関数############
  66. def guess (self、firstrun、bulls = 0 、cows = 0 ):
  67. "" "これは主要なAPI関数です。Firstrunは、初回実行であることを意味します。 <br/> 雄牛/雌牛は、前回からの雄牛と雌牛の数です。 <br/> また、次のものがあります -桁数 <br/> self.oldguess-古い推測は <br/> "" "を 試してください
  68. 自己を 返すgenerate_numberself .nu​​mber)
  69. __name__ == "__main__"の場合
  70. mooplayer = MooPlayer ()
  71. mooplayer。 メイン ()




ここではすべてが単純です。コードの一部はエンジンモジュールからコピーされ、分析は行われず、乱数によって推測されます。

プレーヤープログラムを作成する場合は、mooapiモジュールをインポートし、MooPlayerからクラスを継承し、MooPlayer.guess()関数をオーバーライドする必要があります。



エンジンモジュールをインポートしなかった理由-明確にするために、他のプログラミング言語のapiを作成するユーザーに。

これで、プレーヤープログラムを実行し、それを使って雄牛と牛を再生できます。



>>number_digits 4

5032

>>bulls: 0|cows: 0

4123

>>bulls: 0|cows: 0

2890

>>bulls: 0|cows: 0

2691

>>guess!








(>>)はキーボード入力を示します



打ち上げ





エンジンモジュールの最後に追加します。



Copy Source | Copy HTML



  1. __name__ == "__main__"の場合
  2. game = Game( 2 、{ 'Player1'"api / mooapi.py"'Player2'"api / mooapi.py"'HabraMan'"api / mooapi.py" })




これにより、2桁の数字、同じapi / mooapi.pyプログラムを持つ3人のプレーヤーでゲームが起動します。 二桁の場合-これは、私たちの愚かなプログラムが推測できるようにするためです。



エンジンモジュールを実行します。

>>>> bulls: 0|cows: 1

>>>> Answer is 67

>>>> bulls:1 cows:0

>>>> bulls: 1|cows: 0

>>>> Answer is 87

>>>> bulls:0 cows:0

>>>> bulls: 0|cows: 0

>>>> Answer is 49

>>>> bulls:0 cows:0

>>>> bulls: 0|cows: 0

>>>> Answer is 54

>>>> bulls:0 cows:0

>>>> bulls: 0|cows: 0

>>>> Answer is 82

>>>> bulls:1 cows:0

>>>> bulls: 1|cows: 0

>>>> Answer is 21

>>>> bulls:0 cows:0

>>>> bulls: 0|cows: 0

>>>> Answer is 62

>>>> bulls:2 cows:0

>>>> Player disconected

>>>> Winner name: HabraMan









うまくいく!

次の投稿では、プログラムを便利にする方法を説明します-コマンドラインの引数を解析し、xmlのすべての良さを表示するように固定します。



プログラムの全文へのリンク



エンジンの喜びは、現在作成中のマルチユーザーサイトにねじ込むことができることです。



ボットにHon。Knut アルゴリズムを最初に実装することができます。



All Articles