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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0929
けんcls か clrobj それともほかの方法?13解決


けん

リンク

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にタイプを設定してしまえば比較して振り分ける必要は無くなるって方法

>今は、隠しておきたい案があるのでメールで個人的に話そうとしました。
ゲームアイディア部分は上手くぼかして質問したりは出来ると思う
それと一人の考えだけ聞いてると、もっと良い方法があっても知る事が難しくなるのと
私が答えられない問題だった場合結局外で質問することになり隠す意味は無くなる



check

リンク

2013/11/5(Tue) 20:24:09|NO.57991

一見独創的に見えるゲームでも、本質は他のゲームとあまり変わらない。

例えば、独自の戦闘システムが売りのRPGでも、
ダメージ計算、キャラクターの行動、経験値の処理等は普通のRPGとはあまり変わらず、
ある特定の一部分だけ(例えばキャラクターが行動するにはバーが溜まらないといけない等)
変化させてあるだけで、完全なるオリジナルというのはもう存在しないと思う。

あくまで俺個人の意見だが。

自分のゲームの独自の部分をしっかり理解していれば、
ゲームシステムのどこをぼかして質問すればいいのかが分かるはず。



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