![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
http://zapanet.info/blog/item/1125
このサイトでテトリスのプログラムを参考にしているのですが
途中にある、
d=K-37?1:-1
// d:x方向の差分
f+=Z[h+E[i]+d]==S;
// 移動先が空白かどうか
f?0:h+=d;
// すべて空白なので移動決定
の記述の意味がよく分かりません。
if文か何かを省略した書き方なのでしょうか?
具体的には、
d=K-37?1:-1
クエスチョンマークとコロンが何を示すのかよく分からない
f+=Z[h+E[i]+d]==S;
[]内は、配列と思われますが そのあとにそれに対して
==があるのがよく分からない。(if文の省略書き??)
f?0:h+=d;
おなじくクエスチョンとコロンの意味がよく分からない
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1の方の解答を先にお読みいただいた上で。
条件演算子はifとおきかえれますので、
d=K-37?1:-1
は
if(K!=37){d=1}else{d=-1}//数値のa!=bはa-bで代替可能
とかになります。
f?0:h+=d;
は
if(!f)h+=d;
とか。
d=・・・のように、値を選ぶのが初歩的な使い方ですが、
f?0:・・・のように、処理を切り替えるのにも使えます。
ショートコーディングにおいて、if,elseを使うのは避けられます(長いから)ので、
条件演算子を知らないうちにショートコーディングに手を出したのは若干失敗ですね。
>>[]内は、配列と思われますが
誤解。
a=[0,1,2]のように[]の前に変数名になりうるものが無ければ配列になりますが、
Z[ ]の形ですので、Zという配列の(h+E[i]+d)番目の値を参照しています。
この値が仮に0だとすると、f+=Z[0]==S;は、
(Z[0]==S)がZ[0]とSが等しいかによってtrue、false(数値では1、0に相当)のどちらかを返し、
変数fに加算しています。
Z[0]とSが異なる場合、f+=0で、加算されているけど変化無し、という感じです。
http://d.hatena.ne.jp/Ozy/20071101
最後のコメントで、6行のテトリス乗せてあります。
(innerHTML→innerText、<br>→\n で、もう2バイト縮むんですけどね。)
No.1
- 回答日時:
var x = (1 == 1) /* ==は値を返す演算子で、xはtrueになる */
if ( 1 == 1){
}
ってのは条件を書いているというよりも
if (true){
}
という状態に持ってっていると考える。
x = (y == 1) ? 1 : 0; /* 条件演算子(11.2 Conditional Operator) */
http://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6% …
代入演算子も値を返す演算子。= とか +=とか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 変換のプログラムを教えてください。 6 2023/07/01 09:57
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- 英語 提示した名言の"be to be able to do"の意味等について 4 2023/05/17 10:02
- 英語 第5文型SVOCとSVO to be Cの使い分けやニュアンスの違いについて 6 2023/01/03 08:57
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- その他(プログラミング・Web制作) ポケコンの文字移動が上手くできない… 3 2022/04/25 01:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
助けてください‼︎ javascriptで...
-
JavaScriptにおける[] とか :...
-
C#テキストボックスの文字を配...
-
for文を用いたArrayについて
-
JSONデータを50音順でソートしたい
-
matchの中の正規表現の記載につ...
-
ActiveXobjectが作成できない
-
functionから別のfunctionを実...
-
<a>タグのテキストを取得
-
この将棋プログラムに王様ゲッ...
-
関数でy=g(x)のgとは何の略です...
-
C#OpenCv V4にのエラーに関する...
-
document.onkeydownについて
-
ローカルにあるファイルを検索...
-
なぜmatchメソッドがエラーにな...
-
window.openでタイトル名の指定
-
javascriptでスロットゲームを...
-
javascriptでテーブルに追加し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
二次元配列を使って順位をだす...
-
javascriptで行を抽出したいです。
-
javascriptからphpに配列データ...
-
多次元配列から最大値を1行また...
-
Perlの配列をJavaScriptに渡せ...
-
JSONデータを50音順でソートしたい
-
どうすればresponseText結果を...
-
バナーのランダム表示(複数、...
-
JavaScriptでの動的な多次元配...
-
JavaScriptからPHPに配列を渡す...
-
javascript 省略した記述と思わ...
-
【Google Apps Script】コード...
-
javascriptを用いて作成された...
-
[JS] setAttributeで保存される...
-
javascriptで2つのArrayの...
-
配列について、その要素を並べ...
おすすめ情報