プレイ日記
マミムメモンスターの主人公の所持金システム用に お金を使ったゲームを作ろうとしたけど何故かできない…プログラム内を見ればわかる人はわかるかと… なぜあれでできないのか自分でもわかりませんT_T お小遣いを貰いますか?と聞いているくせに強制的に貰わされたり、店の商品が絶対に買えなかったり…
6そうだね
プレイ済み
返信[1]
親投稿
otta777 otta777a
お小遣いを貰わないを選んでもお小遣いを強制的に渡されてしまうのは 戻り値のチェックが上手く出来てないからです。 DIALOG関数で選択タイプを指定した場合の戻り値は左ボタンの場合は -1で右ボタンの場合は1です。 店の商品を買う処理がうまくいかない(いいえを押してもはいを押しても プログラムが終了する)のはDIALOG関数の戻り値のチェックが正しく 行われていないのと実際に商品を買う部分のプログラムが未完成だから です。@KAU以降の処理に自分の所持金と商品の価格を比較して 所持金が商品の金額以上の場合に購入。不足の場合は所持金が 足らないことをプレイヤーに告知し商品の選択に戻る処理が欲しいですね。
1そうだね
プレイ済み
返信[2]
親投稿
商品を買う処理が作られてないのは「まず商品を買う処理をするラベルに行くプログラム」ができてないから作ってないだけです。@KAUがその商品を買うプログラムの予定なのですが…
1そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
まずはダイアログ関数の戻り値を正しく判別してお小遣いを貰うか否かを 出来るようにするのと、商品を買う場合に@KAUまで実行できるように した方がいいですね。商品を買う処理はそれが出来てからでしょうか。 1つずつ問題を解決していった方が案外早く進むものですよ。
1そうだね
プレイ済み
返信[4]
親投稿
(ファイルサイズが鎌倉幕府なのに気づいてしまった)
1そうだね
プレイ済み
返信[5]
親投稿
おこづかいが問題なく貰う・貰わないの動作をしました。ありがとうございます。 しかし、買うのはこれではだめなのか… DIALOGに「""+NEDAN+""」と書くとエラーになるから、$をつけてエラーにならないようにして、NEDAN$=NEDANで同じにしようとしたのにエラー…
1そうだね
プレイ済み
返信[6]
親投稿
Y押したらNULLが売ってた (NULL…ここでは空文字の意)
2そうだね
プレイ済み
返信[7]
親投稿
STR$() 数値の文字列化
2そうだね
プレイ済み
返信[8]
親投稿
(あ、値段を数値にしたほうがいいんじゃない?)
2そうだね
プレイ済み
返信[9]
親投稿
otta777 otta777a
数値を文字列に変換する関数があります。 STR$(数値)とすると文字列に変換されます。 A$=STR$(B) とすると変数Bの内容が数字の文字列としてA$に代入されます。 詳しくはSTR$のヘルプを参照して下さい。
2そうだね
プレイ済み
返信[10]
親投稿
あと1歩! 「所持金-商品の値段」を自動的に行うには… そして、残った所持金をPRINTするには…
1そうだね
プレイ済み
返信[11]
親投稿
A=A-B 'AをB減らす DEC A,B '同じ
1そうだね
プレイ済み
返信[12]
親投稿
所持金-値段 150円の「くさったなまにく」→所持金-50円 「かあさんのカレー」→くさったなまにく同様マイナス 50円の「なにかのせつめいしょ」→何故か所持金が100円から500円に ※DEC KANE,NEDANでも同じ結果が出ました。
0そうだね
プレイ済み
返信[13]
親投稿
比較のところは数値にしないと。 38行目 左辺は金じゃない?
1そうだね
プレイ済み
返信[14]
親投稿
otta777 otta777a
まず本来は所持金が足らなくて買えないはずのアイテムが買う処理に 移ってしまう現象ですが 所持金とアイテムの価格を比較している部分の不等号が逆なのと 文字変数で比較しているために正しく判別出来ません。 所持金がアイテムの価格より多くないと買えないですよね? 数値の大小は数値変数で比較して下さい。 【例】 IF "9">"1000" THEN PRINT "9は1000よりおおきい" IF 9>1000 THEN PRINT "9は1000よりおおきい" それぞれの結果が違うことを確認してみて下さい。
2そうだね
プレイ済み
返信[15]
親投稿
otta777 otta777a
50円のアイテムを購入後にLOCATE命令で表示位置を指定して 自分の金を表示していますが、以前100と表示されて居るところに 50と上書きしているので結果として500と見えてしまっています。 STR$関数には桁を指定して右詰で文字列を生成する機能があります。 その機能を使って金額を表示してみて下さい。 詳しくはSTR$関数のヘルプを参照して下さい。
1そうだね
プレイ済み
返信[16]
親投稿
くさったなまにくとかあさんのカレーは所持金が足りなくて買えなくなった。 しかし、50円のなにかのせつめいしょを買うと、100円あるのに所持金が0円になってしまいました。
1そうだね
プレイ済み
返信[17]
親投稿
値段から所持金を引く …なんでやねん
2そうだね
プレイ済み
返信[18]
親投稿
otta777 otta777a
買い物の後に所持金が0と表示されるのは自分の金の表示に 変数KANEではなく変数GOUKEIを使っているためですね。 変数名とその内容が分かる一覧表を作るなどしたほうがいいかもしれませんね。
0そうだね
プレイ済み
返信[19]
親投稿
所持金の表示が変わらない…
0そうだね
プレイ済み
返信[20]
親投稿
nobu divine-creator
今回の話題に役立ちそうな作品を、にくさんが公開しています! そこはかとなく色っぽいおねいさんのアイテム屋 公開キー【C3283XJF】 この作品は、所持金が足りない場合にセリフが変わったり、いろいろな状況に応じて店員のセリフが変わったりと、細かい工夫がされています♪ たぶん、そこに何らかのヒントが含まれているのではないでしょうか?
1そうだね
プレイ済み
返信[21]
親投稿
変数表です.
0そうだね
プレイ済み
返信[22]
親投稿
otta777 otta777a
@KOUNYUで所持金の計算をしているのは数値変数のKANEですよね。 その後KANE$の内容は操作していないので所持金の計算をする前の KANEを文字列にした内容が入ったままになってるので所持金の表示が 変わらないという事です。 所持金の計算をして表示をする前にKANE$=STR$(KANE)を行って 現在の所持金に更新して下さい。 所持金の表示ですが、? "(省略)";KANEとすると桁が減ったときに正しく 表示されないのでSTR$(KANE,4)の様に右詰の文字列で表示した方が 良いかと思います。
0そうだね
プレイ済み
返信[23]
親投稿
とりあえず現在はこうなってます(公開キー)
0そうだね
プレイ済み
返信[24]
親投稿
otta777 otta777a
気になるところがあるとすれば所持金の表示の仕方が統一されて いないことでしょうか。 所持金を表示する部分をサブルーチンにして所持金を表示する時に GOSUB命令で呼び出すようにした方がいいかもしれません。 @KANE_HYOUJI KANE$=STR$(KANE,4) LOCATE 2,2:? "じぶんのかね:";KANE$ RETURN
0そうだね
プレイ済み
返信[25]
親投稿
GOSUB命令を使えよという場面はこれまでに何度もありましたが命令の使い方がわからなくて使えなかったんですよね…
0そうだね
プレイ済み
返信[26]
親投稿
otta777 otta777a
無理にGOSUB命令を使わなくても所持金の表示をして居る部分を 全て同じ表記に統一すれば問題無く動きますよ。 GOSUB~RETURN命令の使い方。一例を挙げておきます。 X=5:Y=3:C=13:MES$="1st" GOSUB @SUB X=10:Y=15:C=7:MES$="2nd" GOSUB @SUB END @SUB LOCATE X,Y:COLOR C:PRINT MES$;'位置指定、色指定、メッセージ表示 RETURN
0そうだね
プレイ済み