Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

Python FlaskとBrythonで三目並べの人工知能AIを作る(後編)

ゲームスタート はじめに 前回の続きです。前編では2手目まで条件式で指示を与えていました。 3手目からはミニマックス法もどきで、コンピュータ側の全通りの手を調べて勝つ手があればそれを打ちます。次のプレイヤーのターンも全通り調べて、負ける手があ…

Python FlaskとBrythonで三目並べの人工知能AIを作る(前編)

ゲームスタート はじめに 今回は、Q学習やミニマックス法などの機械学習を使わずに一から人工知能を作っていきます。人間側で全て指示を与えるタイプの一昔前のAIで、自ら学習することはできません。 1手目と2手目は条件式で指示を与えます。 下の図でマ…

PythonでWEBアプリの三目並べを作る(完成品:FlaskとBrythonを利用)

はじめに 今回はソースコードを一から見直して作り直します。新たに追加したいのはこちらです。 クリックイベントの整理 ドロップアンドドラッグの実装 スマホのタップにも対応 こちらから遊べます。 http://startpython.pythonanywhere.com/game2/ クリック…

PythonでWEBアプリの三目並べを作る(改良品:FlaskとBrythonを利用)

はじめに 2戦目の初期駒と先攻後攻を変更しました。「もう一回遊ぶ」で持ち駒をランダムにしてましたが赤と青の差があったので、赤と青の持ち駒は同じにしました。先攻が圧倒的に有利なので負けた方を次戦の先攻にしました。 変更前のソースコード # ゲーム…

PythonでWEBアプリの三目並べを作る(試作品:FlaskとBrythonを利用)

はじめに ブラウザ上で動く三目並べを作っていきます。とりあえず試作品が完成したのでソースコードを載せていきます。細かい解説は省略します。 動作環境 Windows10Python 3.7.5Flask 1.1.1Brython 3.8.7 作業フォルダ/ ├ game1/ │ ├ templates/ │ │ └ game…

PythonでWEBアプリの三目並べを作る(準備編:FlaskとBrythonを利用)

はじめに 三目並べをブラウザ上で動かすにはどうしたらいいか考えました。本当はJavaScriptを使うのがいいのでしょうが、Brythonモジュールを使えばJavaScriptの代わりができるみたいです。 動作環境 Windows10Python 3.7.5Flask 1.1.1Brython 3.8.7 作業フ…

JavaScriptを使わずBrython/2月の振り返り

2月を振り返って ブログの更新はしばらく間が空いてしまいましたが、プログラミングの勉強は続けています。今やっているのは三目並べの変化系でテレビなどで紹介されていたアレです。 JavaScriptを使わずにPythonのモジュール「Brython」というのを使ってブ…

Python ミニマックス法で五目並べに挑戦します(AIプログラミング 第8回)

はじめに まず、5×5の盤面での「五目並べ」を作成してみます。前回の「三目並べ」を少し変更するだけで完成しました。それほど難しくはなかったです。 実行してみましたが時間がかかりすぎます。メモリ不足でフリーズしてしまいました。 3手先まで読むよ…

Pythonで人工知能搭載の三目並べが完成しました(AIプログラミング 第7回)

こちらのサイトを参考にさせていただきまいた。 qiita.com 最後に全てのソースコードを載せておきます。今回新しく学べたことを解説していきます。前回「考えるマッチ箱」でコピペなしでプログラム作成してみたのですが今回「こうすればよかったんだ」と新し…

Python 再帰関数をもう少し詳しく学ぶ(AIプログラミング 第6回)

はじめに 実践で「再帰関数」を使ってみようと思ったのですが、少し気になったことがあったのでもう少し詳しく学んでいきます。 応用(動きを追いかける) 前回の最後の例を少し変えました。 def func4(n): if n >= 3: return for i in range(2): #print("n=…

Python 再帰関数をわかりやすく解説(AIプログラミング 第5回)

