みゆにゃんぶろぐ

ゲーム(開発)/カラオケ/サイクリング/コーヒーの話題多め。最近は不定期更新。なるべく毎週更新したい

11月24日

昨日今日と時間があったから、作品作りをしていた。現状は完成度50%くらいだと思う

12月の学内コンペに間に合うか激しく不安……(笑)

 

std::function

久々のプログラミングのメモ書き

作ってる作品の中にstd::functionを使う機会があったので、それについて書いていこうと思う

 

std::functionは関数アドレスを入れることができるオブジェクトである。関数ポインタみたいなものである

 

関数ポインタとは、いわば普通の変数にアドレスがあるように関数にもアドレスがあって、それを入れることができるポインタ変数のことである

関数名に()をつけるとその関数を実行するけど、関数名だけだとその関数のアドレスになる

関数ポインタの宣言方法は「(戻り値の型)(*関数ポインタ変数名)(引数の型、引数の型...)」となる。宣言した関数ポインタは、戻り値の方と引数の型と個数が一致する関数のみしか代入できない

実行するときは「関数ポインタ変数名();」で実行できる。上の場合だと「pfunc(10);」で実行できる。変数に()をつけられるのは、初めて見るときは不思議に見えるかもしれない

C++の標準関数でbsearch(探索)やqsort(ソート)を使用するときに、引数に関数ポインタを指定する必要があるので、覚えておくといいかも

 

ここで本題(笑)

さっきも書いたけど、std::functionは関数アドレスを入れることができるオブジェクトである。代入方法が色んなパターンがある

あ、std::functionを使うときは「#include <functional>」必須

書き方は「std::function<(戻り値の型<引数の型、引数の型...>) (オブジェクト名)」になる。個人的には関数ポインタよりもわかりやすい気がする。こっちのほうが使い慣れてるからかもしれない(笑)

関数ポインタと同じで、戻り値の型と引数の型と個数が一致していないと代入できない

ちなみに、関数ポインタではラムダ式は代入できない。これは大きなポイントだと思う

 

自分が今回悩んだのは、クラスのメンバ関数の中でstd::functionに同じクラスの別のメンバ関数のアドレスを代入しようと思ったときである

素直に関数アドレスを入れるとエラーになる。これがどうしてエラーになるのかはわからない……

これでしばらく悩んでいたけど、解決方法が判明した

最初にラムダ式で包む方法を思いついて、やってみたらできた。でもわざわざラムダ式で包むのは煩わしいし、なんか違う気がすると思った

bindの方法はTwitterで友だちからアドバイスをもらったので、調べてみたらできた。個人的にはこっちのほうがしっくり来たので、こっちのほうを採用した

 

std::functionを知ってると便利なことがたくさんあるので、もし使う機会があれば使ってみるといいと思う

11月10日

11月になってもう10日。早い

12月中には今作ってる作品を完成させたいけど、できるかなぁ……

 

紅葉サイクリング

先週の日曜日、久々に彼氏さんと長距離のサイクリングをした

今回は彼氏さんの家→香嵐渓の間を走った。往復で約60kmくらいだった気がする

 

彼氏さんの家を出発し、しばらくのんびり走り、途中から猿投グリーンロードへ入った。猿投グリーンロードは車両だと有料だけど、自転車は無料で走ることができる。しかも、車両と自転車道路は区切られていて走りやすい……と思っていたけど、突入していきなり坂が続いた。この坂がだいぶ長くて、登ってる時は意地になっていた(笑)

登り坂が終わって今度は下り坂になったけど、これも長くて速度も速くて、ブレーキをかけるのがとても大変で指がとても痛くなった

f:id:clover_0907:20171110212939j:plain f:id:clover_0907:20171110212956j:plain

途中、休憩場所があったのでそこで休憩。この時点で自分は坂を登って足が疲れたのと、坂を下ってブレーキかけて指が疲れて、とにかく疲れていた。けど、すぐに回復した(笑)

休憩して少し走って、グリーンロードを下りた

そこから5kmくらい走ったら香嵐渓に到着した。片道所要時間は2時間ほど

f:id:clover_0907:20171110215003j:plain f:id:clover_0907:20171110215023j:plain

去年も同じ日(偶然)に香嵐渓に行ったけど、去年に比べて今年は紅葉率が高い気がした。去年はほとんど緑だったからなぁ……(笑)

f:id:clover_0907:20171110215153j:plain

こっそり彼氏さん撮った(笑)

 

