メインプログラムのif (talk == 0) { talkdrow(); }の部分でtalk.hの中に書いてある関数 talkdrow()の中の変数talkの値が変わらないため画面が展開しません。そこでメインの変数をSeenに変えて実行すると変数talkがキーAにより上がりました。
ですが、talk == 1とtalk == 2の時の文字が描画されません。どうしたら描画されるでしょうか。
また、なぜメインプログラムの変数をSeenに編集したら変数talkがキーAによりちゃんと上がったのでしょうか。
というのも編集前のメインのtalkはヘッダファイルtalk.hの変数talkと同じなので、talk.hのtalkがキーAにより上がるとメインプログラムの変数talkも値を引き継いで上がった値を持つと思っていたためです。
最後に戦闘画面に移る際に最初の数秒間だけ自分と敵の画像が描画されないのですがどうしたらいいでしょうか。
以上2つの質問と1つの疑問ですが、どうかよろしくお願いいたします。
こちらがメインプログラムです。
https://pastebin.com/iy3mjPD9
こちらがplayer2.hです。
https://pastebin.com/P35NrEhy
こちらがkey.hです。
https://pastebin.com/pfXnBGad
こちらがtalk.hです。
https://pastebin.com/mV2cxcks
変数を編集したメインプログラム。
https://pastebin.com/rTn4bnMd
メインを編集したのでこちらも編集しました。
https://pastebin.com/i0prrkbe
関数を呼び出したが関数の中身がうまく機能しない
Re: 関数を呼び出したが関数の中身がうまく機能しない
これは本当ですか?
「メイン関数の中の変数talkの値が変わらないため画面が展開しません。」の間違いではないですか?
色の取得をグローバル変数の初期化時(→DxLib_Init()を呼ぶ前)ではなく
DxLib_Init()を呼んだ後にすることで、正しく色を取得できるようにすると、
描画される可能性が考えられます。
(ざっとコードを眺めただけなので、間違っているかもしれません)
「編集前のメインのtalk」はmain関数のローカル変数であり、同じ名前でもスコープが違う別の変数です。
Seenはmain関数内でローカル変数として定義されていないので、
「Seenに編集したら変数talkが」の「変数talk」がSeenのことであると仮定すれば、同じ変数を参照できたのでしょう。
ざっとコードを眺めただけではわかりませんでした。
後で詳しく見たいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 関数を呼び出したが関数の中身がうまく機能しない
ありがとうございます。
みけさんの意見を参考にメインプログラムとtalk.hを書き直しました。おかげで会話の部分が描画されました。
メインプログラムです。
https://pastebin.com/nz4eCsJj
talk.hです。
https://pastebin.com/PULuNpMU
ただまだ解決しない問題が二つあります。
一つはtalk = 2でstart = 1となるので200になるまで+1ずつされるように書いたのですが、なぜかtalk = 2の時はstartは1でtalk = 3の時にstartが200になるまで増えていきます。
二つ目はif (Seen == 1) よりSeenが1になったら戦闘が開始するのですが、開始する前から敵が移動してしまい綺麗に戦闘が始まりません。
どうしたらいいでしょうか。
みけさんの意見を参考にメインプログラムとtalk.hを書き直しました。おかげで会話の部分が描画されました。
メインプログラムです。
https://pastebin.com/nz4eCsJj
talk.hです。
https://pastebin.com/PULuNpMU
ただまだ解決しない問題が二つあります。
一つはtalk = 2でstart = 1となるので200になるまで+1ずつされるように書いたのですが、なぜかtalk = 2の時はstartは1でtalk = 3の時にstartが200になるまで増えていきます。
二つ目はif (Seen == 1) よりSeenが1になったら戦闘が開始するのですが、開始する前から敵が移動してしまい綺麗に戦闘が始まりません。
どうしたらいいでしょうか。