puyo-puyo-programming

正誤情報

p.64 コード6.3 152行目, p.69 コード6.4 232行目

p.80 画面7.1

画面7.1-正

p.88 コード8.4 29行目

p.128 コード11.3 284-285行目

p.139 コード12.3 33行目

p.158 コード13.6 ソースコードの(行番号の)開始番号

p.185 コードA.5 1行目

参考

p.35 コード4.4 22行目等 config.jsの配列の最後のカンマについて

Q:配列の最後が「],」とカンマが付いている箇所について、「]」にしなくても大丈夫でしょうか?

A:配列の最後にカンマを付けるのは、JavaScript においては仕様上問題なく許されています。カンマを付けない形でもありませんが、たとえば配列の順番をコピペで移動した場合にカンマがついていない行をそのまま上に持って来ると構文エラーになります。本書の該当部分も、読者の皆さんが自由にconfig.jsを編集した場合にエラーになりにくいように、という実務的な理由により最後にカンマを付けています。

p.63 6行目「 static erasingStartFrame = 0;」について ※(このページ内の上記正誤情報の)p.128 コード11.3 284-285行目に関する参考

Q:たまたま、2ケ所「Stage.eraseStartFrame = startFrame; ・・・A」「const elapsedFrame = frame - Stage.eraseStartFrame; ・・・B」同じ間違いをしたから、たまたま動いたという説明がありますが、P.63 006行目で、 static erasingStartFrame = 0; としているのは無意味だということでしょうか?VisualStudioCodeでも、ぷよぷよプログラミングのクラウドIDEでも未定義でのエラー検出はされないようですが、Stage.eraseStartFrameという変数は定義なしで使えた、ということでしょうか。JavaScriptでは、Aと記述すれば定義したことになるのでしょうか。

A:無意味、というと語弊がありますが、プログラムの挙動に影響を与えないという観点ではその通りです。

なぜ挙動に影響を与えないにもかかわらず書いているかというと、「このクラスの中で erasingStartFrame というメンバ変数を使い、それが数値である」というのを読む人のために明示するためです。

また JavaScript では未定義のメンバ変数へのアクセスは問題なく出来るので、 eraseStartFrame という書き間違いをしてしまってもエラーにはなりません。

p.65 17行目およびp.67 20行目について

Q:remainingInfoList.push(…connectedInfoList);  という行に17番という番号が付いていてP.67の20行目でリストをコピーするとありますが、”…”は行列の中身を表すのでしょうか。

A:これは「スプレッド構文」と呼ばれる文法で、push の引数に配列の中身を展開する意味となります。

例えば、

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
arr1.push(arr2);

とすると arr1 の中身は [1, 2, 3, [4, 5, 6]] と配列の中に配列が入ってしまいます。しかし、

const arr3 = [1, 2, 3];
const arr4 = [4, 5, 6];
arr3.push(...arr4);

とすると、これは

arr3.push(4, 5, 6);

と同等であると評価され、結果的に arr3 の中身は [1, 2, 3, 4, 5, 6] となります。

書籍内のP.188 の左下に簡単な説明を用意しておりますので、そちらも是非ご覧ください。

p.79 4行目 「③全消し画像を非表示にします」について

Q:最初からZenkeshiimageを透明にしていると記載されており、なぜこのタイミングでhideZenkeshiをして非表示にしているのか

A:最初はZenkeshiImageを透明にしていますが、 一度全消しが発生し、ZenkeshiImageが表示されていると、その後透明になるタイミングがここ以外ではありません。ここで非表示にしているのは、過去に全消しが発生してZenkeshiImageが発生した場合に備え、ぷよが1つでも消えた場合に非表示にする意図を持った処理となっています。この行をコメントアウトして実行すると、一度全消しが発生すると二度と全消し画像が消えないことをご確認頂けると思います。

p.139, 154等 シングルクォートとダブルクォートについて

Q:ソースコードに’px’ “px” などが混在しているのが気になります

A:p.44, 185を参照いただければと思います。