はじめに 「ゲーム木」を扱う上で「再帰関数」はほぼ必須っぽかったので詳しく勉強していきます。 再帰関数とは 自分自身を呼び出す関数です。そもそも「再帰」という言葉で検索することは少ないと思います。「def関数内で自分自身の関数を使う」「def内でル…

ミニマックス法はわかったけどソースコードがわからない(AIプログラミング 第4回)

はじめに 三目並べに限らず、チェスや将棋などの対戦ゲームでは何手目か先まで読んで一番良い手を打ちます。もし最後までの全通りを読めれば最強です。 それをコンピュータでやってしまおうというのが今回の試みです。 木構造(ツリー構造)とは? 局面が枝…

学習したマッチ箱と勝負する(AIプログラミング 第3回)

考えるマッチ箱 前回、「マッチ箱」に三目並べを学習させました。2097個のマッチ箱と勝負して果たして勝てるかという実験です。 先手を入力できるように変更したソースコードがこちらです。 import random import csv # csvファイルを読み込む with open("ma…

Pythonで三目並べを学習させる(AIプログラミング 第2回)

はじめに 前回、「考えるマッチ箱」というコンピュータを使わずに三目並べを学習する方法を学びました。 start-python.hateblo.jp 今回はその学習手順をPythonでプログラミングしていきます。 ソースコード import random import csv # csvファイルを読み込…

簡単な人工知能を作ってみる(AIプログラミング 第1回)

AIとは? AI(エーアイ)とは人工知能のことです。Artificial Intelligence(人工的な知能)です。『「言語の理解や推論、問題解決などの知的行動を人間に代わってコンピューターに行わせる技術」、または、「計算機(コンピュータ)による知的な情報処理シ…

FlaskでWebアプリが完成しました!(全ソースコードはこちらです)

画像1 はじめに Webアプリが完成したので全ソースコードを載せることにしました。 こちらから実際に操作できますのでお試しください。 http://startpython.pythonanywhere.com/blog/ ユーザー名とパスワードを何も入れずにログインするとゲストでログインで…

FlaskでWebアプリを作成 続き3(ユーザーの編集・削除と検索の機能をアップデートまで)

はじめに 前回の続きで、今回は「別のユーザーの投稿は編集・削除不可」と「検索の機能」を追加していきます。 おまけ:絶対位置を中央寄せにする方法「left: 0; right: 0; を追加する」 別のユーザーの投稿は編集・削除不可: データベースにユーザー名を追…

FlaskでWebアプリを作成 続き2(編集と削除の機能をアップデートまで)

はじめに 前回の続きで、今回は編集画面を作って更新と削除の機能を追加していきます。 おまけ:CSSが反映されないときの対処法「リロードをshift+F5で行う」 目標: インデックス画面の「サンプル1」をユーザー名に変更 編集画面のレイアウトを作成 編集画…

FlaskでWebアプリを作成 続き1(インデックス画面と入力画面を機能させてアップデートまで)

はじめに インデックス(見出し)画面と入力画面のレイアウトが出来上がったので、以前にログイン画面を作成したWebサイトに追加・変更していきます。 以前の内容はこちら start-python.hateblo.jp 動作環境 Windows10Python 3.7.5Flask 1.1.1 作業フォルダ/…

HTML メニューボタンの作り方2(CSSでメニュー一覧を開く・閉じる、表示・非表示)

はじめに 今回はボタンを押すとメニュー一覧が表示されるメニューボタンを作成します。CSSだけで(Javascriptは使わずに)ヘッダー部分に配置します。 ソースコード base.html <link rel="stylesheet" type="text/css" href="/static/base.css"> <header> <h3 id="user_name">レイルーク@ふたり暮らし</h3> <div class="menu_box"> <label id="menu" for="toggle">メニュー</label> </div></header></link>

HTML メニューボタンの作り方1(CSS フッターの謎の隙間をなくす方法)

はじめに 今回はメニューボタンを作成します。フッター部分に、リストを一行で配置して外枠を付けてリンクできるようにします。前から少し気になってた「フッターの余白が消えない問題」も解決していきます。 ソースコード base.html <link rel="stylesheet" type="text/css" href="/static/base.css"> <footer> <ul> <li>ホーム</li> <li>検 索</li> <li><a href="/blog/create">新規作</a></li></ul></footer></link>…

