最中限プログラムのサンプル
これは古いversion
# -*- coding: utf-8 -*- """ 最中限サーバに接続してプレイするクライアントのサンプル 単純に接続してランダムにプレイをして終了するだけ """ from urllib import urlopen, urlencode from random import shuffle import logging logging.basicConfig(level=logging.DEBUG, format="%(message)s") API_ROOT = "http://nishiotools.appspot.com/saichugen/api/text/" # 以下2行は自分で作ったActive Playerのものを入れること API_KEY = "apikey_bacbada52bef74422ae2a4a2016b28fc" PLAYER_ID = "player_50300b770bb5030b2031af2a503f90f4" def do_GET(api, params=None): if params == None: params = {} logging.debug("GET %s %s", api, params) params["api_key"] = API_KEY url = API_ROOT + api + "?" + urlencode(params) return urlopen(url).read() def do_POST(api, params): logging.debug("POST %s %s", api, params) params["api_key"] = API_KEY url = API_ROOT + api return urlopen(url, urlencode(params)).read() def my_ai_random(hand, played): "盤面状況に関係なく自分の手札からランダムに出すAI" from random import choice logging.debug("hand: %s", hand) assert hand != [""] return choice(hand) passive_players = do_GET("passive_players/").split() # opp := opponent(s). Take 2 opp randomly. shuffle(passive_players) opp_player1, opp_player2 = passive_players[:2] game_id = do_GET("start_game/") logging.debug("game_id: %s", game_id) seat_id = do_GET("join/%(game_id)s/%(PLAYER_ID)s/" % globals()) logging.debug("seat_id: %s", seat_id) opp_seat_id1 = do_GET("add_player/%(game_id)s/%(opp_player1)s/" % globals()) logging.debug("opp 1: %s", opp_seat_id1) opp_seat_id2 = do_GET("add_player/%(game_id)s/%(opp_player2)s/" % globals()) logging.debug("opp 2: %s", opp_seat_id2) # 1手分のプレイをする def play_a_turn(): # 盤面状況を取得する seat = do_GET("seat/%(seat_id)s/" % globals(), {}) if seat.count("\n") > 2: raise RuntimeError("invalid result") state, hand, played = seat.split("\n") assert state == "TO_PLAY" hand = hand.split(",") played = [segment.split(",") for segment in played.split(".")] logging.debug("hand: %s", hand) logging.debug("played: %s", played) # 思考する play = my_ai_random(hand, played) # カードをプレイする do_POST("play/%(seat_id)s/" % globals(), {"play": play}) for i in range(15): play_a_turn() logging.debug("result: http://nishiotools.appspot.com/saichugen/game/%s/",game_id)