香嵐渓では紅葉を見て、ご飯を食べてそれからすぐに帰った。帰るといっても来た道を戻っただけ

しかし、来た時に苦労したグリーンロードをまた登らないといけないわけで、帰り道は意地を通り越して何も考えずに無の状態で登っていた。しかも、初めてギアをこれ以上軽くできないのを経験してしまい、時速8kmくらいで登っていた(笑)

必死に登ってる途中で後ろからベルを鳴らされたので、後ろに誰か来ているんだなと思って道を譲ったら、ささっと青い服の男の人が通って「がんばって~」と余裕そうに声をかけて自分を抜いた。自分は登るだけで精一杯なのに、なんであんなに余裕そうにささっと坂を登れるんだ……とその時思った

1度も足を着かないで坂は登った。坂を登り切ったとき、急に安心したからか、足がすごく震えていた(笑)

 

今回サイクリングで、坂を登るのがあまりに遅すぎて、それが悔しかった

なので、坂を速く楽に登れるようになりたいと思った

11月1日

11月になった。今年もあと2ヶ月。早い……

なんか毎年11月になると、今年もあと少しだと実感する。あと、世間は一気にクリスマスモードに切り替わる気がする

 

体調管理

ここ2週間くらい、勉強や制作のモチベーションはあるのに身体がだるいことが続いていた。だるいというか、前に比べて疲れやすくなったような感じがする

基本的に身体をしっかり休めば次の日は大体調子いいけど、ここ最近は身体を休めてもだるい状態が続いていた

そして先週の土曜日にはのどが痛くなって、ついには風邪をひいてしまった

当初はただのどが痛いだけだから扁桃腺炎かなぁと思ってたけど、病院に行ったら風邪だった。両方とも症状が似てるから区別しにくい……

病院で口と鼻にぷしゅーっと薬をかけられ、飲む薬もたくさんもらって飲んだら、次の日にはあっという間によくなった

 

けど、体調が悪くてバイトは2日連続、学校は1日休んでしまった

学校はまぁいいとして、バイトを休むとまわりに迷惑をかけてしまうから、体調管理にはしっかり気をつけないとなと改めて思った

 

そこで、体調管理で気をつけたほうがいいことを、調べながら自分なりにまとめてみようと思う

 

〇質のいい睡眠をとる

睡眠時間が長ければそれでいいというわけではなくて、質のいい睡眠をとることが大事。そうすれば、睡眠時間は多少短くても大丈夫

質のいい睡眠をとるには、

・寝る30分前はスマホやPCなどの画面を見ない。脳が刺激されて興奮して質が悪くなる

・寝る前にたばこ、お酒はやめる

・寝るときはリラックスする。次の日が面接とかで緊張してたら寝れないので、リラックス。緊張のあまり眠れそうになかったら、香りでリラックスるさせたりするといいかも

などなど

 

〇食事

食事は栄養バランスのいい食事を心がけたほうがいい。そんなことをいう自分だけど、普段栄養バランス全く考えてない……。個人的に、栄養バランスのいい食事とかを選ぼうとすると、「必然と品数が多くなる=そんなお金ないよ」となる。サプリメントとかで栄養摂ったほうがいいのかなぁ、むむむ……。個人的にはサプリメントよりも、野菜とかの食べ物で摂りたい派なんだよなぁ、でもそれはお金が(以下略)

 

〇手洗い、うがいの徹底

外から帰ってきたとき、自分は手洗いはしてるけど、うがいは習慣になってなかった。だからのどを痛めてしまったのか……(わからないけど)

手洗いのついでにうがいも習慣化しよう

外出するときは、菌をもらわないようにマスクをするのもひとつの手だとは思うけど、個人的にはマスクはあまり好きじゃないので、病気の時以外はしない

 

〇ストレスを適度に発散

これが一番大事なんじゃないかと思う。病気の原因を見てても、ほとんどストレスが原因のひとつと書いてあることが多い

自分は普段、ストレスを抱えてるつもりはないけど、もし抱えてたとしても適度に発散してるとは思うけど、ただ意識してないだけで、ほんとは小さなことでもストレスを抱えてる可能性が高いんじゃないかと思う。平日は学校とバイトでほとんど自分の好きなことできてないし、休日はバイトだったり、バイトが休みだったら彼氏さんと遊ぶけど、思えば1人でのんびり好きなことをやる時間が今はないな……。長期の休みのときは時間があって暇だったのに極端だなぁ(笑)

 

