ゲームプロジェクトを解析する
のぶ亭『プログラミングの相談窓口』 … 様々なプログラミング問題を個別対応致します |
ゲームプロジェクトを解析する
人のプログラムが読めない、理解できない・・・なぜ?
まず、他人のプログラムを瞬時に理解する・・・こんな芸当は誰にもできません。そう、わからなくて当たり前なんです。ちょっとは安心しました?
もしかしたら、楽に理解できる方法があるの?って期待していませんか?
でも、そんな方法は存在しないし、安心もしていられません。
本来、理解するための行動は、当たり前のことなのです。様々な方法を用いて理解し、自分がわからないところを見つけ出し、それを重点的に克服する。これが、プログラマー真の姿ですから。
でもね、これがなかなか難しいんです。
「文法的にはわかるんですけど、
何がわからないかそれがよくわからないんです。」
っていう質問、結構多いんですよ。
話を聞くと、端から見たら「理解する努力をしていないんじゃないの?」と映っているのですが、当人は真面目に悩んでいるのです。
では、どこに問題があるのでしょうか?
- プログラムを実行して何ができるのかを把握していない
- どんな方法で実装しているのかを想像していない
- プログラムは動的であることを無視している…状態は変化している
- ロジックやアルゴリズムを図解(イメージ化)していない
- コードに適切なコメントを書かない(追記しない)
- コードに触れていない
- デバッガでコード追跡したり、デバッグ用コードを追記していない
- バグを見つける感覚でアプリをチェックしていない
こんなところでしょうか。
つまり、やるべきことをやらずに「わからない」と言っている状態の可能性が高いはずです。
他人のプログラムは、製作者の思考をプログラムコードで実装したものですから、製作者の思考が理解できないとコードの目的や意味を理解することが難しいという側面が少なからずあります。
プログラムを読む
プログラムコードを眺めいるだけでは、プログラムを理解することはできません。
プログラムの結果が想像できるかどうかです。
想像できなければ、できるようにするだけのことです。
実際のプロジェクトでやってみよう!
では、数独(SUDOKU)ゲームを題材にして、どうやってプログラムを理解していけばいいのか、順に調べていきましょう。数独は、http://sudoku.codeplex.com/ からプロジェクト一式をダウンロードすることができます。
数独のルールについては、http://moeprog.web.fc2.com/School/Sudoku/Sudoku.htmを参照
こんな気持ちを持って挑もう!
- 何ができるのかを、動かし、使いながら理解を深める
- ある処理について、どんな方法(ロジックやアルゴリズム)かを想像する
- コーディング書式を自分流にアレンジしながら調べていく
- コメントを追記していく・・・コメントの書き方は、MSDNに準拠する
- バグを探す
- 自分流のあるべき姿を想定する
- 結果や計算過程をアウトプットする
- 古いバージョンや英語版なら新規に作り直してみる
- 一般アプリとして客観的に評価する
- どこまで対応していて、できないことは何かを探る
これらを一気に行う必要はありません。何度も繰り返していくうちに見えてくることがあります。全てが理解できない・・・これはどうしようもないけど、わかるところ、わからないところを振り分けながら進めて行けばいいです。
プロジェクトを開いて、順に見ていきましょう。
1.GUIの場合、最初に起動されるFormのコードから調べていきます。
2.このプロジェクトでは、数独本体をUserControlとして実装しているので、FormとUserControlのインターフェイスを調べます。
コントロール間のインターフェイスはシンプルになっていてわかりやすいです。
英語よりも日本語の方が直感的に理解しやすいなら、日本語に置き換えます。
3.数独本体(UserControl)内部を調べます。
データの初期化(新規ゲーム)
9×9マスにルールに従った数値をどのように配置しているのだろうか?
興味津々。
まず、1行を乱数を使って作成
以降、以下の様に1行データをベースに3桁単位でコピーして縦、横、3×3が重複しないように並べるというアルゴリズムになっている。
<中略>
以下省略しますが、こんな感じでイメージ化(図解)していけばいいんです。なお、図解にルールはないので自由に表現すればいいのです。
セミナー申し込みについて
12,000円/月額(月単位契約) 詳細は「セミナー教材と学習スタイル」へ
申し込み方法
下記の問い合わせフォームより必要事項と内容欄に「60日でマスターする『基礎プログラム作り』を真剣に学ぶセミナー申し込み」をご記入の上お申し込みください。お支払いまではキャンセル可。