|
 |
|
2013/9/29(Sun) 17:13:14|NO.57461
たびたび 質問します。
以前質問に出した仕分けについてはなんとかできました。ありがとうございました。
質問はその続きです。購入したものだけを買い物リストを消し表示させたく考えていますが、
clsを使うと 買った状態で 購入、持ち物リストを繰り返し押すことで、購入リストが
消えてしまいます。
どうか教えてください。(いつものように、下記に今できているデータを載せておきます。)
よろしくお願いいたします。
#module
#defcfunc fun_GetKenName int ken_id
if kens=0 {
sdim kens
kens(0) = "北海道","青森県","岩手県","宮城県","秋田県"
kens(5) = "山形県","福島県","茨城県","栃木県","群馬県"
kens(10) = "埼玉県","千葉県","東京都","神奈川県","新潟県"
kens(15) = "富山県","石川県","福井県","山梨県","長野県"
kens(20) = "岐阜県","静岡県","愛知県","三重県","滋賀県"
kens(25) = "京都府","大阪府","兵庫県","奈良県","和歌山県"
kens(30) = "鳥取県","島根県","岡山県","広島県","山口県"
kens(35) = "徳島県","香川県","愛媛県","高知県","福岡県"
kens(40) = "佐賀県","長崎県","熊本県","大分県","宮崎県"
kens(45) = "鹿児島県","沖縄県"
}
ken_name = kens(ken_id)
return ken_name
#global
*hajime
cls 0
onerror *jj ;エラーが出た場合飛ぶ
iddat=2,3,7,13,25,6,9,41
kenString=""
repeat length(iddat)
id=iddat(cnt)
kenString+fun_GetKenName(id) + "\n"
ken_id(cnt)=id //県IDを県名順に保存(listboxの順番と県IDをセットにする)
loop
ken_index = 0
listbox ken_index,100,kenString
lb_ID = stat
hListbox = objinfo(stat, 2)
cb_flag = 0 ; comboxが表示中かどうかのフラグ
cc_flag = 0 ; comboxが表示中かどうかのフラグ
button gosub "購入", *check
pos 150,350
button "持ち物リスト",*cls5
stop
*cls5
cls 0
button "買い物",*hajime
stop
*check
notesel kenString
noteget getlist, ken_index
DDD = "購入済"
if getlist = DDD {
goto *check3
} else {
dialog getlist + "を購入しました。"
}
if getlist = DDD {
goto *check3 }
if ken_id(ken_index) < 10 {
goto *check4}
if ken_id(ken_index) <= 10 & ken_id(ken_index) <= 25{
goto *check5}
if ken_id(ken_index) > 25{
goto *check6}
; comboxが非表示なら表示、表示中なら内容を書き換え
*check4
notesel combdataX
noteadd Getlist
pos 150,50
if ca_flag = 0 {
d = 0
combox d,100,combdataX : ca_ID = stat
ca_flag = 1
} else {
objprm ca_ID, combdataX
objprm ca_ID, 0
}
goto *check7
*check5
notesel combdata
noteadd Getlist
pos 150,150
if cb_flag = 0 {
b = 0
combox a,100,combdata : cb_ID = stat
cb_flag = 1
} else {
objprm cb_ID, combdata
objprm cb_ID, 0
}
goto *check7
*check6
notesel combdataA
noteadd Getlist
pos 150,250
if cc_flag = 0 {
c = 0
combox c,100,combdataA : cc_ID = stat
cc_flag = 1
} else {
objprm cc_ID, combdataA
objprm cc_ID, 0
}
goto *check7
*check7
; 購入したアイテムに印をつける
notesel kenString
noteadd DDD, ken_index, 1
objprm lb_ID, kenString
objprm lb_ID, ken_index
return
*check3
; アイテムの頭に印があれば処理を中断
cstr = strmid(getlist, 0, 6) ;strmid(文字の取り出し),何文字目から,何文字(何バイト)
if cstr = DDD {
dialog DDD + "です" }
return
*jj

