多趣味まるの日常

跡取り息子を辞めたスーパー多趣味人間の日常や便利アイテムの紹介

C#でドラクエ風戦闘システムの作成をしている話

こんにちは。まるです。

 

 

昨日は小学校のころからの幼馴染にC#を教えました。

 

 

21時から2時間の予定でしたが日付が変わってもしばらく続いたので今すごく眠たいですorz

 

 

タイトルの件ですが、最近C#のMVPを復習するためにドラクエ風戦闘システムの作成を行っております。

 

 

初代ドラゴンクエストって64KBしかなかったんですって。

 

 

そのへんの写真データ一枚よりはるかに小さい(写真は1MB~5MB)なんて驚きですよね。

 

 

そういうこともあって正直始める前は舐めておりました。

 

 

ちょこちょこっとMVPの復習したらいいところで終えて、別の勉強をするつもりでした。

 

 

しかし悪い癖が出てしまいまして、作りだしたらしっかり作ってみたくなってしまい、泥沼の様相を呈しておる今日この頃です。

 

 

なにが泥沼かというと、実はシステム的にはもうほぼ完成しているのですが、

 

 

・対局時計を作った時は問題なかったDirectXAudioでの再生ができなくなった(フリーズしてしまう)。

 

・敵を攻撃した際のGIFの再生が思ったようにいかない。

 

この上記2点。

 

 

はい、全くコード関係ありませんorz

 

 

DirectXAudioに関してはコードが関係ないこともないのですが、戦闘システムをMVPで作るということからは直接関係ありませんorz

 

 

ただ先ほども書いた悪い癖。とくに対局時計の時はうまくいっていたのに今回何故かフリーズしてしまうのが納得いかず、沼にはまっております。

 

 

なんでこんなことが起きるのかなと考えると、対局時計と今回の違いは、

 

 

async await Task

 

をつかってコードを書いているというところでしょうか。

 

 

とはいえAudio再生の部分に関しては関係していないのでなんでこんなことが起こるのかなと不思議でなりません。

 

 

Taskで読んだものはなにかコードでしっかり中断とかかないと継続されてしまっているんでしょうかね?

 

 

ともあれ今の自分にはさっぱりわからず途方に暮れております。

 

 

そのほかの部分で残っているものは、

 

・装備の実装

・素早さ判定をし、行動順を決定する(仕組みはできてる。あとは書くだけ)

・呪文の実装

・防御の実装(これはvirtualメソッドをクラスで持っているので呼び出すだけ)

・ステータス変化した際の対応(これもほぼ完成済みで書くだけ)

 

くらいでしょうか?

 

ほんとはこんなにやる必要もなかったのですが、楽しくなってしまったので地道にやっていきたいと思います。

 

 

とりあえず沼の二つは「わからない」分野なのでどうしようもない感じがしてますが、

 

残りの部分はただあと書くだけなので「めんどくさい」分野でして、脳内でほぼ完成しているのでもういいかという感じになってしまっているのは内緒です。

 

 

 

今回はがっつりプログラミングの専門的な話になってしまってつまらない内容だったかもしれませんが、たまにはこういうことも書いていこうかなと思ってます。

 

 

それではまた。

 

ねむぃ。。