컴퓨터 바둑 제작 랜덤 플레이 실현

9549 단어 바둑.Python

컴퓨터 바둑


컴퓨터 바둑의 제작 노트.
・랜덤 사격의 실현 (원시 몬테카로 바둑이 아님)
· 지난번 주석을 참고하여 2차원 배열로 실시
지난번.

결과 이미지


컴퓨터 바둑 제작
때린 돌의 색깔 [지점]
결실
드로잉

소스 코드

# -*- coding:utf-8 -*-
import random

# データ
BOARD_SIZE = 9              # 碁盤の大きさ
WIDTH_SIZE = BOARD_SIZE + 2 # 盤外を含めた碁盤の横幅 11

# 盤上の種類
NONE,BLACK,WHITE,WALL = 0,1,2,3
STONE = ("・","🔴 ","⚪️ ")

# 碁盤描画
def draw(board):
    print " "," ".join("%2d"%x for x in range(1,BOARD_SIZE+1))
    for y in range(1,BOARD_SIZE+1):
        print "%2d"%y, " ".join(STONE[data] for data in board[y][1:-1])

#石を打つ
def move(board,z,color):
    board[z[0]][z[1]] = color

# 盤上の空の場所を配列で取得
def getNonePosition(board):
    array = []
    for y in range(1,BOARD_SIZE+1):
        for x in range(1,BOARD_SIZE+1):
            if board[y][x] == NONE:
                array.append([y,x])
    return array

def main():
    # 碁盤
    board = [[NONE]*WIDTH_SIZE for i in range(WIDTH_SIZE)]
    # 枠の作成
    for i in range(WIDTH_SIZE):
        board[0][i] = board[-1][i] = board[i][0] = board[i][-1] = WALL
    # 先手
    color = BLACK

    # ゲーム開始
    while(1):
        # 候補を探す
        preMove = getNonePosition(board)
        l = len(preMove)
        if l == 0:
            break
        z = preMove[random.randint(0,l-1)]  # ランダム打ち

        move(board,z,color)     # 打つ
        print STONE[color],z    # 描画
        draw(board)
        color = 3 - color       # 色を交代

if __name__ == '__main__':
    main()

github



마스터:1차원 정렬
2D 정렬

참고서


https://github.com/Tsunehiko511/python_Go_origin 컴퓨터 바둑―몬테카로법의 이론과 실천―

좋은 웹페이지 즐겨찾기