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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1114
acidカウンターを作りたいのです7未解決


acid

リンク

2012/11/14(Wed) 00:20:41|NO.50632

最近HSPをすこしいじり始めて
簡単なものを作ろうかなぁと思いました。

まだ知識は足りないのですが
カウンターを作りたいなぁと。


どう書いていいかわからないのですが、
ボタンを押すと枠に数字が+1されていくのを複数設置し
読み込みと保存ができるようにしたいのです。

できれば読込(出力したものを)と保存(テキスト形式)を実装したいのですが
保存だけでもかまいません。(保存するときの名前を決めれるとうれしいです

初心者の私ができる内容とは思えませんが
よろしくおねがいします!



この記事に返信する


晩御飯

リンク

2012/11/14(Wed) 02:38:26|NO.50634

結局のところ聞きたいことがよくわからないのですが

ボタンの設置はbutton命令でできそうですね
ボタンを押したときの処理を書くためにはラベルについて知る必要があります

書き込みと読み込みはそれぞれnotesave命令とnoteload, noteget命令でできそうですね
あとnotesel命令ですか
それに加えて数値と文字列の操作について知る必要があります

とにもかくにもまず最初は検索の仕方とHSP付属のヘルプの使い方を覚えることが望ましいですね



@key

リンク

2012/11/14(Wed) 02:42:33|NO.50635

作りたい・・・と書いているのでヒントを書きます
作るのに必要な命令を載せるのでヘルプを御覧ください

ボタンはbutton命令
ボタンを押した時の処理はラベル(*label1など)
カウンターの表示はmes(やや難しい)inputとobjprm(簡単)
カウンターの計算は、変数(例えばcount1)を作って+1をする(count=count+1、count++)
保存時のダイアログはdiarog
保存はbsave
読み込みはbload



あり

リンク

2012/11/14(Wed) 03:33:13|NO.50638

試しに質問どおりと思しき動作のサンプルを作ってみたのですが
複数のカウンターとボタンの連動が思いのほか面倒くさいので
あまり初心者向きではないように感じます。

とりあえず複数のカウンターは置いておいて、まずは一つのカウンター処理と
SAVE・LOAD処理の実現から始めてみるのが良いと思います。



fortunehill

リンク

2012/11/14(Wed) 11:15:11|NO.50640

/*ご参考に成れば幸いです(配列変数を無駄にしていますが)*/

randomize dim nn,32 sdim ss,32 objsize 64,24 repeat 5 pos 0 :button gosub "加 算",*label_1 pos ginfo(22)+64,ginfo(23)-24 :nn(stat) = rnd(255) :Input nn(stat) pos ginfo(22)+64,ginfo(23)-24 :button gosub "読 込",*label_2 pos ginfo(22)+64,ginfo(23)-24 :button gosub "保 存",*label_3 pos ginfo(22)+64,ginfo(23)-24 :ss(stat) = strf("data_%2d.txt",stat) :Input ss(stat) loop pos 0 :objsel 0 stop *label_1 nn(stat)++ :objprm stat+1,nn(stat) return *label_2 ii = stat title strf("value = %2d name= %s index = %2d",nn(ii-2),ss(ii+1),ii) exist ss(ii+1) if (strsize != -1) {bload ss(ii+1),nn(ii-2) :objprm (ii-1),nn(ii-2)} return *label_3 ii = stat title strf("value = %2d name= %s index = %2d",nn(ii-3),ss(ii),ii) bsave ss(ii),nn(ii-3) return



あり

リンク

2012/11/14(Wed) 11:37:11|NO.50641

別のアプローチ例

; 変数初期化 #const CNT_MAX 5 ; カウンターの数 dim cnt_buf, CNT_MAX ; カウント保存用配列 dim cnt_id, CNT_MAX ; カウンターID用配列 dim btn_id, CNT_MAX ; ボタンID用配列 tmp = "0" ; 一時変数(文字列、最初は0を代入) save_buf = "" ; セーブ用バッファ(文字列) ; カウンターとボタンの表示 objsize 100, 24 repeat CNT_MAX pos 110 * cnt, 0 mesbox tmp, 100, 24, 0 : cnt_id(cnt) = stat button gosub "0" + (cnt + 1), *bpush : btn_id(cnt) = stat loop pos 0, 100 : button gosub "SAVE", *save_count pos 110, 100 : button gosub "LOAD", *load_count stop ; カウント処理 *bpush push_bt = stat ; 押されたボタンのID repeat CNT_MAX ; 押されたボタンに対応するカウンターを検索 if push_bt = btn_id(cnt) { cnt_buf(cnt) + 1 objprm cnt_id(cnt), cnt_buf(cnt) ; カウンターの更新 break } loop return ; セーブ・ロード処理 *save_count dialog "txt", 17, "" if stat = 0 : return ; キャンセル処理 notesel save_buf repeat CNT_MAX ; 配列を文字列に変換して保存 noteadd str(cnt_buf(cnt)), cnt, 1 loop notesave refstr noteunsel return *load_count dialog "txt", 16, "" if stat = 0 : return ; キャンセル処理 notesel save_buf noteload refstr repeat CNT_MAX ; 文字列を配列にして表示 noteget tmp, cnt cnt_buf(cnt) = int(tmp) objprm cnt_id(cnt), cnt_buf(cnt) loop noteunsel return



a

リンク

2012/11/14(Wed) 17:18:51|NO.50646

a=0;値を保存する
*top
cls;画面クリア
mes a;システム変数表示
button "カウント",*main;カウントボタン
stop;ストップ
*main
a+1;aに+1をする
goto *top;topラベルへ移動

こういうことですか?

ファイルの保存、読み込みに関しては
http://hsp3.web.fc2.com/lecture9.html



@key

リンク

2012/11/14(Wed) 20:12:35|NO.50657

作りたいなぁ・・・と初心者が質問してるのに答えをバンバン書いてくのはどうかと思いますが



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