| |
|
2013/9/29(Sun) 19:15:18|NO.57462
//--から//--の間が主な修正部分
*hajime
cls 0
onerror *jj ;エラーが出た場合飛ぶ
iddat=2,3,7,13,25,6,9,41
kenString=""
//------------
list_cnt=0
repeat length(iddat)
id=iddat(cnt)
kenString+fun_GetKenName(id) + "\n"
ken_id(cnt)=id //県IDを県名順に保存(listboxの順番と県IDをセットにする)
list_cnt++ //リストの個数を数える
loop
list_max=list_cnt //リスト個数を保存
//-------------
ken_index = 0
listbox ken_index,100,kenString
lb_ID = stat
hListbox = objinfo(stat, 2)
ca_flag = 0
cb_flag = 0 ; comboxが表示中かどうかのフラグ
cc_flag = 0 ; comboxが表示中かどうかのフラグ
button gosub "購入", *check
pos 150,350
button "持ち物リスト",*cls5
stop
*cls5
cls 0
button "買い物",*hajime
stop
*check
//------------
if list_max=0 { dialog "商品がありません。":return}
notesel kenString
noteget getlist, ken_index
dialog getlist + "を購入しました。"
if ken_id(ken_index) < 10 { goto *check4}
if ken_id(ken_index) >= 10 & ken_id(ken_index) <= 25{ goto *check5}//ken_id(ken_index) <= 10 を>=に修正
if ken_id(ken_index) > 25{ goto *check6}
//------------
; comboxが非表示なら表示、表示中なら内容を書き換え
*check4
notesel combdataX
noteadd Getlist
pos 150,50
if ca_flag = 0 {
d = 0
combox d,100,combdataX : ca_ID = stat
ca_flag = 1
} else {
objprm ca_ID, combdataX
objprm ca_ID, 0
}
goto *check7
*check5
notesel combdata
noteadd Getlist
pos 150,150
if cb_flag = 0 {
b = 0
combox a,100,combdata : cb_ID = stat
cb_flag = 1
} else {
objprm cb_ID, combdata
objprm cb_ID, 0
}
goto *check7
*check6
notesel combdataA
noteadd Getlist
pos 150,250
if cc_flag = 0 {
c = 0
combox c,100,combdataA : cc_ID = stat
cc_flag = 1
} else {
objprm cc_ID, combdataA
objprm cc_ID, 0
}
goto *check7
*check7
//--------------------
; 購入したIDをken_id()から削除しlistboxに反映させる
kenString=""
list_cnt=0
repeat list_max
if cnt ! ken_index{//今回購入されていなければリストに追加
id=ken_id(cnt)
kenString+fun_GetKenName(id) + "\n"
ken_id(list_cnt)=id //購入されたIDが抜けるので再度セット
list_cnt++
}
loop
list_max=list_cnt
objprm lb_ID, kenString
objprm lb_ID, limit(ken_index,0,list_max-1)
//--------------------
return
*jj
タブが消えたり先頭にスペースが追加されたりでコピペして編集がやりにくいから
スクリプトを掲示板に書く時は注意書きの4番見て

