全くのゼロから始めるボードゲームのプログラミングと機械学習 [6日目]
前回の振り返り
全くのゼロから始めるボードゲームのプログラミングと機械学習 [5日目] - Qiita
- ここまでのあらすじ
- 一旦参考書から脱却
- PythonのIDE(統合開発環境)PyCharmを導入
9ヶ月ぶりにプロジェクトを再開いたしました。果たしてどこまで到達できるやら…
PyCharmとGithubの連携
本格的にプログラムを書いて行くということでIDEはPyCharmを導入致しました。
あとはバージョン管理のためにGithubと連携させてみました。ソースをクラウド管理するとどの環境からでもアクセスできてほんと便利ですね。
操作は特に問題なく直感的に可能ですね。ただはじめはGitがメニューに見当たらず往生いたしました。VCSメニューから有効化するとともにGit自体をローカルにインストールしないと駄目みたいです。当たり前といえば当たり前か。。
とりあえず画面にタイルを表示してみる
ではでは、いざボードゲームの実装に取り掛かってみます。再現するゲームは「カルカソンヌ」と呼ばれるタイルと駒を使った名作です。タイルを表示しないことには始まらないというわけで、まずはスタートタイル1枚をウィンドウ内に表示してみます。
なんてことはないプログラムですがこれだけでもゲームっぽい感じがありちょっと感動します。ボードを管理しやすいようグリッドを引いており、それぞれ四角形の図形描画を行ってます。
(x,y) = (2,2) #タイル座標
start_tile = pygame.image.load("tile.png").convert_alpha() # タイル画像読み込み
rect_start_tile = start_tile.get_rect() # 画像領域取得
rect_start_tile.center = (100*x+50, 100*y+50) # 座標からタイル位置補正
screen.blit(start_tile, rect_start_tile) # 画像の描画
左上のグリッドを(0,0)座標としてボードの管理を行ってます。スタートタイルは(2,2)としてウィンドウ内の座標に補正して表示させています。特に難しいことはなし。タイルの回転などをどう管理していくかは今後の課題ですね。
タイルのクリック判定
続いて肝となるタイルのクリック判定も作ってみました。
if (event.type == pygame.MOUSEBUTTONDOWN) and (event.button == 1) : #クリックイベント取得
if rect_start_tile.collidepoint(event.pos): # タイルの領域をクリック
print("hit")
else:
print("out") # タイル外をクリック
タイルをクリックするとhitが表示され、タイル外だとoutが表示されます。実際のところゲームの中で配置されているタイルをクリックすることはないと思いますが、ゲームの操作として類似の処理は必要となるはずなので試してみた感じです。下記を参考にさせて頂きました。
Python - pygame 画像範囲のクリック|teratail
今後の予定
- ボードゲームをプログラミング
- Pythonの基礎勉強
- Pygameの基礎勉強
- ボードゲームの実装 👈
- ボードゲームのAI作成
- 機械学習によるAI強化
- Pythonの基礎勉強
- Pygameの基礎勉強
- ボードゲームの実装 👈
ゲームに必要となる要素をコツコツ実装していきます。
今回の振り返り
- やったこと
- Githubを初めて使ってみた
- ボードゲームの実装を始めた
- 画像を表示してみた
- わかったこと
- クラウドでのソース管理は便利
- GitをインストールしないとGithubへ連携できない
- クリックイベントの取得は結構簡単
- つぎにやること
- タイルクラスの実装
- タイルを回転させてみる
- Githubを初めて使ってみた
- ボードゲームの実装を始めた
- 画像を表示してみた
- クラウドでのソース管理は便利
- GitをインストールしないとGithubへ連携できない
- クリックイベントの取得は結構簡単
- タイルクラスの実装
- タイルを回転させてみる
Author And Source
この問題について(全くのゼロから始めるボードゲームのプログラミングと機械学習 [6日目]), 我々は、より多くの情報をここで見つけました https://qiita.com/Coshian23/items/7e67a7ec054a23860d1a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .