• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:7行テトリスコードで分からない所があります)

7行テトリスコードのわからない点と解説

このQ&Aのポイント
  • 7行テトリスコードの中で理解できない箇所がいくつかあります。タイトルにしたわからない点について解説します。
  • 7行テトリスコードの中でわからない箇所を解説します。初心者でも理解しやすい解説を行います。
  • 7行テトリスコードの中にいくつか理解できない点がありますが、それぞれの意味について解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

7 d=K-37?1:-1  K-37がture だったら1、falseだったら-1を、dに代入する  ここでは条件(K-37)がNumber型なのではBoolean型に変更され評価される  数値が 0->false それ以外(0より下 or 0より上)->true 10 f+=Z[h+E[i]+d]==S;  Z[h+E[i]+d] == S の結果を fに加えたものが fに代入される  結果はBoolean(true or false)になるが、  += によりString型の連結かNumber型の加算が行われ代入される  fの初期値がNumber型 (f=0) なのでここではおそらくNumber型による加算 true->1 false->0 17 v=Math.round(p/12); // ブロックの各位置 18 w=p-v*12; // 回転先の y 座標 19 C[i]=w*12-v; // 回転先の座標計算  全体の関係がちょっとよくわからないので不明 24 t*!f?E=B[t]=C:0; // すべて空白なので回転決定  t*fの否定がtrueならば、B[t]にCが代入され、更にEにも代入される  それ以外はとりあえず0を宣言  単純にCがEとB[t]に代入されると理解すれば良し  0宣言自体に意味はなく、構文として成り立たせるためだけに存在 40 for(j=11;--j&&Z[i*12+j]==S;);  3つ目の;の後ろは、forで一連の動作をループ中、一連の動作を行う毎の最後に何をするか  ここでは何もしないということ、  最後の;は、forの条件内で既にループさせたい動作が満たされていると思われるので(--jの部分)、  やることがないからforの終止として付けている  条件に使われるNumber型の評価は 7 と一緒 43 for(j=++i*12;j>2*12;)Z[j]=Z[j---12]  j---12は"j--"と"-12"で分ける  式だけの結果は j-12、式を終えるとj自体は j-1 になる 51 Z[5]!=S?setTimeout(Y,99):0; // 入り口にブロックがあったら終了  配列Z添字5がSじゃなければsetTimeoutによる時間軸処理を行うよう設定  そうでなければ0を宣言、0宣言に意味はなし 59 for(K=t=P=i=0;i<240;){  ;の後がないのは40と同じ 61 Z[240+i]=Z[i]=++i%12<2||i>228?S="□":" "; // 床と壁の設定、番兵にもなる  ++i%12が2未満または、i>228がtrueなら"□"、falseなら" "を、Z[240+i]とZ[i]に代入する  trueならば Sにも"□"が代入される 理解を深める為に、全体を通して覚えたほうがよいこと ・三項演算 A ? B : C ・forの使い方とその行われ方 ・代入演算子(=)及び複合代入演算子(+= -=等)の動作と、  比較演算子{関係演算子(== !=等)}の動作の違い どっか間違ってるかもしれませんが、 時間をかけて細かくデバッグのような形で確認しないと これ以上はちょっとわからなそうなので以上です

e271828
質問者

お礼

どうもありがとうございました!すごいです・・・ だらだらと質問してすみませんでした。 とても分かりやすかったです、嬉しいです! アドバイスを参考にじっくり理解してみようと思います