HTML 共通テンプレートを作成する(HTMLで変数、if文、for文の使い方)

はじめに Pythonのjinja2モジュールの使います。(HTMLだけでは機能しません) PythonのFlaskでWebサイトを作る時に、複数のページで同じ内容(ヘッダーやフッターなど)を利用することが多いです。jinja2モジュールを使って共通テンプレートを作成しておく…

HTML 入力画面を作成(CSSでファイル選択した画像を表示する方法)

はじめに 今回は記事の入力画面を作成します。写真や画像をファイルから選択して張り付けます。ファイル選択の部分はJavascriptを使います。 動作環境 Windows10メモ帳Google Chrome 作業フォルダ/ ├ static/ │ ├ back_image.jpg │ ├ edit.css │ └ edit.js └…

CSSで文字の右に画像を表示する方法/画像を背景に指定する

はじめに 今回は画像を表示させる場所についてです。文章を左に、画像を右に表示してみたいと思います。CSSで「float」を使う方法です。少しハマったところもあったので詳しく解説していきます。 文字の右に画像を表示する方法 float: right; /*右に寄せる*/…

CSSでタイトルとメニュー画面を固定する(ヘッダーとフッターの使い方)

ヘッダーとフッターとは? 「<header>~</header>」「<footer>~</footer>」はHTML5から新たに追加された要素で、それまでは「<div id="header">~</div>」「<div id="footer">~</div>」と書くのが一般的だったらしいです。以前の書き方との違いはわかりませんでした。 <body> <p>ヘッダーの上</p> <header> <p>ここはヘッダーです<p> </header> <h1>表題</h1> <footer> <p>ここはフッターです<p> </footer> <p>フッターの</p></body>…

新規登録画面をサクッと作成してアップロード/Flask Blueprintを利用した時のCSSファイルとjsファイルの保存場所

はじめに 今回は新規登録画面を作っていきます。完成したら「Pythonanywhere」へアップロードします。ログイン画面とほとんど同じなのでCSSは使いまわします。 動作環境 Windows10メモ帳Google Chrome 作業フォルダ/ ├ static/ │ ├ image.jpg │ ├ newcomer.c…

作成したPC向けのサイトをスマホ対応にする方法(スマホでWebサイトを開くと小さく表示されてしまう問題)

結論 HTMLファイルの<head>~</head>の部分にこれを入れればオッケーです。 <meta name="viewport" content="width=device-width,initial-scale=1"> 通常はスマホで画面を表示する時に、自動で縮小して全体を表示するため小さく表示されてしまいます。幅の初期値960pxをスマホの幅(320~414px:iphon6~8は375px)に合わせて縮小するためです。</meta>…

HTML ツイッター風のログイン画面を作成する(CSSでレイアウトの調整)

はじめに 前回のログイン画面を新しく作り直します。今回からCSSを本格的に勉強してします。新しく出てきた命令を「【保存版】CSS 逆引き辞典(初心者用 随時更新予定)」に追加していきます。 Twitterのログイン画面を参考にゼロから作りました。 動作環境 …

【保存版】CSS 逆引き辞典(初心者用 随時更新予定)

使い方 「CSSの説明書(スタイルシートリファレンス)」「CSS命令一覧」「CSSプロパティ一覧」と、いろいろありますがやりたい事をどう命令するのかがわからないと調べられません。何度も同じことを調べて同じサイトに辿り着くことが多かったので、自分で見…

Flask-Loginを使わずにログイン画面を実装する(Blueprintsでパス指定やSECRET_KEYを設置する方法)

http://startpython.pythonanywhere.com/ こちらから実際に操作できますのでお試しください。(ユーザー名・パスワードは普段お使いのもの以外にしてください。セキュリティーは保証できません。) はじめに Webアプリに必要になることが多い「ログイン機能…