![見出し画像](https://assets.st-note.com/production/uploads/images/83903802/rectangle_large_type_2_dfaebd8e992524eb44f6386cd4ceb0e1.jpeg?width=800)
ドドスコするゲーム
発端
だれかティラノでやって https://t.co/JoNy6hC9kY
— ねこの/milkcat (@nekomilkcat) August 2, 2022
やるか
— ききよ (@_kikiyo_) August 2, 2022
たまたま休日だったので。
完成品
ティラノでやりました。 https://t.co/eayTp8JccY pic.twitter.com/xNOGiEXFE0
— ききよ (@_kikiyo_) August 2, 2022
コード
ddsk.ks(first.ksからジャンプ)
;撮影用
[autostart]
[iscript]
f.ddsk=[]
f.ddsk[0]="ドド"
f.ddsk[1]="スコ"
f.report=""
f.hmt=0
[endscript]
;メッセージウィンドウと背景を出すだけに利用(31行目に[return])
@call storage="scene1.ks"
[layopt layer="0" visible="true"]
[layopt layer="1" visible="true"]
ロード中…
;六花の動きと声を登録
@call storage="rikka.ks"
[cm]
[chara_show name="rikka" layer="1" time="1000"]
;何回繰り返したか記録
[ptext name="count" layer="0" x="450" y="20" text="&f.hmt+'回目'" width="800" align="right" bold="bold" time="50" size="100"]
[macro name="DorS"]
[iscript]
//0か1がランダムで出る
tf.r=Math.round(Math.random())
//どちらが出たか記録
f.report=f.report+tf.r
//何回目かカウント
f.hmt=f.hmt+1
[endscript]
;ドドかスコどちらが出たかで六花のアクションを変える
[if exp="tf.r==0"]
[dd]
[else]
[sc]
[endif]
;実際に表示
@emb exp="f.ddsk[tf.r]"
[ptext name="count" time="5" layer="0" x="450" y="20" text="&f.hmt+'回目'" overwrite="true"]
[wse]
[endmacro]
*repeat
[DorS]
;200以上はさすがに長いので終わる。(撮影用)
;[close ask="false" cond="f.hmt==150"]
[jump storage="ddsk.ks" target="*repeat" cond="f.report.lastIndexOf('011101110111')==-1"]
[cm]
[iscript]
;メッセージをセンタリング
$('.message_inner').css('text-align', 'center');
[endscript]
[love]
[font size="80" bold="bold" color="pink"]
ラブ注入♡[p]
[end]
[iscript]
;メッセージを戻す
$('.message_inner').css('text-align', 'left');
[endscript]
[resetfont]
あなたは[emb exp="f.hmt"]回で達成しました![l][r]
[font size="120" bold="bold" color="pink"]
おわり!!!
[wait time="3000"]
;自動録画終了
[close ask="false"]
[s]
/*
@dialog text="ラブ注入♡"
[web url="https://tenor.com/view/tanoshingo-japanese-japan-gif-10268910"]
*/
[s]
;0111×3が入力されるまで繰り返す。
[s]
rikka.ks
[chara_new name="rikka" storage="end.png"]
[chara_face name="rikka" face="dd" storage="dd.png"]
[chara_face name="rikka" face="sc" storage="sc.png"]
[chara_face name="rikka" face="last" storage="last.png"]
[chara_face name="rikka" face="end" storage="end.png"]
[macro name="dd"]
[chara_mod name="rikka" face="dd" time="50"]
[playse storage="00ドド.mp3"]
[endmacro]
@eval exp="tf.i=0"
[macro name="sc"]
;やるたびに左右反転する
@eval exp="tf.i=tf.i+1"
@eval exp="(tf.i%2==0)?tf.tf='true':tf.tf='false'"
[chara_mod name="rikka" face="sc" reflect="&tf.tf" time="50"]
[playse storage="01スコ.mp3"]
[endmacro]
[macro name="love"]
[chara_mod name="rikka" face="last" time="50"]
[playse storage="02ラブ注入.mp3"]
[endmacro]
[macro name="end"]
[chara_mod name="rikka" face="end" time="50"]
[playse storage="0709.mp3"]
[endmacro]
[iscript]
tf.fgi='./data/fgimage/'
tf.snd='./data/sound/'
tf.pre=[]
tf.pre[0]=tf.fgi+'dd.png'
tf.pre[1]=tf.fgi+'end.png'
tf.pre[2]=tf.fgi+'last.png'
tf.pre[3]=tf.fgi+'sc.png'
tf.pre[4]=tf.snd+'00ドド.mp3'
tf.pre[5]=tf.snd+'01スコ.mp3'
tf.pre[6]=tf.snd+'02ラブ注入.mp3'
tf.pre[7]=tf.snd+'0709.mp3'
[endscript]
@preload storage="&tf.pre" wait="true"
[return]
コードの他に、
![](https://assets.st-note.com/img/1659439993235-LJavnxApny.png?width=800)
![](https://assets.st-note.com/img/1659440010058-w5S79LUxpN.png?width=800)
楽しんご氏のgif動画を埋め込みで出せるようにしたかったですね。
本題
【問題】配列{"ドド","スコ"}からランダムに要素を標準出力し続け、『その並びが「ドドスコスコスコ」を3回繰り返したもの』に一致したときに「ラブ注入♡」と標準出力して終了するプログラムを作成せよ(配点:5点)
— ((🐑++)) (@Sheeeeepla) August 1, 2022
答え
[iscript]
f.ddsk=[]
f.ddsk[0]="ドド"
f.ddsk[1]="スコ"
f.report=""
[endscript]
;メッセージウィンドウと背景を出すだけに利用(31行目に[return])
@call storage="scene1.ks"
[macro name="DorS"]
[iscript]
//0か1がランダムで出る
tf.r=Math.round(Math.random())
//どちらが出たか記録
f.report=f.report+tf.r
[endscript]
;実際に表示
@emb exp="f.ddsk[tf.r]"
[endmacro]
*repeat
[DorS]
[jump storage="ddsk.ks" target="*repeat" cond="f.report.lastIndexOf('011101110111')==-1"]
[cm]
ラブ注入♡[p]
これのポイントは、
・ドドスコ配列をそれぞれ0と1で呼び出せるようにする。
・0と1がランダムで出るようにする{Math.round(Math.random()}
・f.reportにランダムで出した数字を追加記録(0111の次に0が来たら01110)
・f.reportにlastIndexOfで011101110111と一致するまで[jump]を繰返させる
0='ドド' 1='スコ'
やってみて
condとembのexpは&がいらないんだった。というのを思い出しました。
あと、タグのパラメーターでTrue,Falseを求められるものに
booleamタイプを直接入れると駄目で、
文字列の'true','false'でないと駄目なのが分かりました。
コードは2時間ぐらい、演出で1時間ぐらい、撮影に3時間ぐらいです。1/2^12を引くのが一番大変だった
— ききよ (@_kikiyo_) August 2, 2022
1/4096を2分20秒以内(Twitter投稿可能時間)で出すのが大変でした。
あんまり出ないようなら出るまで回して、出る直前でユニコーンをオタマトーンで演奏した奴をくっつけた動画を出そうかと思ってました。
やらなくて済んでよかったです。
終わり。
この記事が気に入ったらサポートをしてみませんか?