りょうのゲーム塾 -109ページ目

りょうのゲーム塾

再開、準備中。

チェックポイント
前回のサンプルはプログラミングに必要な命令を少しずつ解説しながら、プログラミングをステップアップしていきました。
今回のサンプルはプログラム設計を考えながら作成していきます。


■プログラム設計(デザイン)
今後プログラムの設計を行いながらの作成やアルゴリズムの説明に簡単な図を使います。
これはPADというものなのですが、少々自分には使いずらいのでアレンジしました。
これをAPAD(Arranged Process Analyais Diagram)と勝手に呼ばせていただきます。

次回のサンプルのメインルーチンをAPADで記述しました。

■APAD

┏┳━━━━━━━━┓
┃┃        ┃
┃┃メインルーチン ┃
┃┃        ┃
┣┻━━━━━━━━┛
┣━━━━━━━━━┓
┣━━━━━━━━┓┃
┃ ゲームの初期化┃┃
┣━━━━━━━━┛┃
┣━━━━━━━━━┛
┣━━━━━━━━━┓
┃         ┃
┃ ゲームループ  ┃
┣━━━━━━━━━┫
┗━━━━━━━━━┛


この図式の意味は次の通りです。

■APAD書式

┏┳━━━━━━━━┓
┃┃        ┃
┃┃  タグ名   ┃
┃┃        ┃
┗┻━━━━━━━━┛

エントリータグとは登録用の名前を記述する図です。
この図の中に識別用の名前を記述します。


■APAD書式

┏━━━━━━━━━┓
┣━━━━━━━━┓┃
┃  プロセス名 ┃┃
┣━━━━━━━━┛┃
┗━━━━━━━━━┛

ブロック図はいくつかのプロセスが集まったブロックであることを意味します。
プロセス名はそのブロックが何をするものか分かるような名前を記述します。


■APAD書式

┏━━━━━━━━━┓
┃         ┃
┃  プロセス名  ┃
┣━━━━━━━━━┫
┗━━━━━━━━━┛

無限ループのプロセスです。
この無限ループを使ったプロセスの名前を記述します。



ではAPADで書かれたメインルーチンについて解説します。

最初はエントリータグです。
当然今回はメインルーチンを記述しているのでタグ名はメインルーチンです。

つぎはブロックプロセスです。
実際にはいくつかのプロセスの集まりです。
前回のサンプルでも初期化部分は色々なタスクの初期化をしていましたね。

最後に無限ループプロセスです。
これもすでに前回のサンプルにあったように無限ループを使ったプロセスであり、このプロセスはゲームループの処理を行うものであることが示されています。

単純なことなのですがプログラムは段々複雑になっていきます。
その複雑になっていくプログラムの流れをできるだけ分かりやすく記述するためにこの様な図式を使うことが有用であると思います。

実際のプログラムはこのAPADと見比べながら理解してみてください。
チェックポイント
それでは新たに次のサンプルゲームを作りながら、
プチコン搭載のベーシックでプログラミングをやってみましょう。
今回からはただベーシックの使い方を学習するだけでなく、
効率の良いプログラミングやより効果的なアルゴリズムを考えて行きましょう。


■プログラムの構造

ゲームプログラムの構造は大まかに次のようなものだと考えられます。

■ゲームプログラムの構造

  ┏━━━━━━━┓
  ┃メインルーチン┃
 ┏┻━━━━━━━┻┓
 ┃ タスクルーチン ┃
┏┻━━━━━━━━━┻┓
┃  サブルーチン   ┃
┗━━━━━━━━━━━┛


この図はあくまでも概念図ですが今後作成するサンプルはこの様な構造になっています。
この構造の意味は多くのサブルーチンがありそのサブルーチンを使ってタスクルーチンを作成する。
そして作成されたタスクルーチンを使ってメインルーチンが構成されているといった意味合いになります。

全体をアプリケーションといい目的に合ったプログラムを作成するわけですが、今回はゲームが目的なのでゲームアプリケーションと呼びます。

サブルーチンの部分は実は簡略化してあります。
サブルーチンはサブルーチンを呼び出すことにより、効率のいいプログラム作成をすることができます。
それらの例題はそのうち解説しなければならないと思っています。
しかし、今はまだ時期早々というものでしょうね。
サブルーチンはタスクルーチンやメインルーチンの一部を分割するために使われることがあります。
前回のサンプルではそのような使い方をしました。
これはプログラミングを効果的に行うための方法です。

サブルーチンにはもう一つの特徴があります。
それはプログラムの中によく現れる処理をまとめたサブルーチンです。
このサブルーチンの場合には多くの場合別のプログラムでも使えるものが多く存在します。
このようなサブルーチンの集合体がライブラリです。

今後、ライブラについても考えて行きたいと思います。

タスクルーチンはすべてのアプリケーションで使われるものではありません。
大概はただのサブルーチンです。
しかし多くの場合、色々な意味をもったプログラムが集まることで全体の処理を行うことが多いのです。
ゲームの場合には特に多いのでこれらをタスクと呼びます。


■プログラミング手法

プログラムを組む前にどんなプログラムをにするか計画を立てながら作ってみましょう。
プログラムを作る手法には大きく次のような方法があります。

①ボトムアップ手法
ここでいうボトムとは上のプログラム構造の下の部分です。
すでにライブラリなどのサブルーチンが存在するときには、そのサブルーチンを組み合わせながらプログラムを組むことができます。
また、目的のプログラムを組むために新たに必要になるサブルーチンを先に作っておくといった方法がボトムアップといいます。
ようするにボトム(サブルーチン)からトップ(メインルーチン)へと進めていくということです。

②トップダウン手法
今度はメインルーチンを作成し大まかなプログラムの構造を作成し、より細かな部分を作成していく方法です。
ボトムアップには多くのサブルーチンが必要ですが、サブルーチンがない場合にはどちらかというとこちらの方法になるかと思います。
無駄なものは作らないことになりますが、作成していると有用なサブルーチンができてます。
またこれらをまとめライブラリにすればいいのです。

③フレームワーク手法
この方法はどちらかというとトップダウン手法に似ていると思います。
ただトップダウンと違うのは、メインルーチンやそのメインルーチンを構成するサブルーチンが予め存在していて、一部のサブウルーチンを作成または修正および追加を行いプログラムを作成します。
フレームワークとは仕事(ワーク)の枠組み(フレーム)という意味です。

一般的にはこのフレームワークの場合ライブラリとセットになっているので、ボトムアップの要素も持っています。
このフレームワークが目的のプログラムと合っている場合、最も効率よくプログラミングすることが可能です。
【はじめてのプチコン】でプログラムリストをできるだけ表示するためにブログデザインを変更しました。