Discuss Scratch

yukku
Scratcher
1000+ posts

クラウドリスト 意見交換所

「プロジェクトを開いている人全員がサーバー」という意味で、全員データを持っています。
それで、新しくプロジェクトを開いたとき、最初にプロジェクトに入った人がいまのサーバーの状況を教えるのですが、「そのとき急に一番初めの人が失踪したときどうするか」というものです。
yuukun0420
Scratcher
11 posts

クラウドリスト 意見交換所

クラウド変数は何文字入るのですか?

Last edited by yuukun0420 (Dec. 3, 2021 12:11:07)

yuzupon1133-sub
Scratcher
1000+ posts

クラウドリスト 意見交換所

1つの変数につき256文字です。
qurlay
Scratcher
100+ posts

クラウドリスト 意見交換所

#43に捕捉:
クラウド変数は最大10個できますよ。つまり、
10*256=2560
なので、最大2560文字入れることができます
yamaguchi03
Scratcher
32 posts

クラウドリスト 意見交換所

New scratcher or scratcher の判定は
もし <(ユーザー名) = []> なら 
[あなたはnew scratcher なのでゲームを強制終了します。] と言う


でなければ
以下 コード
end
でできますよ 被ってたらすいません
hirayuu1414
Scratcher
500+ posts

クラウドリスト 意見交換所

#46#45
それでは、サインインしているかしていないかの判定しかできません。
かぶっていると思いますが、正しくは↓
@Greenflag がクリックされたとき
もし <(ユーザー名) = [製作者の名前]> なら
[☁︎ スクラッチャー判定 v] を [1] にする
end
もし <(☁ スクラッチャー判定) = [1]> なら
以下動作 ::#909090
でなければ
[あなたはニュースクラッチャーか、もしくはサインインしていません] と (2) 秒言う
[すべて v] を止める
end
にして、☁︎スクラッチャー判定を0にして保存します。
説明むずい

Last edited by hirayuu1414 (Dec. 18, 2021 00:14:31)

mi9g0n
Scratcher
1000+ posts

クラウドリスト 意見交換所

#46
#46の冒頭には
#46
と書いてありますが、今見ると#45と記すほうが書き手であるhirayuu1414 さんの意図に沿っているように感じましたがいかがでしょうか。
 それはそれとして、もしもユーザー名が『制作者の名前』以外のユーザーが利用した場合、そのユーザーがScratcher かNew Scratcher かにかかわらず、結果はFalse 側の実行一択ということにはなりませんか?
hirayuu1414
Scratcher
500+ posts

クラウドリスト 意見交換所

#47
前者は普通にミスりました。
後者は、そうはなりません。
変数はクラウドなので、一回製作者がプログラムを作動させたら、
Scratcherなら、製作者が入れた変数1が反映され、
new scratcherなら、保存された時の変数0が反映されるので。
qurlay
Scratcher
100+ posts

クラウドリスト 意見交換所

#48に追記:
ですが、そのプログラムだと原理的にはあっているのですが、初回時にはNewScratcherと反映されることもあるようです。inokingさんが作ったScratcher かどうかの判定もプログラムは同じですが他の人も初回時にNew Scratcherと反映されることもあるようです。
yamaguchi03
Scratcher
32 posts

クラウドリスト 意見交換所

hirayuu1414 wrote:

#46#45
それでは、サインインしているかしていないかの判定しかできません。
かぶっていると思いますが、正しくは↓
@Greenflag がクリックされたとき
もし <(ユーザー名) = [製作者の名前]> なら
[☁︎ スクラッチャー判定 v] を [1] にする
end
もし <(☁ スクラッチャー判定) = [1]> なら
以下動作 ::#909090
でなければ
[あなたはニュースクラッチャーか、もしくはサインインしていません] と (2) 秒言う
[すべて v] を止める
end
にして、☁︎スクラッチャー判定を0にして保存します。
説明むずい


いや それでもゲストでもクラウド変数は変えれますが、サーバーに保存できないだけで、自分のプロジェクト内でしかできないので、そうなりますよね
yamaguchi03
Scratcher
32 posts

クラウドリスト 意見交換所

yamaguchi03 wrote:

hirayuu1414 wrote:

#46#45
それでは、サインインしているかしていないかの判定しかできません。
かぶっていると思いますが、正しくは↓
@Greenflag がクリックされたとき
もし <(ユーザー名) = [製作者の名前]> なら
[☁︎ スクラッチャー判定 v] を [1] にする
end
もし <(☁ スクラッチャー判定) = [1]> なら
以下動作 ::#909090
でなければ
[あなたはニュースクラッチャーか、もしくはサインインしていません] と (2) 秒言う
[すべて v] を止める
end
にして、☁︎スクラッチャー判定を0にして保存します。
説明むずい


いや それでもゲストでもクラウド変数は変えれますが、サーバーに保存できないだけで、自分のプロジェクト内でしかできないので、そうなりますよね

New scratcherだと、サーバーに到達できないってことです。サーバーまでデータが到達しないので、画面ではサーバーに到達しているようにみえるだけだとおもいます
mi9g0n
Scratcher
1000+ posts

クラウドリスト 意見交換所

