|
|
|
2015/9/25(Fri) 11:12:57|NO.71930
プログラムを作ってて、できそうなできそうじゃないような状態です。
話につきあってくれる方よろしくお願いします。
疑問がでてきました。
疑問1、アイテム(道具)の管理について
本にのってなくて困ってます。
道具システムとか買い物システムって重要だと思うんですよ
本にのってないのはなんでなんしょうか?(私だけ思ってる?)
例えば、
やくそう \50(原価) \80(売値) 10個(在庫数)
どくけしそう \100(原価) \150(売値) 10個(在庫数)
を管理するときにメインループの前で定義するのでしょうか?
それと、きっと配列に入れると思うのですが
どうやって定義するのが理想でしょうか?
また、複数で考えてる理由はやくそうだけで組んでたときに
複数になったらどうなるのか検討がつかなかったからです。
2、経営での営業ボタン後の処理
売るって処理はどうしたらいいのだろうと頭を考えています。
たとえば、
思いつくのは
randomize
handan = rnd(3)として ランダムに0,1,2が出ると思うんですけど
0がでたときに売る 確率は33%です。
お客一人あたりの確率だとして、高いとは思いますがそれは調節するというかんじで
あとは、評判度とかで影響をうけたりとか
こういう考え方であってるかという疑問です。
プログラミングに正解はないのかもしれないんですが、考え方は正しいか教えてもらいたいです。
3.エラーがでてしまって
mes item(0) "+【在庫数(+" item(3) "+)】"
きっとこれだと思うんですけど、どこが間違ってるのかイマイチわかりません。
****************************************************************************
screen 0,680,480
money =500
dim item,4 ;薬草の情報
item(0) = "やくそう" ;商品名
item(1) = 50 ;原価
item(2) = 80 ;売値
*MainLoop
cls
button "営業",*EIGYOU
button "仕入れ",*SIIRE
pos 100,0
mes "\\" + money
mes "<<在庫一覧>>"
mes item(0) "+【在庫数(+" item(3) "+)】"
stop
*SAVESTART
*OWARI
end
*EIGYOU
*SIIRE
cls
mes "【最大在庫数99個】"
mes "やくそう:\\50"
input YAKUSOU,40,20,3
button "購入",*HANDAN
stop
*HANDAN
if item(3) + YAKUSOU < 100 & money >= YAKUSOU * item(1){
item(3) += YAKUSOU
money = money - (YAKUSOU * item(1))
dialog "購入しました!!",0,"購入成功"
}
else{
dialog "購入できません",2,"購入失敗"
}
goto *MainLoop
チェックしてやるよって方、スカイプ教えていただけませんか?
| |
|
2015/9/25(Fri) 12:22:46|NO.71932
+の位置が少しずれていますね。
mes item(0) "+【在庫数(+" item(3) "+)】"
↓
mes item(0) +"【在庫数("+ item(3) +")】"
こう直してみてください。
|
|
2015/9/25(Fri) 12:42:34|NO.71933
>>kanamaruさん
ありがとうございます!
なおりました。
item(0) = "やくそう"
いれてるんですけど、
dim だとやっぱり文字列は入れられないみたいでそこでエラーがでてしまいました。
|
|
2015/9/25(Fri) 12:45:57|NO.71934
今できる限り修正しています。
お待ちください。
|
|
2015/9/25(Fri) 14:02:31|NO.71935
こんな感じでどうでしょうか?
screen 0,680,480
money =500
アイテム数=4
sdim item_Name,100,アイテム数;アイテムの表示名のみ。
dim item_Money,アイテム数,2 ;アイテムの価格情報。1次配列に原価、2次配列に売値を入れます。
item_Name(0) = "薬草" ;商品名
item_Money(0,0) = 50 ;原価
item_Money(0,1) = 80 ;売値
item_Name(1) = "毒消し" ;商品名
item_Money(1,0) = 100 ;原価
item_Money(1,1) = 120 ;売値
item_Name(2) = "復活石" ;商品名
item_Money(2,0) = 200 ;原価
item_Money(2,1) = 300 ;売値
repeat アイテム数
pos 10,cnt*30:mes "アイテム名:"+item_Name(cnt)+" 原価:"+item_Money(cnt,0)+" 売値:"+item_Money(cnt,1)+""
loop
|
|
2015/9/25(Fri) 15:22:47|NO.71938
>>スペースさん
ありがとございます!
こういう感じにすればいいんですね
また一つ疑問なんですけど
たとえば、pos で画像置いたりとかしてデザインするじゃないですか
あれは地道に実行して調節するしかありませんよね?
|
|
2015/9/25(Fri) 16:12:23|NO.71941
すでに解決策がわかっているようですが、
エラーが直せなかったですが、
/**************************************************************************/
#module kanri name,bprice,aprice,num
#modinit str _name,int _bprice,int _aprice,int _num
name=_name
bprice=_bprice
aprice=_aprice
num=_num
return
#modcfunc get int number
if(number=0):return name
if(number=1):return bprice
if(number=2):return aprice
if(number=3):return num
#modfunc set str n,int b,int a,int number2
name=n
bprice=b
aprice=a
num=number2
return
#global
screen 0,680,480
money =500
newmod item,kanri,"やくそう",50,80,0
*mainloop
cls
button "営業",*EIGYOU
button "仕入れ",*SIIRE
pos 100,0
mes "\\" + money
mes "<<在庫一覧>>"
mes get(item,0) +"【在庫数("+ get(item,3) +")】"
stop
*SAVESTART
*OWARI
end
*EIGYOU
*SIIRE
cls
mes "【最大在庫数99個】"
mes "やくそう:\\50"
input YAKUSOU,40,20,3
button "購入",*HANDAN
stop
*HANDAN
if (get(item,3) + YAKUSOU < 100) and (money >= YAKUSOU * get(item,1)){
set get(item,0),get(item,1),get(item,2),get(item,3)+YAKUSOU
money = money - (YAKUSOU * get(item,1))
dialog "購入しました!!",0,"購入成功"
}
else{
dialog "購入できません",2,"購入失敗"
}
goto *mainloop
はどうでしょうか?
newmodを追加すれば簡単にアイテムを追加できます。
(エラーがあるけど)
それと、画像の位置は地道に頑張ってください。
| |
|
2015/9/25(Fri) 16:36:51|NO.71942
>>ブルーンさん
基本的にはそうですね。
自分はいつもペイントツールで適当に図形を使ってレイアウトを決め、
それを元にposで位置を決めています。0から手探りで調整するよりは楽かと。
|
|
2015/9/25(Fri) 17:17:58|NO.71945
kanamaruさん、ヘルプに#modfuncで定義した命令はモジュール型の変数をつけて呼び出すようにかいてあります。
具体的には「set 変数名,なんとか」のようにすればいいです。
的外れであればすみません。
わたしはスペースさんの方法が単純明快でわかりやすいと思うのでおすすめします。
|
|
2015/9/25(Fri) 18:19:35|NO.71948
noapさん、ありがとうございました。
おかげでエラーが直りました。
これできちんと動くようになったわけですが、
スペースさんのと僕の。
どっちがいいですか?
僕のほうが長いけど、スペースさんのより変数は一個へり、
スペースさんのは短いけど、僕のより変数が多い。
また、言い換えると、僕の方法はアイテムの情報をまとめて取り扱えて、
スペースさんの方法だとひとつのアイテムに対して二つの分けて管理している。
このように比べると、僕のほうがいいと思うんですが。
|
|
2015/9/25(Fri) 18:22:36|NO.71949
確かにどちらにもいい点があるのでまよいます
|
|
2015/9/25(Fri) 18:51:20|NO.71951
アイテム管理をする場合、データ構造をできるだけシンプルに考えます。
アイテム名,パラメータ,属性(フラグ) など。
私は別にツールを作ってバイナリで書き出してデータファイルを作りますけど
最初のうちは、コードに直接書く方法(配列)をおすすめします。
|
|
2015/9/25(Fri) 19:00:06|NO.71952
内容とは関係ないですが、
シュミレーションではなくて
シミュレーション。
…って前何かのCMでありましたね…
|
|
2015/9/25(Fri) 19:01:56|NO.71953
わたしにいえるのは
なるべくシンプルなほうが間違えにくい
データ管理の効率がよくなる(配列ならそのまままとめて暗号化してファイルに保存したりできる)
hsp3dishはhsp3cnvがモジュール変数にHSP3.4の時点では対応していないので
スマートフォンに移植したくなった場合書き直さなければならなくなる
この程度です。
何かおかしい点があればごめんなさい。
参考 http://www.onionsoft.net/hsp/v34/doclib/hsp3cnv.txt
|
|
2015/9/25(Fri) 20:36:12|NO.71955
kanamaruさんのは理解できたら
簡単にできそうですね
私は配列で考えていたのでわかりやすさでいったら
スペースさんのがわかりやすいですね
ちゃんと理解できてないので、もしアイテムが増えてきたら
問題点がでてきたりとか、自分の頭にある感じを表現するのに
てきしてるのかはわかりませんね
|
|
2015/9/25(Fri) 20:42:49|NO.71956
できたら、新しい命令いれられてしまうとわからなくなってしまうんで
説明がほしいです。
調べて、説明読んでも理解できないんで
|
|
2015/9/25(Fri) 20:46:21|NO.71957
知ってるとは思いますが、
知らない命令や関数が出てきたら、その上にカーソルを合わせてF1を押す。
これで1つずつ覚えていってください。今は分からなくても頭に入れます。
|
|