goo blog サービス終了のお知らせ 

星田オステオパシー

施術者は引退しちゃって美味しいバイト生活をしつつプログラミング学習とか自由研究をして野垂れ死ぬまでの備忘録

Racketで何かゲームらしきものをつくれ!004

2022-10-06 12:30:11 | プログラミング
 宿直夜のお楽しみ、Rakcetでゲームらしきものを作る。いや、本当に楽しみになってます。
 予定ではリストで無理やり進めるつもりだったんだけどCametanさんから構造体を再構築するためのやり方を教わったので方針変更、エレガントな構造を目指すぜ!

 敵の構造ですが、名前を入れることにしました。画像も入れるつもりだけど、そっちは最後のオマケみたいなもので十分なので後回しで(画像入れるとリストの見た目が長くなるしねぇ)

 ほいでモンスター構造体を全部入れたリストを作りまして(テキストエディタの置換機能便利です)・・あと、前にCametanさんがtransparentやっとけって話されてましたけど、ありがたみ分かりまくりです。

 Racketの構造体の個別フィールドへのアクセス方法をCametanさんのブログで確認させてもらいまして・・

 ページのバトルフラグが#tだった場合にページ数を引数として渡して登場する敵のリストを敵全部のリストから作る関数。オッケイ

 そして本日のメイン、バトル関数部分を。アドバイスを元に構造体タイプに戻しまして、アドバイスに従って計算部分のみに絞りました。それに伴って関数名もbattle-evalと。HPがゼロ以下になった場合の分岐はまだです(忘れてました)。

 結果・・実にスッキリとした見た目になった気がする。REPLって名前が良いなぁと思うのは、後はbattle-read battle-print battle-loop の3つを作ってリンクさせたら良いんですもんね。名前って大事だなぁ・・あとコンバトラーVのマシンみたいでカッコイイ。
 ちょっと迷うのは戦闘メッセージだけど、ダメージ発生時に表示するのが手軽だけど、やっぱり次のPrint部分で表示するべきか(数値を返せるように環境構造体にダメージデータを保存できるようにしておいたんですが)・・かな。

 勉強になったなぁ〜ってのは構造体を分解するとき、再構成する時に最初に(player とか (battle とか型名を宣言?するところですかね。これだけ忘れなかったらバッチリだな!

 と、ここで深夜1時となりまして終了。次回は残りのRPL部分を作っていくということで!