HSPでコマンドプロンプト的なソースコードを作ったのですが...
Cydia.hatena 2013/5/6(Mon) 17:05:22|NO.53845
*cmd
mmplay 3
*cmdd
color 0,0,0
aaa="Cydia OS root#"
e="0"
hantei=1
hanteione=1
tikuseki=0
boxf
color 0,255,255
*cmdst
onkey *cmdtype
color 255,255,255
pos tikuseki*8,0
mes aaa
if aaa="Cydia OS root#":tikuseki=15
stop
*cmdtype
onkey 0
tikuseki=tikuseki+1
mojicode=iparam
if mojicode=8:mmplay 10:goto *cmdd
if mojicode=45:aaa="-"
if mojicode=48:aaa="0"
if mojicode=49:aaa="1"
if mojicode=50:aaa="2"
if mojicode=51:aaa="3"
if mojicode=52:aaa="4"
if mojicode=53:aaa="5"
if mojicode=54:aaa="6"
if mojicode=55:aaa="7"
if mojicode=56:aaa="8"
if mojicode=57:aaa="9"
if mojicode=65:aaa="A"
if mojicode=66:aaa="B"
if mojicode=67:aaa="C"
if mojicode=68:aaa="D"
if mojicode=69:aaa="E"
if mojicode=70:aaa="F"
if mojicode=71:aaa="G"
if mojicode=72:aaa="H"
if mojicode=73:aaa="I"
if mojicode=74:aaa="J"
if mojicode=75:aaa="K"
if mojicode=76:aaa="L"
if mojicode=77:aaa="M"
if mojicode=78:aaa="N"
if mojicode=79:aaa="O"
if mojicode=80:aaa="P"
if mojicode=81:aaa="Q"
if mojicode=82:aaa="R"
if mojicode=83:aaa="S"
if mojicode=84:aaa="T"
if mojicode=85:aaa="U"
if mojicode=86:aaa="V"
if mojicode=87:aaa="W"
if mojicode=88:aaa="X"
if mojicode=89:aaa="Y"
if mojicode=90:aaa="Z"
if mojicode=13:aaa="":mmplay 3:goto *chantei
if aaa="Cydia OS root#":goto *cmdd
;入力した文字を数値に変換している
hanteione=10^tikuseki*mojicode
hantei=hantei*hanteione
goto *cmdst
*chantei
;新しいコマンドを追加するときにつかう↓
;mes ""+hantei+""
if hantei=1260442080:goto *de
if hantei=1829946464:goto *game
if hantei=-1411298208:goto *bios
if hantei=1775616296:goto *cmdhelp
if hantei=-513622160:goto *notepad
if hantei=1:pos 0,15:mes "コマンドを入力してください。わからない場合は「HELP」と打ってください。"
pos 0,15:if hantei=1:else:mes "このコマンドは存在いたしません。"
onkey goto *cmd
wait 200
goto *cmdd
*de
end
*game
*cmdhelp
*notepad
*bios
というコードでコマンドプロンプトもどきを作成したのですが、
どういうわけか、EXIT、GAME、REBOOT、NOTEPADのコマンドを打ってもすべて
「このコマンドは存在いたしません。」と出てしまいます。
if hantei=1260442080:goto *de
if hantei=1829946464:goto *game
if hantei=-1411298208:goto *bios
if hantei=1775616296:goto *cmdhelp
if hantei=-513622160:goto *notepad
の位置がいけないのでしょうか?
誰か教えてください!!
KA 2013/5/6(Mon) 18:26:11|NO.53852
取りあえず、判定の内容を確認しましょう。
Him 2013/5/6(Mon) 18:27:59|NO.53853
数値変換がよく分かりませんが判定するだけなら文字の方が簡単じゃないですか?
*cmd
mmplay 3
*cmdd
aaa="Cydia OS root#"
bbb = "", "DE", "GAME", "BIOS", "HELP", "NOTEPAD"
ccc = ""
hantei = 0
*cmdst
onkey *cmdtype
redraw 0
color
boxf
color 255,255,255
pos 0, 0
mes aaa
pos 8 * 15, 0
mes ccc
redraw 1
stop
*cmdtype
mojicode=iparam
if mojicode=8:mmplay 10:goto *cmdd
if mojicode=13:mmplay 3:goto *chantei
ccc + strf ("%c", mojicode)
goto *cmdst
*chantei
repeat length(bbb)
if ccc = bbb(cnt) {
hantei = cnt
break
}
loop
if hantei {
gosub *command
} else {
pos 0, 15
mes "このコマンドは存在いたしません。"
wait 200
}
goto *cmdd
*command
switch hantei
case 1
end
swbreak
default
dialog ccc
swbreak
swend
return
通りすがり 2013/5/6(Mon) 19:24:13|NO.53855
そのソースはいわゆる"ドナルドウズ"の一部を文字列だけ改変したもののようですね。
さも自分が作ったような言い方をするのはやめるべきだと思います。
そういえば他スレッドの話で恐縮ですが
>キャラやBGMだけ差し替えたようなコピーが生まれるだけになりそう。
とありましたが、
現にDonaldowsのコピーは何個も見てきました。(剽窃含む
なぜか人気があるのですね。
質問と関係なくて申し訳ありません。
Cydia.hatena 2013/5/6(Mon) 21:29:24|NO.53858
通りすがりさん
すみません。そんなつもりはなかったのですが...
Cydia.hatena 2013/5/6(Mon) 21:36:34|NO.53859
Himさん、コードありがとうございます。
実行してみたところ、
すべてのコマンドがend命令になってしまいますが
その1つ1つのコマンドに命令をあたえれませんか?
GAME=ダイアログ表示
NOTEPAD=exec命令でメモ帳起動
EXIT(BE)=end命令
BIOS=mes命令
みたいな感じに。
おそらくif命令を使うと思いますが...
Cydia.hatena 2013/5/6(Mon) 21:42:32|NO.53860
お知らせ。
私は中学生2年生のため、1日中PCを動かせるわけではありません。
10時以降はほとんどの可能性で応答できませんのでご注意ください。
Him 2013/5/7(Tue) 00:32:25|NO.53863
私の環境ではend命令が実行されるのは"DE"と入力した場合のみなので
全てendになるのであれば私には解決できそうにないです。すみません。
Cydia.hatena 2013/5/7(Tue) 19:20:24|NO.53873
switch hantei
case 1
default
dialog ccc
swbreak
swend
の部分を消さないとErrorと出てしまいます。
そのコードは一体何ですか?何かDLLファイルとかが必要な奴ですか?
教えてください!
おそらく、このコードを消したためにDE以外のコマンドを打っても
end命令へ飛んでしまうのだと思いますが...
流星群 2013/5/7(Tue) 20:17:14|NO.53876
F1ヘルプ見ようよ…
説明すると、
それはswitch文といって、
分岐命令の一種です。
switch〜swendまでがswitch文です。
caseは分岐する値です。
例えば
switch a
case 1
mes "aは1"
swbreak
default
swend
の場合、変数aの値が1の場合のみ
aが1と表示されます。
詳しくはスクリプトエディタで
switchと入力し、F1を押して下さい。
流星群 2013/5/7(Tue) 20:20:41|NO.53877
連投すいません。
>NO.53873の
>の部分を消さないとErrorと出てしまいます。
>おそらく、このコードを消したために
これじゃ消したのかせいなのか消してないせいなのか
よくわからない文章になっていますよ。
質問する時はちゃんと自分の書いていることを理解して、
せいりしてから書き込み送信したほうが
こたえやすいですよ。
Cydia.hatena 2013/5/10(Fri) 21:50:07|NO.53938
返信遅れました。
switchのことはわかったのですが、どうやったら実行できますか?
Errorでて実行できません
Cydia.hatena 2013/5/11(Sat) 18:46:59|NO.53969
解決できました。
すみません
Cydia.hatena 2013/5/17(Fri) 19:21:52|NO.54092
色々迷惑をおかけして申し訳ありませんでした。