1
3

More than 3 years have passed since last update.

ぷよぷよプログラミング「上級コース」写経でどのくらいミスするのか

Posted at

"無料でぷよぷよを通してプログラミング学習できる「ぷよぷよプログラミング」が登場したので体験してみた"

これの上級コース 全コード写経をしました。
所要時間は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のメモ帳でやっていたらもっと間違えていると思います。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3