以上

日ごろから体調には気をつけて、いざというときに体調を崩さないように気をつけよう

10月13日

最近、気温差が激しいからかなんなのか理由はわからないけど、身体がだるい。体調が悪い。体調管理はしっかりしないとなぁ……

 

ナラタージュ

ナラタージュ (角川文庫)

ナラタージュ (角川文庫)

 

何かの映画を見てるときに、映画のナラタージュの予告を見て面白そうだなと思い、原作を読んだ。2週間ほどで読み終わった

読み終わったときの感想としては、なんだか報われないなと思った。思いを寄せていても一緒にいられない気持ちは自分も経験したことがあるから、感情移入できる分とてもつらいものがあった。結局は離れて思い出となったとしても、何かのきっかけで彼のことを思い出して痛むのはつらいなぁ……

物語全体を通して、自分が過去に経験したことのあるような流れなので、共感できるところが多かった。さっきも書いたけど、思いを寄せていても一緒にいられなかったり、忘れられない人がいても別の誰かとつきあっても長続きしないし、結局その人のことを忘れられないところも、すごくわかる

読み終わった後に色々思うところがあって、しばらくぼーっとしたというなんとも言えない感情になった

 

原作を読み終えたところで、映画のほうを今日見てきた

基本的には原作に忠実な感じだけど、ところどころの場面や設定が抜けているので、原作のほうがよかったかなと思う。映画だけだと、葉山先生の気持ちわからないんじゃないかな。あと、最初と最後に出てくる人が誰なのかも、原作読んでないとわからないと思う

終盤の電車の場面は泣きそうになった。最近映画館で映画見ると、泣くことが多い……(笑)

個人的には、原作の1番最後の場面がなかったのが悲しかった

映画を見て面白かったら、原作を読むといいかも

10月5日

最近、1日の気温差が激しい。少し前までは暑かったのに、気づけば寒い

外に出れば金木犀の香りもするし、秋を感じる今日この頃

 

Game Scalar Jam

約2ヶ月続いた夏休みも終わり、先週から後期の授業が始まった

とはいえ、いきなり普通の授業が始まるわけではなくて、約2週間は集中授業という期間。ちなみに、前期はゲームジャムをやった

今回は、自分たちの学校に来ている海外の留学生の方と一緒になって「Game Scalar Jam」が行われた

テーマは「ツール」か「アルゴリズム」。ゲーム制作に役立ちそうなものを研究して発表しようというものだった。ゲームジャムじゃないからゲームを作らなくてもいい

今回、そのジャムで自分たちのチームは、銅賞をいただくことができた

f:id:clover_0907:20171005221322j:plain

ジャムの最終日に発表会が行われたとき、他のチームの発表を聴いているときに「あー、やっぱ3人チームは物量が多いしクオリティもすごいな」とか思っていたけど、そんな中2人チームの自分たちが銅賞をいただけたのは嬉しかった

 

今回、自分たちのチームが作ったのは2Dのマップエディタだった

f:id:clover_0907:20171005222856p:plain

マップエディタを作っているチームは他にもたくさんいたけど、自分たちのチームが評価されたのは、マップエディタの機能に加えて、ダンジョンの自動生成を入れたからだと思う

ダンジョンの自動生成はあくまで補助的な機能として入れたので、アルゴリズムは「穴掘り法」というものを採用した。穴掘り法は1本道しか作れないけど、とても簡単に実装できるので、今回はこれを採用した

個人的に1番頑張ったのは、ダイアログを自作したことだった

f:id:clover_0907:20171005224341p:plain

ダイアログもウィンドウの一種だからダイアログ用にウィンドウプロシージャを用意しないといけないらしくて、そこを苦労した。以前からWindowsプログラミングを軽くかじってたから理解できたけど、たぶんかじってなかったら今回は自作ダイアログを実装することはできなかっただろうなと思う

 

全体的な感想としては、自分自身としてはツールを作るのは2回目だけど(入学する前に1度テキストエディタを作成したことがある)、ツールを作成するのは楽しいなと思う

ゲームを作るのとはまた違う楽しさだけど、個人的にはどちらかというと、ツールを作ったり拡張したりするのが向いているような気がする。もちろんゲームを作るのも楽しい。企画を考えるのはうーん……ってなるけど(笑)

技術的には、自動生成アルゴリズムを考えたり、ダイアログ作成を経験出来たり、今までやったことがないようなことができて、とても楽しかった