HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0909
nepissatonkeyについての質問2解決


nepissat

リンク

2014/9/9(Tue) 22:11:03|NO.64795

まず、スクリプト

cls 4 onkey *jump stop *jump if (wparam == 13){ center+20 addchar=0 pos addchar,center:mes strf("%c", iparam) } if (wparam == 8){ color 0,0,0 pos addchar,center:boxf addchar+15,center+15,addchar,center addchar-10 }else{ addchar+10 pos addchar,center:color 255,255,255:mes strf("%c", iparam) }

↑のスクリプトは、文字入力で大文字、Enterで改行、BackSpaceで、一文字消す
ナノですが、
これを、文字入力した文字をEnterが押される前に記憶しておいて、
Enterが押されたら、文字に合わせて命令を実行するというものにしたいのですが、
なかなかできません。

例えると、ゲームのコマンドや、Windowsのコマンドプロンプトみたいな感じです。



この記事に返信する


ななし

リンク

2014/9/10(Wed) 00:08:40|NO.64797

普通の文字が入力されたら文字列変数に入れておいて、
Enterが押されたら命令を実行するラベルなり関数なりに飛べばいいと思います。

以下は、参考になるか分かりませんが、少し実装してみたものです。


string@mod0 = "" exstring@mod0 = "" draw onkey *jump stop #module mod0 #deffunc draw redraw 0 color : boxf // 黒で塗りつぶし pos 0, 0 color 255,255,255 mes string redraw 1 return #deffunc keyInput int wp, int ip switch wp case 13 // Enter string += "\n" //文字列を実行する excuteString exstring exstring = "" swbreak case 8 // BackSpace if (strmid(string, -1, 2) != "\n") { string = strmid(string, 0, strlen(string)-1) exstring = strmid(exstring, 0, strlen(exstring)-1) } swbreak default // その他 string = string + strf("%c", ip) // ↓実行する文字列を覚えておく exstring = exstring + strf("%c",ip) swbreak swend // 再描画する draw return // 文字に合わせて実行 #deffunc excuteString str cmd // たとえば... switch cmd case "CLS" // 画面をクリア string = "" swbreak case "HELLO" // あいさつ string += "Hello, World!\n" swbreak case "BYE" // 終了する string += "BYE BYE" draw wait 100 end swbreak swend draw return #global *jump keyInput wparam, iparam stop



nepissat

リンク

2014/9/10(Wed) 15:38:48|NO.64805

ありがとうございます。

バグ修正もアリです。



ONION software Copyright 1997-2023(c) All rights reserved.