| |
|
2013/10/1(Tue) 21:00:50|NO.57488
暇人さんありがとうございます。
すみません。4.スクリプトは小文字の~
で囲むと見やすく表示できます。
それがよくわかっていません。今後は調べて書き方を変更します。
後、説明がわかり辛い状態だったので修正します。
リストボックスから購入したものを持ち物リストに反映したいと思っています。
comboxの持ち物リストを押したときは、リストボックスが消えて
購入したものだけを種類別に持ち物リストに表示
例えば、RPGゲーム内で買い物をしたとき、
その画面を抜けて持ち物の確認をするという動作になります。
その後、また買い物をしてまた持ち物リストの確認をします。
よろしくお願いいたします
|
|
2013/10/3(Thu) 00:36:23|NO.57495
NO.57461とNO.57488で言ってること違う気がして、よく分からないので
>if 0 { //0なら{}内を飛ばす
の0を1にする事で違う動作もするように用意した
//ショップデータ
Shop_dat_str={"
2, 3, 7,13,25, 6, 9,41
8,32,10, 5, 1,45,20,30,46,15"}
Shopitem_max=15 //一つの売り物リストの最大数
notesel Shop_dat_str
Shop_max=notemax
dim iddat,Shopitem_max,Shop_max
//文字のショップデータから数値のIDデータに変換し、IDが無い要素を$80000000にしてiddat(cnt,Shop_id)に代入
repeat Shop_max
noteget dat_str,cnt
split dat_str,",",iddat_str
Shop_id=cnt
repeat Shopitem_max
if cnt <stat{
iddat(cnt,Shop_id)=int(iddat_str(cnt)) //文字を数値に変換して順番にiddatへ代入
}else{
iddat(cnt,Shop_id)=$80000000 //IDの無い要素は$80000000を代入
}
loop
loop
Totl_itemid_max=0
Shop_id=0
ShopName="買い物A","買い物B"
//タイプ別用に予め処理
type_mes="0~9","10~25","26~"
repeat 47
//cntをIDとしてタイプ値として0~2を代入
if cnt < 10 {get_type(cnt)=0}
if cnt >= 10 & id <= 25{get_type(cnt)=1}
if cnt > 25{get_type(cnt)=2 }
loop
*hajime
title ShopName(Shop_id)
cls 0
onerror *jj ;エラーが出た場合飛ぶ
kenString=""
list_cnt=0
repeat Shopitem_max
id=iddat(cnt,Shop_id)//二次元配列になってるので注意
if id>=0 {//IDが負数ならIDが無いか既に購入された
kenString+fun_GetKenName(id) + "\n"
ken_id(list_cnt)=id //県IDを県名順に保存(listboxの順番と県IDをセットにする)
list_cnt++ //リストの個数を数える
ken_cnt(id)=cnt //IDから元データ(iddat)の要素数を取り出せるようにする
}else{
if id=$80000000 {break}//IDが無いので抜ける
}
loop
list_max=list_cnt //リスト個数を保存
dim c_flag,3
sdim combdata,1024, length(c_flag)
if 0 { //0なら{}内を飛ばす
; ↑を1にすると、買い物ボタンを押した時に、今まで購入した物をタイプ別にcomboxに入れて表示
repeat Totl_itemid_max
id=Totl_itemid_list(cnt)
gosub *buy //idをリストに追加しcomboxに反映
loop
Totl_itemid_max=0
}
ken_index = 0
pos 0,0
listbox ken_index,100,kenString
lb_ID = stat
hListbox = objinfo(stat, 2)
button gosub "購入", *check
pos 150,350
button "持ち物リスト",*cls5
stop
*cls5
cls 0
button "買い物A",*Shopping
spbA_id=stat
button "買い物B",*Shopping
spbB_id=stat
//今回購入した物を持ち物リストに追加
repeat spitem_max
id=spitem_id(cnt) //今回購入したID
Totl_itemid_list(Totl_itemid_max)=id //前回までの持ち物に追加
Totl_itemid_max++ //持ち物の数を増やす
loop
spitem_max=0
sdim item_list_str,100,3
//持ち物リストのIDから振り分けして名前を取り出し
repeat Totl_itemid_max
id=Totl_itemid_list(cnt)
type=get_type(id) //IDからタイプを取得
item_list_str(type)+fun_GetKenName(id) + "\n"
loop
repeat 3
pos cnt*100+100,100
mes type_mes(cnt)
mes item_list_str(cnt)
loop
stop
*Shopping
if spbA_id=stat {Shop_id=0}else{Shop_id=1}
goto *hajime
*check
if list_max=0 { dialog "商品がありません。":return}
notesel kenString
noteget getlist, ken_index
dialog getlist + "を購入しますか?。",2
if stat=7 {return}
id=ken_id(ken_index)
gosub *buy //購入したidをリストに追加しcomboxに反映
; 購入したIDをken_id()から削除しlistboxに反映させる
kenString=""
list_cnt=0
repeat list_max
id=ken_id(cnt)
if cnt ! ken_index{//今回購入されていなければ再度リストに追加
kenString+fun_GetKenName(id) + "\n"
ken_id(list_cnt)=id //購入されたIDが抜けるので再度セット
list_cnt++
}else{//今回購入したIDの元のデータに$81000000追加する(購入した物と最初からIDが無かった物とを区別するため)
iddat(ken_cnt(id),Shop_id) | $81000000 //ken_cnt(id)で元のデータの要素数を取り出す
}
loop
list_max=list_cnt
objprm lb_ID, kenString
objprm lb_ID, limit(ken_index,0,list_max-1)
return
//購入したidをリストに追加しcomboxに反映
*buy
spitem_id(spitem_max)=id //今回購入した物だけ保存(spitem_id()を種類別に持っても良いが)
spitem_max++
type=get_type(id) //IDからタイプを取得
; comboxが非表示なら表示、表示中なら内容を書き換え
notesel combdata(type) //タイプ別のcombdataを選択
noteadd fun_GetKenName(id)
if c_flag(type) = 0 {
pos 150,50+100*type
c_index(type) = 0
combox com_index(type),100,combdata(type) : c_ID(type) = stat
c_flag(type) = 1
} else {
objprm c_ID(type), combdata(type)
objprm c_ID(type), 0
}
return
*jj
end
同じ処理は纏めて配列を使って同じ意味を持つ名前違いの変数を減らした

| |
|
2013/10/5(Sat) 18:57:57|NO.57515
スクリプトを実行してみたのですが、どういう動作が正しいのかちょっとわかりませんでした。
ただ操作によりオブジェクトをclsで消したりまた同じオブジェクトを作ったりしないほうが良
いです。
以下のどちらかにしたらどうでしょうか。
①全てのオブジェクトは最初に表示しておく。表示したくない場合は非表示設定とする。または
非使用とする。
②違う画面を呼び出す。
①の場合のサンプルです。
#include "user32.as" // APIのShowWindowを使用するための宣言
pos 0,10: button "表示非表示", *hyouji
pos 0,50: button "使用非使用", *siyou
pos 100,10: combox ls,100,"aa\nbb\ncc": hCombox=objinfo(stat, 2) ; ウィンドウハンドル取得
ShowWindow hCombox, 0 // 非表示
flg1=0
pos 100,50: combox ls,100,"11\n22\n33": iCombox=stat
objenable iCombox,0 //非使用
flg2=0
stop
*hyouji // 表示切り替え
if flg1==5{ flg1=0 }else{ flg1=5 }
ShowWindow hCombox, flg1
stop
*siyou // 非使用切り替え
if flg2==0{ flg2=1 }else{ flg2=0 }
objenable iCombox,flg2
stop
|
|
2013/10/10(Thu) 23:09:48|NO.57563
暇人さんありがとうございます。
自分なりに、解読中なので時間が掛かってしまいお礼が遅くなり申し訳ありません。
さかさん、アドバイスありがとうございます。
①については、たぶん暇人さんがやっているとおもいますので解読の参考にします。
②については、考えていたら違う画面で持ち物をチェックするという動作がよいのでは
と思えてきたので、申し訳ありませんが参考になるサンプルを教えていただけないでしょうか?
よろしくお願いいたします。
|
|
2013/10/12(Sat) 14:11:54|NO.57571
こんな感じですか。
pos 150,350
button "持ち物リスト",*cls5
stop
*cls5
screen 1 // 新しいウィンドウ
title "買い物リスト"
button "買い物",*tojiru
stop
*tojiru
gsel 1,-1 // ウィンドウ非表示
stop
|
|
2013/10/20(Sun) 21:10:15|NO.57701
解読に時間が掛かるため、少しづつ進めようと思います。
さかさんありがとうございます。別の画面に出す方法はできました。
今は、暇人さんの作ったスクリプトを自分のものにしようと考えていますができないので
申し訳ありませんが教えてください。
下記のスクリプトを実行して、神奈川県を最初に購入し持ち物リストに反映されていません。
買い物で最初の画面にもどり 岩手を購入すると
持ち物リストには、岩手県、神奈川県が購入したことになります。
長崎県も同様に同じようになります。
どうにか、神奈川県を最初に購入しても持ち物リストに反映したいのですがわかりません。
申し訳ありませんが教えてください。
よろしくお願いいたします。
#module
#defcfunc fun_GetKenName int ken_id
if kens=0 {//fun_GetKenNameの度に県名入れるのは無駄なので
sdim kens;
kens(0) = "北海道","青森県","岩手県","宮城県","秋田県"
kens(5) = "山形県","福島県","茨城県","栃木県","群馬県"
kens(10) = "埼玉県","千葉県","東京都","神奈川県","新潟県"
kens(15) = "富山県","石川県","福井県","山梨県","長野県"
kens(20) = "岐阜県","静岡県","愛知県","三重県","滋賀県"
kens(25) = "京都府","大阪府","兵庫県","奈良県","和歌山県"
kens(30) = "鳥取県","島根県","岡山県","広島県","山口県"
kens(35) = "徳島県","香川県","愛媛県","高知県","福岡県"
kens(40) = "佐賀県","長崎県","熊本県","大分県","宮崎県"
kens(45) = "鹿児島県","沖縄県"
}
ken_name = kens(ken_id)
return ken_name
#global
onerror *jj ;エラーが出た場合飛ぶ
iddat=2,3,7,13,10,6,9,41
kenString=""
repeat length(iddat)
id=iddat(cnt)
kenString+fun_GetKenName(id) + "\n"
ken_id(cnt)=id //県IDを県名順に保存(listboxの順番と県IDをセットにする)
loop
*hajime
cls 0
onerror *jj ;エラーが出た場合飛ぶ
ken_index = 0
listbox ken_index,100,kenString
lb_ID = stat
hListbox = objinfo(stat, 2)
button gosub "購入", *check
pos 150,350
button "持ち物リスト",*cls5
stop
*cls5
cls 0
button "買い物",*hajime
pos 150,50
combox az,100,combdataX : lb_ID = stat
pos 150,150
combox bz,100,combdataZ : lb_ID = stat
pos 150,250
combox cz,100,combdataA : lb_ID = stat
stop
*check
notesel kenString
noteget getlist, ken_index
DDD = "購入済"
if getlist = DDD {
goto *check3
} else {
dialog getlist + "を購入しました。"
}
if ken_id(ken_index) < 10 {
notesel combdataX
noteadd Getlist
if ca_flag = 0 {
a = 0
ca_flag = 1
} else {
objprm lb_ID, combdataX
objprm lb_ID, 0
}
goto *check7}
if ken_id(ken_index) >= 10 & ken_id(ken_index) <= 25{
notesel combdataZ
noteadd Getlist
if cb_flag = 0 {
b = 0
cb_flag = 1
} else {
objprm lb_ID, combdataZ
objprm lb_ID, 0
}
goto *check7}
if ken_id(ken_index) > 26{
notesel combdataA
noteadd Getlist
if cc_flag = 0 {
c = 0
cc_flag = 1
} else {
objprm lb_ID, combdataA
objprm lb_ID, 0
}
goto *check7}
*check7
; 購入したアイテムに印をつける
notesel kenString
noteadd DDD, ken_index, 1
objprm lb_ID, kenString
objprm lb_ID, ken_index
return
*check3
; アイテムの頭に印があれば処理を中断
cstr = strmid(getlist, 0, 6) ;strmid(文字の取り出し),何文字目から,何文字(何バイト)
if cstr = DDD {
dialog DDD + "です" }
return
*jj

| |
|
2013/10/20(Sun) 23:03:31|NO.57710
> objprm lb_ID, combdataA
> objprm lb_ID, 0
lb_IDにはlistboxのIDが入ってるのに↑でlistboxの0が選択されて("持ち物リスト"を押すまでcomboxが作られていない)
> ; 購入したアイテムに印をつける
> notesel kenString
> noteadd DDD, ken_index, 1
ここのindexには0が入ってる
後onerrorは使わない方が良い
使うならエラー出た時に分かるようにしないといけない
今回の場合comboxの表示内容に文字列以外を使用してエラー出てるのに分からない
|
|
2013/11/3(Sun) 17:46:18|NO.57969
暇人さんお返事遅くなり申し訳ありません。
返答ありがとうございます。
まだ、私なりの答えが出ない状態です。
申し訳ありませんが、私の作ったスクリプトを利用して模範解答おねがいできないでしょうか?
後、いつも暇人さんの考えた答えが私の考えているものに近いと思い
個人的に相談してもよろしいでしょうか?
差し出がましいようで申し訳ありませんが、個人的に相談に乗らせていただきたいと思いますので、
よかったら e-mail
FFF2000DET@yahoo.co.jp
までご連絡ください。
以上、よろしくお願いいたします。
|
|
2013/11/3(Sun) 20:43:08|NO.57974
>私の作ったスクリプトを利用して模範解答
NO.57701のを、あまり変えずにやるなら
onerror *jj ;エラーが出た場合飛ぶ
iddat=2,3,7,13,10,6,9,41
kenString=""
repeat length(iddat)
id=iddat(cnt)
kenString+fun_GetKenName(id) + "\n"
ken_id(cnt)=id //県IDを県名順に保存(listboxの順番と県IDをセットにする)
loop
combdataX=""
combdataZ=""
combdataA=""
*hajime
cls 0
onerror *jj ;エラーが出た場合飛ぶ
ken_index = 0
listbox ken_index,100,kenString
lb_ID = stat
hListbox = objinfo(stat, 2)
button gosub "購入", *check
pos 150,350
button "持ち物リスト",*cls5
gosub *set_combox
stop
*cls5
cls 0
button "買い物",*hajime
gosub *set_combox
stop
*set_combox
if ca_flag {
pos 150,50
combox az,100,combdataX : ca_ID = stat
}
if cb_flag {
pos 150,150
combox bz,100,combdataZ : cb_ID = stat
}
if cc_flag {
pos 150,250
combox cz,100,combdataA : cc_ID = stat
}
return
*check
notesel kenString
noteget getlist, ken_index
DDD = "購入済"
if getlist = DDD {
goto *check3
} else {
dialog getlist + "を購入しました。"
}
if ken_id(ken_index) < 10 {
notesel combdataX
noteadd Getlist
if ca_flag = 0 {
a = 0
ca_flag = 1
pos 150,50
combox az,100,combdataX : ca_ID = stat
} else {
objprm ca_ID, combdataX
objprm ca_ID, 0
}
goto *check7
}
if ken_id(ken_index) >= 10 & ken_id(ken_index) <= 25{
notesel combdataZ
noteadd Getlist
if cb_flag = 0 {
b = 0
cb_flag = 1
pos 150,150
combox bz,100,combdataZ : cb_ID = stat
} else {
objprm cb_ID, combdataZ
objprm cb_ID, 0
}
goto *check7
}
if ken_id(ken_index) > 26{
notesel combdataA
noteadd Getlist
if cc_flag = 0 {
c = 0
cc_flag = 1
pos 150,250
combox cz,100,combdataA : cc_ID = stat
} else {
objprm cc_ID, combdataA
objprm cc_ID, 0
}
goto *check7
}
*check7
; 購入したアイテムに印をつける
notesel kenString
noteadd DDD, ken_index, 1
objprm lb_ID, kenString
objprm lb_ID, ken_index
return
*check3
; アイテムの頭に印があれば処理を中断
cstr = strmid(getlist, 0, 6) ;strmid(文字の取り出し),何文字目から,何文字(何バイト)
if cstr = DDD {
dialog DDD + "です" }
return
*jj
dialog "エラー番号("+wparam+")\nエラー発生行番号("+lparam+")"
end
>個人的に相談してもよろしいでしょうか?
申し訳ないけどメールでのやりとりは色々面倒なので・・・
自分の場合この掲示板で質問とメールで質問のレスポンスは変らないと思う・・・

| |
|
2013/11/4(Mon) 21:38:52|NO.57986
暇人さん
早速の回答ありがとうございました。
これを理解して次のステップに進みたいと思います。
後、メールの件ですが、実はどうしてもHSPで作成してみたいゲームがあり
自分では力不足なためご協力していただきたい思いで記載しました。
今は、隠しておきたい案があるのでメールで個人的に話そうとしました。
度々すみませんが、よかったらメールお願いいたします。
|
|
2013/11/4(Mon) 23:28:57|NO.57988
こういう方法もある
#module
#defcfunc fun_GetKenName int ken_id
if kens=0 {//fun_GetKenNameの度に県名入れるのは無駄なので
sdim kens;
kens(0) = "北海道","青森県","岩手県","宮城県","秋田県"
kens(5) = "山形県","福島県","茨城県","栃木県","群馬県"
kens(10) = "埼玉県","千葉県","東京都","神奈川県","新潟県"
kens(15) = "富山県","石川県","福井県","山梨県","長野県"
kens(20) = "岐阜県","静岡県","愛知県","三重県","滋賀県"
kens(25) = "京都府","大阪府","兵庫県","奈良県","和歌山県"
kens(30) = "鳥取県","島根県","岡山県","広島県","山口県"
kens(35) = "徳島県","香川県","愛媛県","高知県","福岡県"
kens(40) = "佐賀県","長崎県","熊本県","大分県","宮崎県"
kens(45) = "鹿児島県","沖縄県"
//県タイプを設定
repeat 10 //0~9
Ken_type(cnt)=0
loop
repeat 16,10 //10~25
Ken_type(cnt)=1
loop
repeat 21,26 //26~46
Ken_type(cnt)=2
loop
}
ken_name = kens(ken_id)
return ken_name
//県ID指定して県タイプを取得
#defcfunc fun_GetKenType int ken_id
return Ken_type(ken_id)
//県名指定して県IDを取得
//見つからなければ-1
#defcfunc fun_GetKenID str kenname
id=-1
repeat length(kens)
if kenname=kens(cnt) {id=cnt:break}
loop
return id
#global
onerror *jj ;エラーが出た場合飛ぶ
iddat=2,3,7,13,10,6,9,41
kenString=""
repeat length(iddat)
id=iddat(cnt)
kenString+fun_GetKenName(id) + "\n"
ken_id(cnt)=id //県IDを県名順に保存(listboxの順番と県IDをセットにする)
loop
sdim combdata,64,3
cb_px=150,150,150 //タイプ別combox表示位置
cb_py=50,150,250
dim combox_ID,3
dim comb_index,3
dim combox_flag,3
*hajime
cls 0
onerror *jj ;エラーが出た場合飛ぶ
ken_index = 0
listbox ken_index,100,kenString
lb_ID = stat
hListbox = objinfo(stat, 2)
button gosub "購入", *check
pos 150,350
button "持ち物リスト",*cls5
gosub *set_combox
stop
*cls5
cls 0
button "買い物",*hajime
gosub *set_combox
stop
*set_combox
repeat 3
if combox_flag(cnt) {
pos cb_px(cnt),cb_py(cnt)
combox comb_index(cnt),100,combdata(cnt) : combox_ID(cnt) = stat
}
loop
return
*check
notesel kenString
noteget getlist, ken_index
DDD = "購入済"
if getlist = DDD {
; アイテムの頭に印があれば処理を中断
cstr = strmid(getlist, 0, 6) ;strmid(文字の取り出し),何文字目から,何文字(何バイト)
if cstr = DDD {
dialog DDD + "です" }
return
} else {
dialog getlist + "を購入しました。"
}
id=ken_id(ken_index)
type=fun_GetKenType(id)
notesel combdata(type)
noteadd Getlist
if combox_flag(type) = 0 {
combox_flag(type) = 1
pos cb_px(type),cb_py(type)
combox comb_index(type),100,combdata(type) : combox_ID(type) = stat
}else {
objprm combox_ID(type), combdata(type)
objprm combox_ID(type), 0
}
; 購入したアイテムに印をつける
notesel kenString
noteadd DDD, ken_index, 1
objprm lb_ID, kenString
objprm lb_ID, ken_index
return
*jj
dialog "エラー番号("+wparam+")\nエラー発生行番号("+lparam+")"
end
最初に県IDにタイプを設定してしまえば比較して振り分ける必要は無くなるって方法
>今は、隠しておきたい案があるのでメールで個人的に話そうとしました。
ゲームアイディア部分は上手くぼかして質問したりは出来ると思う
それと一人の考えだけ聞いてると、もっと良い方法があっても知る事が難しくなるのと
私が答えられない問題だった場合結局外で質問することになり隠す意味は無くなる

| |
|
2013/11/5(Tue) 20:24:09|NO.57991
一見独創的に見えるゲームでも、本質は他のゲームとあまり変わらない。
例えば、独自の戦闘システムが売りのRPGでも、
ダメージ計算、キャラクターの行動、経験値の処理等は普通のRPGとはあまり変わらず、
ある特定の一部分だけ(例えばキャラクターが行動するにはバーが溜まらないといけない等)
変化させてあるだけで、完全なるオリジナルというのはもう存在しないと思う。
あくまで俺個人の意見だが。
自分のゲームの独自の部分をしっかり理解していれば、
ゲームシステムのどこをぼかして質問すればいいのかが分かるはず。
|
|