初心者ながら、Pythonでゲームを自作してみました。 ゲーム制作にあたって行った準備から、実装時にハマった注意点、出来上がったゲームのデザインまでを記録します。 Introduction 何かを作りたい なぜPythonを選んだのか Material Abstract ゲーム画面のスクリーンショット ソースコード R…
サーバーでどう計算/保存するかがわかれば作れちゃうことになります。入力→計算/保存→出力この流れをイメージし … 画面をどうつくるか 2. 【gymのサンプルコード Jupyter Notebook向け】ご承知のように現在人工知能開発は活発に行われており、実は Python×ゲーム もこれに関係。Pythonで書かれたゲームを機械にプレイさせてそれを機械学習、そしてゲームクリアの最適化が実験中。これが何の役に立つかというと、レースゲームからは自動運転技術への活用、パズルゲームでは配達の最適化などが検証。つまり単にゲームを楽しむというのではなく、実務としてPythonを使ったゲームが求められているんですね。そして最後にゲームライブラリを使って snake ゲームをプレイしてみます。こちらは curses というPythonの基礎学習には登場してこないライブラリを利用して snakeゲーム を実現。基本的にターミナル(コマンドプロンプト)からでないとプログラムを実行できませんでした。こちらは マリオカート64 にディープラーニングのフレームワーク「TensorFlow」を用いて運転の最適化を図るプログラム。このプログラムで初めて知ったのですが、 Nintendo64 のエミュレータ(mupen64plus)ってあるんですね、スゴイです。こちらのプログラムの実行方法は、 mupen64plus のインストールなどもありますので、 GitHub をご参考下さい。変数や関数、引数といった文法から入るより、ゲームで手を動かすことで「Pythonができるようになるとこんなことができるんだ」とイメージが湧きやすく、多くの方がモチベーションUPに。そして結果的にPythonスキルが身につくと、人工知能やデータ解析など仕事としてのスキルUPにも。こうした理由でPython学習初期に、ゲームに興味を持つ方が多いように思います。"CodeCampus"はオンラインプログラミングスクール No.1のCodeCampが運営するプログラミング未経験の方のための学習メディアですこちらはゲームを機械学習で楽しむためのライブラリ。ちょっとPython上級者向けの内容になりますが、Pythonで人工知能や機械学習スキルを習得したいと考えている方も多いと思いますのでご紹介。ライブラリ「gym」さえインストールできればサンプルは比較的簡単に動くと思います。「Pythonでゲーム」、簡単なものからグラフィックスを駆使した本格的なものまでピンキリです。仮に「ゲーム開発」を主に考えるならC++やCの方がいいと言われますが、ゲーム開発をするのかデータ分析をするのか人工知能を開発するのか定かでない場合は、Pythonがいいかもしれませんね。ゲームというと娯楽的、余剰的なイメージで「遊び」を連想しますが、Pythonゲームの場合は別格。老若男女、Python学習の取っ掛かりにゲームは非常に有効です。次に基本的なライブラリを使って同じような snakeゲームを作ってみます。当メディアを運営しているCodeCampではPythonデータサイエンスコースを現役エンジニアのマンツーマンレッスンという形で提供しています。このコースの特徴は実際にどのフレームワークもしくは Game Engine を選択するかは、開発するゲームがただのPython学習用なのか、それともAndroidやiOSとしてリリースするのか、Web公開するのかにもよって異なります。強いて言えば、みんなが使っている人気のソフト(PyGameなど)を使うと困った時に役立つ情報も多いと思いますし、誰かに教えてもらうことも可能でしょう。こうしたことから、これからPythonを学ぶにあたって、ゲーム開発も経験しておきたいですね。ゲーム用ライブラリ PyGame を使っても、結構長くなりますね。snake の動作制御は PyGame が担ってくれています。実際にPythonでゲーム開発を行う場合は、以下の3手法がメイン。さすがにこのレベルのもの作ろうと思うと大変ですが、Python初心者でも楽しめるゲーム・プログラムは多数公開されています。3つともシンプルな snake ゲームなのに、どれもコードが長くてビックリですよね。Pythonでゲーム開発する際は、基本的には 2番目と 3番目のようなオブジェクト指向が採用されます。これからPythonでゲームを作成&体験する前に、Pythonでどれだけのゲームができるか知っておきたいですよね。以下にPython製のゲームをいくつかリストアップ。パソコンで本稿閲覧中でお時間のある方は、一度リンク先のゲーム見て下さい。PCとインターネットがあれば、日本全国どこからでも受講できますしかし、これは 『Python × ゲーム』 のほんの一部分・・・はじめて上記のゲームを見た時「えっ、Pythonでここまでできるの?」と正直思いました。さすがに C++ に比べると同時処理能力が低くなると言われてはいますが、それでも見応え・やりごたえは十分で感動です。先ほどの snakeゲーム に比べると随分コードが長くなり、オブジェクト指向の構成となっています。snakeの動作制御は、グラフィカル・ライブラリの turtle を使用。こちらはターミナルに限らず IDE からでも実行可能なプログラムです。Webやアプリ開発でフレームワークやライブラリが使われるように、ゲーム開発においてもある程度パッケージ化されたソフトを使うと開発の手間が省略できたり、メンテナンス性が向上します。その結果、ライブラリやGame Engineもたくさん開発されて、それぞれ特色を持ったモノが公開中。以下に主だったソフトをご紹介しますね。 【Python】初学者が学習の為にトランプゲームを作成する(第1回) はじめに. データベースをSQLite以外のものに変える場合は公式サイトの説明を見てください。「migrate」 は、「makemigrations」で作られたデータベース変更ファイルを実際にデータベースに適用します。実行が終わったらデータベースを確認してください。削除したサンプルフィールドに対応するカラムが消えているはずです。開発環境ではSQLiteというデータベースを使います。SQLiteではデータは「*.sqlite3」という形式のファイルに保存されます。このデータはコマンドラインから参照・編集することができますがGUIでの管理ツールの方が便利です。様々なツールがありますので、自分の使いやすいツールを探してください。この画面で「createsuperuser」で作ったアカウントを入力するとログインできます。この画面はDjangoに最初から用意されているものです。デプロイ手順は以前のDjangoGirlsTurorialの内容を元にしています。さらにHerokuより提供されているDjango用のライブラリを利用して手順を簡略化しました。カスタマイズの土台となるテンプレートアプリをダウンロードします。Githubで公開しているので、そこからダウンロードします。この記事ではDjangoの無料プランを使います。プランの制限について確認してください。HTMLで帳票を作成し印刷機能を作る方法です。今のブラウザなら複雑なPDFモジュールを使わなくとも正確な印刷が可能です。app/templates/app/item_detail_contents.htmlこのアプリケーションは「Django」というフレームワークを利用して作られています。Django には初心者向けのすばらしいチュートリアルがあります。アプリを起動するコマンドを記述します。アプリケーションのディレクトリ直下に作成します。この方法で作るのは一種類のデータを扱う簡単なデータベースアプリケーションです。Excel・Access・FileMalerなどのデータベースアプリや、KintoneやSharePointなどのグループウェアのデータベース機能と同じことができます。Djangoはデータ定義を元に自動的に画面を作る機能が充実しており、またログイン機能やユーザー管理機能もデフォルトで用意されています。何度もマイグレーションを実行すると、migrationsディレクトリに大量のファイルが作成されてしまいます。マイグレーションファイルのまとめ方は色々ありますが、一番手っ取り早いのはマイグレーションファイルを全て削除して再作成することです。コマンドが完了したら、「heroku open」か以下のアドレスにブラウザでアクセスしてください。エラーになっていなければherokuのアプリケーションが表示されるはずです。アプリで扱うデータ定義を管理するファイルです。モデルの修正内容は、管理コマンド(マイグレーション)を使ってデータベースに反映させます。自由にフォームを作りたいときは「django-bootstrap4」を使ってください。こちらなら入力フィールド毎の細かいコントロールが容易です。という場合はここのパラメータの変更で可能です。自分で作ったモジュールを組み込みたい場合は、アプリケーションにモジュールを追加したうえでviews.pyの該当ビュー内で呼び出してください。モデルファイルはデータの項目定義を担当しています。名簿のアプリケーションであれば、名前や住所、年齢などを項目(フィールド)として定義する場所になります。Djangoで定義したモデルはそのままデータベースの1テーブルに対応します。このアプリケーションはCSSフレームワークにBootStrap4を利用しています。BootStrap4のクラスやウィジェットを使えば容易に見た目の変更ができます。マイグレーションの細かい説明については以下のページを参照してください。実行するPythonのバージョンを指定します。アプリケーションのディレクトリ直下に作成します。デフォルト(2018年9月時点で3.6.6)以外のバージョンを使うときに指定してください。指定できるバージョンについてはHeroku公式ページを参考にしてください。モデルの定義の修正は入力フォームに自動的に反映されますが表示画面には反映されません。自分で画面表示用のテンプレートを修正する必要があります。修正対象は2つのファイルです。Djangoの解説書も発売されています。ネットの情報とともにこちらも参考にしてください。「そもそもWebって何?」というところから説明が始まって、最初のアプリケーションを作成してインターネットで公開するところまで平易な言葉で導いてくれます。Djangoの仕組みについて疑問に思うことがあれば、まずはこちらをゆっくり読んでみてください。用途が管理のものはプログラムによって作成者・更新者の情報が自動的に入力されます。削除せずにそのまま残してください。バージョン管理システムを使って他の開発者と共同で開発している場合は、一括で消してしまうとトラブルになります。この方法は使わないでください。configディレクトリにある設定ファイルです。2か所修正します。自分でデータ定義をするときに、どんな項目を作るべきか悩むときがあります。そんなときはデータベースアプリメーカーのサンプルを参考にさせてもらいましょう。このような感じで、モデルファイルの修正とデータベースへの反映を行っていきます。モデルファイルのフィールドを修正したら、このHTMLの単位でコピーや削除を行ってください。そのあとで'item.sample_1'の部分を、自分で作成した項目(フィールド)の名前に書き換えてください。app/templates/app/item_filter.htmlこのなかで「PaaS」というタイプのクラウドサービスは、とりあえず公開するだけなら事前にサーバやネットワーク関係の専門知識がなくても大丈夫です。ここでは、PaaSの代表的なサービスの「Heroku」を使ってWebアプリをデプロイする方法を紹介します。事前に9つのフィールドを定義しています。このうち用途がサンプルのものは、動作の理解やコーディングのサンプルとして用意したものなので、最終的には全て削除してください。管理者ユーザーの登録が完了したら、コマンドラインに以下のコマンドを入力してアプリケーションを起動します。まず秘密鍵を新しく生成したものに変更します。秘密鍵はネット上のツールで出力することができます。とくに現在使っているものが無いなら「Visual Code Studio」をお勧めします。無料で使えて動作も軽く、Pythonのデバッグ実行が可能です。Webアプリをスマートフォンや他人のPCから使えるようにするには、インターネット上にサーバを用意し、Webアプリをアップロードして様々な設定を行う必要があります。この作業のことをデプロイといいます。アプリケーションではこれらの機能を呼び出しているだけで、自作のロジックはほとんど記述していません。Djangoは世界中で利用されているOSSですから、品質やセキュリティについて過度に心配しなくとも大丈夫です。Djangoでは「django-rest-Framework」というライブラリを使ってrest形式のWebAPIを作ることができます。WebAPIを作れば、「Chart.js」「Highcharts.js」といったライブラリを使って簡単にページ内にグラフを表示することができます。さらに、作ったアプリをクラウドサービスの「Heroku」にアップロードする手順も整理しました。アップロードすれば、友人や同僚のPC・スマートフォンから利用できます(無料枠で運用できます)。インターネットで使うもよし。社内・学内サーバで使うもよし。ローカルPCで起動してデータベースアプリとして使うもよし。ご自由に活用してください。コマンドラインのコンソールが起動したら、解凍したディレクトリに移動します。データの一覧リストです。検索条件を入力して絞り込みと並べ替えができます。CDNのBootstrap Themeなら、Bootstrapのcss読込のあとに1行追加するだけで全体のテーマを変更できます。ダウンロードはページの右上の緑のボタン「Clone or download」を選び「Download ZIP」を選びます。zipファイルをダウンロードしたら、開発用のディレクトリを適当な場所に作成してそこで解凍してください。ここからはコマンドラインで操作します。各OSのコマンドラインの使い方はDjango Girls Tutorialのこちらのページを見てください。Python用の設定があるテキストエディタを用意しましょう。現在使い慣れているものがあればそれでOKです。Google Chromeを用意してください。利用するだけならどんなブラウザでもかまいませんが、開発機能についてはGoogle Chromeが一番が充実しノウハウも見つけやすいです。Heroku環境で使用するライブラリを追加インストールし、requirements.txtを再作成します。アプリケーションのデータはテーブル「app_item」、ユーザー情報は[users_user]に入っています。どのように保存されているのか確認しましょう。データの更新時にメールやSlackで変更内容を通知するといった機能を作ることができます。コマンドラインで以下のコマンドを順に実行してGitのローカルリポジトリを作成します。サーバは主に専用業者からレンタルすることになりますが、レンタルの方式についても様々な種類があります。最初にアプリケーションにデプロイ用のファイルの追加・更新を行います。対象のファイルは3+1つ(任意)です。開発で使うPCにPython(Python3)をインストールします。インストールするバージョンは最新のものでOKです。各OSへのインストール方法は「Django Girls Tutorial」のページを参考にしてください。このように入力フォームの内容はモデルの定義をもとに表示されます。この状態のままでブラウザを起動して、以下のアドレスにアクセスしてみましょう。アプリケーションの開発環境を作ります。一般的なPythonの開発環境となります。不明な点があれば市販のPython入門書やネットの情報を参考にしてください。アプリケーションで登録したデータをデータベース上で確認しましょう。1-2でインストールしたデータベースクライアントを起動し、アプリケーションのディレクトリにあるファイル「db.sqlite3」を開きましょう。オープンソースのプログラム(Python/Django)を使っているのでライセンス料は無し。Webアプリなのでユーザーに特別なアプリをインストールしてもらったりクラウドサービスに入会してもらう必要もありません。ここで説明した以外の部分を変更したい、機能を追加したい場合の参考リンクです。なお、アプリ全体の仕組みについては以下の記事で解説しています。Djangoでは画像ファイル・添付ファイルを扱う専用フィールドが用意されています。このフィールドを使えば、画像データベースのようなアプリケーションも簡単に作成することができます。