A.Iを勉強するのは、とても楽しいです。
難しい内容も多いですが、わくわく感もたくさんあります。
コンピュータがいろいろ考えて何かをする。
プログラムというのは計算のカタマリですから予定通りの動きしかしません。式の通り答えを出すだけですから、進歩も進化もないわけです。
ですが、実際、仕事としてA.I.や機械学習を学んでいくと、アルゴリズムや公式、様々な理論に合わせてプログラムの開発を覚えることになります。そういうのが好きな人も多いのですが、そもそも難しいものを難しい題材で学習しようとするので、もっと難しくなってしまうわけです。
そこで今回はゲームを作り、そこにA.I.を乗せる方法を学びながら、機械学習ってどういうもので何に使えるのかを現況していきたいと思います。
画面を作る都合上、Windowsを前提として書いていきますが、他のOSでも環境は作れます。
まず、見た目を整えよう
盤面づくりは機械学習とは関係ないのですが、まず見た目を作ってテンションを上げていきましょう!
こんな感じで作っていきます。

画面はtkinterで作成します。
tkinterは、Pythonを通常インストールしていれば、そのまま使用できます。
tkinterを使用するとPythonでGUIを構築することができます。
上記の画面を作成するプログラム全文は以下の通りです。
import argparse
import tkinter as tk
class Board(tk.Tk):
def __init__(self):
super(Board, self).__init__()
self.title("reversi")
self.geometry("600x700")
self.drow_board()
def drow_board(self):
self.board = tk.Canvas(self, bg="#673312", width=600, height=600)
self.board.place(x=0, y=0)
for y in range(20, 570,70):
for x in range(20, 570, 70):
pos = x, y, x+70, y+70
self.board.create_rectangle(*pos, fill="#206012")
def run(self):
self.mainloop()
if __name__ == "__main__":
app = Board()
app.run()
では少しずつ分解して見てみましょう。
まず初期化関数
def __init__(self):
で、ウィンドウのタイトルと画面の大きさを指定しています。
タイトルはreversiとしました。
self.title("reversi")
画面の大きさは以下のようにすることで横600、縦700となります。
self.geometry("600x700")
初期ウィンドウの位置を制御したい場合、self.geometry("600x700+100+50")のようにすると600x700のウィンドウを右から100、上から50の位置に表示するとなります。
次に盤面を描画する関数を作成します。
def drow_board(self):
背景色を指定して横600、縦600のキャンバスを描きます。キャンバスには、グラフィックやボタンなどを描くことができます。
self.board = tk.Canvas(self, bg="#673312", width=600, height=600)
以下のように指定した位置に設定したキャンバスを指定します。
self.board.place(x=0, y=0)
create_rectangleで長方形を描きます。fillで塗り潰しの色を指定しながらforの繰り返しで縦横に順番にコマを置くための枠を描いていきます。
self.board.create_rectangle(*pos, fill="#206012")
self.mainloop() を実行すると実際の描画が開始されてウィンドウが表示されます。
def run(self):
self.mainloop()
こういったゲーム類は見た目も重要です。
リバーシは文字で●や〇を並べても表現できますが、今一歩味気ないものになります。
今回は画面を作成しただけになりますが、次回はまず、A.I.なしでプログラムを使ってコンピュータと対戦するアルゴリズムを考えてみましょう。
Tetsuya Ikezawa
(7 months ago)