#48
なんだか不思議な仕様ですね。
でも、動作については理解しました。
説明いただきありがとうございました。
inoking
Scratcher
1000+ posts

クラウドリスト 意見交換所

不思議でも何でもないですよ。

クラウド変数は
・Scratcher ならサーバーの値を
・そうでなければローカルの値を
参照するようになっているだけだと考えられます。
hirayuu1414
Scratcher
500+ posts

クラウドリスト 意見交換所

#49
サーバーへの読み込みが遅れる場合、最初に1~2秒待つか、イントロやタイトルを入れれば治るかもです。
mi9g0n
Scratcher
1000+ posts

クラウドリスト 意見交換所

つまり作った後で一度は制作者が動かしてみる、ということなんですね
inoking
Scratcher
1000+ posts

クラウドリスト 意見交換所

そうです。
#49 で紹介されている Scratcher かどうかの判定 でも
クラウドモニター を見ると分かるとおり、
プロジェクト保存後に、作者が一度値を設定しています。

Last edited by inoking (Dec. 18, 2021 04:39:05)

umbrella_551
Scratcher
15 posts

クラウドリスト 意見交換所

こんにちは。あの私は1人1回しか押せないプログラム使って高評価ボタンを作りたいんですが、そのためにクラウドリストが必要なんですけど、作り方や仕組みがよくわかりません。誰か教えてくれませんか?
hirayuu1414
Scratcher
500+ posts

クラウドリスト 意見交換所

wikiに頼らず、真面目に答えます。相当長文です。

まず、クラウドリストを作るには、「クラウド変数」の仕組みを知る必要があります。
↓クラウド変数は、こんなものですね。
(☁ score)
このように最初の文字が☁の変数です。
この変数には、普通の変数とは違う特徴がいくつかあります。
・10個までしか作れない
・256文字しか入れられない(つまり、10*256で合計2560文字まで入る)
・数字しか入れられない
・Scratcherしか使えない(これはunbrella_551さんがScratcherなので関係ない)
・値が世界共通で、誰かが値を変えたら世界中でその値になる

くらいでしょうか。

これを使ってリストにしていきたいのですが、
ちょっと待ってください。
この変数、数字しか入れられないような…ユザネは入れられなく無いか…?
大丈夫。それであってます。

じゃあどうすればいいか。答えは簡単。ユザネを数字に変えるのです。
ユザネはa~z,0~9,-,_しか使えません。
では、a=1,b=2…のように、それぞれの文字を数字に変えればよいのではないか。

実装してみましょう。
定義 ユーザー名(ユザネ)を数字に変換
[count v] を [1] にする//ユザネの何文字目を調べているかを示す変数
[変換後のユザネ v] を [] にする//数字に変換後、それを保存する
((ユザネ) の長さ) 回繰り返す//文字数回繰り返す
[count2 v] を [1] にする//a=1,b=2...のように変換するための変数
<((count) 番目\( (ユザネ)\)の文字) = ((count2) 番目\( [abcdefghijklmnopqrstuvwxyz0123456789-_] \)の文字)> まで繰り返す
[count2 v] を (1) ずつ変える//上のabcd...はユザネで使える全ての文字
end
[変換後のユザネ v] を ((変換後のユザネ) と (count2))にする//先程の数値をこれまでの数列とつなげる
[count v] を (1) ずつ変える//次の文字を調べる
end
はい。こうです。仕組みはわからなくても大丈夫ですが、とりあえず作ってみてください。もっと簡単な方法があるにはありますが、一番シンプルな方法を載せたまでです。
「hirayuu1414」を数字に変換すると…
8918125212128312831
になります。
…あれれ?どこで区切ってるのかわからなくなったぞ?
大丈夫。そのとおりです。
原因は、a~iまでは1桁で、それ以降は2桁で変換していることです。
これだと解読が難しい、というかほぼ不可能なので、修正します。
定義 ユーザー名(ユザネ)を数字に変換
[count v] を [1] にする
[変換後のユザネ v] を [] にする
((ユザネ) の長さ) 回繰り返す
[count2 v] を [1] にする
<((count) 番目\( (ユザネ)\)の文字) = ((count2) 番目\( [..........abcdefghijklmnopqrstuvwxyz0123456789-_] \)の文字)> まで繰り返す
[count2 v] を (1) ずつ変える//上の文字列の最初の.は10個
end
[変換後のユザネ v] を ((変換後のユザネ) と (count2))にする
[count v] を (1) ずつ変える
end
「hirayuu1414」を数字に変換すると…
1819281135313138413841
になります。
a…11,b…12と、2桁に揃うので解読も2つごとに区切ればよく、楽ちんです。

とりあえずここまでを実装してみましょう。続きはまた今度。
⚠正しいコードは下です。

Last edited by hirayuu1414 (Jan. 16, 2022 07:33:10)

R1NFJHS2103_1
Scratcher
16 posts

クラウドリスト 意見交換所

このプロジェクトはどんな仕組みなんでしょうか。
daihuku-otya
Scratcher
100+ posts

クラウドリスト 意見交換所

#59
クラウド変数にデータを数値化して覚えさせ、リストに反映しています。
(実際はもっと複雑でしょうが、Scratch Wiki クラウドリストに詳しいことが載っているので見てみてください。)

Powered by DjangoBB