Discuss Scratch
- Discussion Forums
- » 日本語
- » 質問コーナー2
- inoking
-
Scratcher
1000+ posts
質問コーナー2
ここですね。それから数字を入力する場面があるのでそこに4と入力していただくとできると思います。何問かやってみてください。そのうち問題のことが出てくると思います。リストを変数に代入するときの仕様として
「全要素が長さ1の文字の場合だけ、スペースを挿入しない」ようになっているようです(該当ソースは多分コレ↓)
https://github.com/LLK/scratch-flash/blob/develop/src/primitives/ListPrims.as
private function primContents(b:Block):String { var list:ListWatcher = interp.targetObj().lookupOrCreateList(b.spec); if (!list) return ''; var allSingleLetters:Boolean = true; for each (var el:* in list.contents) { if (!((el is String) && (el.length == 1))) { allSingleLetters = false; break; } } return (list.contents.join(allSingleLetters ? '' : ' ')); // inoking: 全要素が長さ1の文字だったらスペースを挿入しない }
また
任意の小数点桁数で四捨五入したい場合は https://scratch.mit.edu/discuss/post/2825458/ のようにすればできます。
- _-BlackEyes-_
-
Scratcher
100+ posts
質問コーナー2
この前スクラッチプロジェクトをアンドロイドの方で動かすという感じのものを見かけたことがあるんですが、やり方を忘れてしまい、書いてあった場所もわからなくなったのでどなたか教えていただけないでしょうか?
- inoking
-
Scratcher
1000+ posts
質問コーナー2
この前スクラッチプロジェクトをアンドロイドの方で動かすという感じのものを見かけたことがあるんですが、やり方を忘れてしまい、書いてあった場所もわからなくなったのでどなたか教えていただけないでしょうか?Scratchでスマホのアプリを作ろう です。
- mi9g0n
-
Scratcher
1000+ posts
質問コーナー2
関連で教えてください。ここですね。それから数字を入力する場面があるのでそこに4と入力していただくとできると思います。何問かやってみてください。そのうち問題のことが出てくると思います。リストを変数に代入するときの仕様として
「全要素が長さ1の文字の場合だけ、スペースを挿入しない」ようになっているようです(該当ソースは多分コレ↓)
https://github.com/LLK/scratch-flash/blob/develop/src/primitives/ListPrims.asprivate function primContents(b:Block):String { var list:ListWatcher = interp.targetObj().lookupOrCreateList(b.spec); if (!list) return ''; var allSingleLetters:Boolean = true; for each (var el:* in list.contents) { if (!((el is String) && (el.length == 1))) { allSingleLetters = false; break; } } return (list.contents.join(allSingleLetters ? '' : ' ')); // inoking: 全要素が長さ1の文字だったらスペースを挿入しない }
また
任意の小数点桁数で四捨五入したい場合は https://scratch.mit.edu/discuss/post/2825458/ のようにすればできます。
kintyan256gou さんの質問の元となったプロジェクトでは、うまく数値としてリストからデータを抜くことができる場合もあります。
スキマが出来てしまう場合と、うまくいく場合の違いはスクラッチ的にどこで判断を分けているのでしょうか?
( v) 番目( [list v] )を [thing] で置き換えるを使った後のリストからのデータ抽出を行うとスキマが空いてしまうように思えるのですが、理屈的なことが分かりません。
それはそれで「こういうものなんだ」と仕様として納得しますが、やっぱり理屈が分かった方がうれしいのでどなたか解説いただけるとありがたいです。
- itnkmkw
-
Scratcher
1000+ posts
質問コーナー2
ええ。もう終わりました。Wikipedia によると(略)その件はもう解決しましたし、MODとハッキングについては質問の意図とは異なるのでもうやめにしたらどうですか。
- _-BlackEyes-_
-
Scratcher
100+ posts
質問コーナー2
ありがとうございますこの前スクラッチプロジェクトをアンドロイドの方で動かすという感じのものを見かけたことがあるんですが、やり方を忘れてしまい、書いてあった場所もわからなくなったのでどなたか教えていただけないでしょうか?Scratchでスマホのアプリを作ろう です。
- nyan526
-
Scratcher
100+ posts
質問コーナー2
お聞きしたいことがあるのですが。おそらく無理です…
スクラッチで右クリックの判定をすることはできるのでしょうか?教えてください。
- inoking
-
Scratcher
1000+ posts
質問コーナー2
嗚呼、文字と数値の違いですか?自己解決なのかな?お察しのとおり、文字か数値かの違いです。
以下はソースコードでの調査を実験で裏打ちしたものです。
以下のリスト要素はすべて文字列なのでスペースなしで結合されます。
(すべて v) 番目を [リスト v] から削除する数値演算の結果を追加すると数値として格納され、「全要素が長さ1の文字」という条件が崩れ、スペースありで結合されます。
(1) を [リスト v] に追加する
(2) を [リスト v] に追加する
(2) を [リスト v] に追加する
[変数 v] を (リスト) にする //123
(すべて v) 番目を [リスト v] から削除する文字変換演算の結果を追加すると文字として格納され、スペースなしで結合されます。
(1) を [リスト v] に追加する
(2) を [リスト v] に追加する
((3) * (1)) を [リスト v] に追加する
[変数 v] を (リスト) にする //1 2 3
(すべて v) 番目を [リスト v] から削除する
(1) を [リスト v] に追加する
(2) を [リスト v] に追加する
([] と ((3) * (1))) を [リスト v] に追加する
[変数 v] を (リスト) にする //123
kintyan256gou さんの ここ では条件により
( v) 番目( [list v] )を (() + (1)) で置き換えるが呼ばれることがあり、このとき要素が数値に置き換わるため、スペースありで結合されます。
もっとも
既に紹介したように任意の小数点桁数での四捨五入は1行で実現できます。
蛇足ですが、色んな意味で面白いサンプルだったと思います。
- inoking
-
Scratcher
1000+ posts
質問コーナー2
Scratchで取り上げることが禁止されている拡張機能などについての種類一覧や、それについてのページはありますか?取り上げることが禁止なので、存在してはいけません。
- mi9g0n
-
Scratcher
1000+ posts
質問コーナー2
大変よく分かりました。ありがとうございました。嗚呼、文字と数値の違いですか?自己解決なのかな?お察しのとおり、文字か数値かの違いです。
以下はソースコードでの調査を実験で裏打ちしたものです。
以下のリスト要素はすべて文字列なのでスペースなしで結合されます。(すべて v) 番目を [リスト v] から削除する数値演算の結果を追加すると数値として格納され、「全要素が長さ1の文字」という条件が崩れ、スペースありで結合されます。
(1) を [リスト v] に追加する
(2) を [リスト v] に追加する
(2) を [リスト v] に追加する
[変数 v] を (リスト) にする //123(すべて v) 番目を [リスト v] から削除する文字変換演算の結果を追加すると文字として格納され、スペースなしで結合されます。
(1) を [リスト v] に追加する
(2) を [リスト v] に追加する
((3) * (1)) を [リスト v] に追加する
[変数 v] を (リスト) にする //1 2 3(すべて v) 番目を [リスト v] から削除する
(1) を [リスト v] に追加する
(2) を [リスト v] に追加する
([] と ((3) * (1))) を [リスト v] に追加する
[変数 v] を (リスト) にする //123
kintyan256gou さんの ここ では条件により( v) 番目( [list v] )を (() + (1)) で置き換えるが呼ばれることがあり、このとき要素が数値に置き換わるため、スペースありで結合されます。
もっとも
既に紹介したように任意の小数点桁数での四捨五入は1行で実現できます。
蛇足ですが、色んな意味で面白いサンプルだったと思います。
同じように見えても、『1』が数としての1だったり、たまたま数の形をした文字列だったりと、リストはその性質をちゃんとこだわってどこかに覚えている訳なんですね。
また1つスクラッチの奥深さに触れることが出来て、とてもスッキリしました。
- masa2004
-
Scratcher
1000+ posts
質問コーナー2
Scratchで取り上げることが禁止されている拡張機能などについての種類一覧や、それについてのページはありますか?ブラウザ拡張機能はほぼ例外なく原則禁止です。
- mi9g0n
-
Scratcher
1000+ posts
質問コーナー2
1x座標って1ピクセルですか?やはりこういうときに頼れるのは Japanese Scratch-Wikiだなぁと思いました
また、1y座標も1ピクセルでしょうか?
- _-BlackEyes-_
-
Scratcher
100+ posts
質問コーナー2
ありがとうございます1x座標って1ピクセルですか?やはりこういうときに頼れるのは Japanese Scratch-Wikiだなぁと思いました
また、1y座標も1ピクセルでしょうか?
- hinasanski
-
Scratcher
4 posts
質問コーナー2
1つの背景だけのゲームを作っています。変数でスコアはできましたが、タイムをつくりたいので、質問しました。scratchをはじめて1か月の新人なので、分からないことがいっぱいです。教えてください。









