"無料でぷよぷよを通してプログラミング学習できる「ぷよぷよプログラミング」が登場したので体験してみた"
これの上級コース 全コード写経をしました。
所要時間は2時間41分43秒です。
javascriptは殆ど書いたことがありません。
1015行をとくに見直しをしない状態で、どのような写経ミスがあるか調べました。
比較はWindowsのTortoiseGitに付属しているTortoiseGitMergeで行いました。空白とセミコロンは無視しています。
もとのコードもセミコロンついてたりついてなかったりします。
結果は10件のミスがありました。
config.js (全33行)
コンフィグの値が違う
数値が違います。
// 私
Config.playerDownSpeed = 15; // プレイ中の下キー押下時の落下スピード
// オリジナル
Config.playerDownSpeed = 10; // プレイ中の下キー押下時の落下スピード
game.js (全121行)
スペルミス
スペルミスです。cal 'u' culateScore になっている。
// 私
Score.caluculateScore(combinationCount, eraseInfo.piece, eraseInfo.color);
// オリジナル
Score.calculateScore(combinationCount, eraseInfo.piece, eraseInfo.color);
コメント写し忘れ
コメントを写し忘れました。ファイルの最後のほうなので気のゆるみがあります。
// 私
requestAnimationFrame(loop);
// オリジナル
requestAnimationFrame(loop); // 1/60秒後にもう一度呼び出す
index.html (全46行)
!がない
"してみよう!"の"!"がありません。単純な写経ミス。
<!-- 私 -->
<title>ぷよぷよプログラミングを体験してみよう</title>
<!-- オリジナル -->
<title>ぷよぷよプログラミングを体験してみよう!</title>
player.js (全428行)
大文字小文字違い
p と P が違います。単純なミスです。
// 私
if(isDownpressed) {
// オリジナル
if(isDownPressed) {
xとyの違い
if(x と if(y が違います。これは動作が変わるので危険です。
// 私
if(x+1 >= Config.stageRows || Stage.board[y+1][x] || (y+dy+1 >= 0 && (y+dy+1 >= Config.stageRows || Stage.board[y+dy+1][x+dx]))){
// オリジナル
if(y + 1 >= Config.stageRows || Stage.board[y + 1][x] || (y + dy + 1 >= 0 && (y + dy + 1 >= Config.stageRows || Stage.board[y + dy + 1][x + dx]))) {
変数名まちがい
edがついていません。このコードの上のほうで定義している変数はisBlockedになっていました。コンパイルする言語ならコンパイルエラーになりそうです。
// 私
if(!isBlock){
// オリジナル
if(!isBlocked) {
謎の演算子
なぞの演算子が登場します。>= ではなく >~ になっています。
// 私
if(my < 0 || mx +cx < 0 || mx + cx >~ Config.stageCols || Stage.board[my][mx + cx]){
// オリジナル
if(my < 0 || mx + cx < 0 || mx + cx >= Config.stageCols || Stage.board[my][mx + cx]) {
スペルミス
スペルミスです。rotati 'o' ngになっています。
// 私
return 'rotationg';
// オリジナル
return 'rotating';
よけいなもの
ratio 'n' になっています。
// 私
const ration = Math.min(1, (frame - this.actionStartFrame) / Config.playerRotateFrame);
// オリジナル
const ratio = Math.min(1, (frame - this.actionStartFrame) / Config.playerRotateFrame);
puyoimage.js (全41行)
相違なし
score.js (全59行)
相違なし
stage.js (全294行)
相違なし
感想
クラウドIDEが構文エラーには赤線引いたり、インテリセンスも効くので思ったより間違いは少なかったです。
もしWindowsのメモ帳でやっていたらもっと間違えていると思います。