はじめに
初心者の友人向け
プログラムうまくうごかねぇ!
function Osero { showBoard(); putPiece(); turnPiece(); judgeEnd(); } function showBoard() { .... } function putPiece() { .... } ... ... ...
ゲームは正しく終われるのに、コマがうまく置けない、コマがひっくり返らない!
一気に作ろうとするから・・・
プログラムなんで動かないんだわーーーー!
って初心者陥りがち。
ちょっとまってくれと。
作れそうなものから作って、全体を同時に作ろうとするなと。
なぜ一気に作っちゃだめなのか
- どこにバグがあるのかわからなくなる
- どこまで完成しているのかわからなくなる
- 他の人が読めない
- 情報量多すぎて、頭パンクして、プログラミング嫌いー!ってなる
とかいろいろデメリットが・・・
ではどうするのか
いろいろやり方はありますが、ひとまず私のやり方を。
- 何を作るかを『アバウトに』決める(オセロ作る)
- どんな機能あるか細かく考える(盤面出す、コマ置く、裏返す)
- それらを『コメントだけ』書く
- さらに細かくする
- 一つ一つを完璧にしてから次に移る(大量の関数を同時に作り始めない)
1. 何を作るかを『アバウトに』決める(オセロ作る)
function Osero { }
これだけ。中身考えちゃだめ。
まずは、『これを作ります!』って、プログラミングがわからない人にもわかるレベルで、考える。
2. どんな機能あるか考える(盤面出す、コマ置く、裏返す)
- 盤面を表示する
- コマを置く
- コマをひっくり返す
- ゲームが終了か確認する ....
とか、作らなきゃいけない機能を考える。
この時も、プログラミングわからない人でも、どんな機能かな?ってわかるレベルで考える。
だから、データベースに保存する、とかまで考えちゃダメだよ。
入力をする・・・は微妙だけどセーフ。
3. それらを『コメントだけ』書く
ちなみに、紙に図を書くとかでも良い。
function Osero { // ボードを表示させる // コマを置く // コマをひっくり返す // ゲームが終了するかを判断する }
こんなレベル。
4. さらに細かくする
// ボードを表示させる // ・1行目として、8マス表示させる // ・8マスを8つ表示させる // ・真ん中に初期のコマを置く // コマを置く // ・ユーザーに置く場所を入力させる // ・コマがおける場所か確認する // ・コマを表示させる
こんな感じ。細かくしていくと、それぞれ作れるような気がしない?
5. 作る。一つ一つを完璧にしてから次に移る
大量の関数を同時に作り始めないこと。
『あ。この機能も作らなきゃ!こっちの方が簡単だし、先につーくろ!』
とかで全部、中途半端に作るは絶対にダメだからね。
『動かない!なんで動かないんだ!どこが悪いんだ!』とかなるので。
「Aの機能ないと、Bの機能作れないや。Aの作業を止めて、Bを作ろう」
はセーフ。ただし、Aの機能は、後で再開する時に『このコード、何書こうとしてるんだろう・・・』ってなったりするので、ちゃんとキリいいようにね。
大きなプログラムは、小さなプログラムの集まり
覚えてほしいのが、
『オセロは小さなプログラムの集まり』
『大きなプログラムは、小さなプログラムの集まり』
ということ。
歯車を一つ一つ組み合わせて、大きな車があるのです。
大きな車をいきなり作れるのがエンジニアじゃないです。
歯車を少しずつ作って、それを少しずつ組み立てていってください。
作業方法
じゃあ実際にどう作るの?
っていうのは、前回のgitのブランチと絡めて、今度一緒にやりましょう。