OpenCV

ブロック崩しを半日で作る1

はじめに

Pythonの学習を始めてから2週間~1か月程度の方 (具体的には、配列やfor,if,関数がどんなものかを知っている方)のために、シンプルなブロック崩しの作り方を複数記事に分けて紹介します。今回は、実装に入る直前までの説明をしたいと思います。
なお、コードは作らずにただ遊びたいという方にはこちらから完成したプログラムをダウンロードすることができます。

おそらく、本やネットを頼りに勉強していると、まだまだ知らないといけないことが続き、
「一体、いつになればプログラミングでなにか実用的なものを作り出せるようになるんだろう」と
思い始めるころだと思います。(自分がそうでした。)

この記事では、上記に挙げたような初歩的な知識をもとに、ブロック崩しを作っていくことで、プログラミングでものをつくる楽しさを味わっていただければと思います。

ちなみに、この記事でのステップ数(コードの長さ)は120行になります。
100行を超えるとなると、ちょっと抵抗を感じるかもしれませんが、実際のところは文章を書く時と違って、
1行1行の密度は小さいので、想像しているよりは楽に理解できる&自分で書けるはずです。

とにかく、仕事ではないので、リラックスして楽しんでやっていきましょう!

設計を考える

さて、ブロック崩しを作るのに何が必要でしょうか。

パッと思いつくのは、画面の背景、ボール、自分が動かすバー、そしてどんどん消していくブロックでしょうか。
凝った内容にすると、敵キャラやアイテムなども欲しいところですが、まずは以上の4要素で大丈夫でしょう。

では次に、実装していく機能について考えましょう。
具体的には、ゲームの最初から最後までの一連の流れを想定すると、考えやすいです。

まず最初に必要なのは、ゲームの初期画面ですよね。背景を表示して、その中にボールやバー、ブロックを正しい場所に表示すること(1)です。
その次に必要なのは何でしょう。もちろん、ゲームを開始する機能になるのですが、これはボールが動き出す(2)タイミングからですよね。
ボールが動きだせば、プレイヤーとして、ボールが落ちそうな位置を予測して、バーを動かさないといけません(3)。
ボールとバーが接触すると、ボールはバー上を反射して逆方向に進行し(4)、壁ともぶつかりながら(5)、ブロックにぶつかることでドンドン消していきます(6)。
その間、途中でボールが画面一番下まで落ちてしまったらゲームオーバー(7)ですし、全部のブロックを消せば、ゲームクリア(8)となります。

こんなものでしょうか。もしかしたら、考え忘れていることや、実装するうえで新しい考え方が出てくるかもしれませんが、とりあえずはこれでいいでしょう。問題が生じればその時に考えればいいのです。
とにかく、これで実装していきましょう。

実装していく前に…

さて、実際に実装していく前に、少し準備しないといけないことがあります。それは上記の背景、ボール、バー、ブロックの画像です。

このURLに僕が今回使った画像を全部挙げています。背景に関しては、Googleの画像検索が便利です。サイズは何でもいいのですが、あとで500×650にリサイズするので、それを考えたうえで選んでいただければと思います。

設定は一例です。もしネットなどで公開する予定であれば、ライセンスには気を付けましょう

なお、ほか3つについては、PowerPointを使って作成しました。
とくにこだわりがなければ、僕のものを直接使っていただくと手間がかからず、いいと思います。

なお、今回実装していくにあたって、OpenCVというライブラリ(プログラミングする上での便利な機能を集めたもの)を使います。CVというのはComputer Visionの略で、その名の通り、画像処理に特化したライブラリになっています。
この記事の目的はあくまで、ブロック崩しを作ることなので、OpenCVについて詳しく説明しませんが、「Pythonで画像に関連したコードを書きたかったらOpenCVを使えば楽にできることもあるんだな」程度に理解していただければ問題ないです。

次回に続きます。

関連記事

  1. OpenCV

    ブロック崩しを半日で作る4

    今回がこのシリーズ最後の記事となります。(前回の記事はこちら)…

  2. OpenCV

    ブロック崩しを半日で作る3

    3回目の記事になりました。(前回の記事はこちら)今回は、ボールとバ…

  3. OpenCV

    ブロック崩しを半日で作る2

    ブロック崩しを半日で作る2です。まずはおさらいとして、前回考えた実装…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

カテゴリー

最近の記事

おすすめ記事

  1. Computer Vision

    研究に役立つ?リンク集
  2. Computer Vision

    英字論文執筆の際に使えそうな単語集
  3. その他

    Panasonic Singaporeでのインターンの思い出2
  4. OpenCV

    ブロック崩しを半日で作る4
  5. その他

    トビタテのインターンの見つけ方
PAGE TOP