Hiragi(GKUTH)の日常
理系大学生の日記

初のゲームを作成する日記:03

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

初のゲームを作成する日記:03

投稿記事 by Hiragi(GKUTH) » 10年前

良く3回目まで続いたなと自分でも思います。 四回目は来るんでしょうか。
とりあえずゲームシステムとしての基盤が見えてきた気がします。基本的な設計が完了し(正しい(効率的である)とは言っていない)
必要な処理をぶん投げてブロック崩しっぽい見た目になってきました。 コメントはいっぱいつけた。マジックナンバー? しらんな。これから減らしていきます()
やはりあたり判定回りがすっきりしない設計。Blocks_tのUpdateで結局なんもやってないし。 全部FieldのUpdateに投げてる、でも処理を二回に分けると効率が悪いっていうか...
どうしたこった。

それと矩形対円のあたり判定はそれっぽくしてますけど...なんというか、とんでもなくめり込みやすそうなコードです。つか普通にめり込みます。
どうやんのかさっぱり...
そのほかの処理も現時点では動けばいい主義なので適当な部分が多いです。

これからスコア機能とかボールの挙動を変えたりとかタイトル画面であるとか...そういうのを追加していくんですかね。
オブジェクト指向とかいってるけど拡張性皆無だよこのコード...
突っ込んでください(切実) コピペで動きます。
► スポイラーを表示
最後に編集したユーザー Hiragi(GKUTH) on 2015年3月26日(木) 19:06 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 14年前

RE: 初のゲームを作成する日記:03

投稿記事 by みけCAT » 10年前

Field_tクラスのコンストラクタでnewを用いて確保されたオブジェクトが、
deleteで開放されていないのはまずい気がします。

また、Blocks_tクラスの宣言において
  • C++では、素直に

    CODE:

    	struct Block
    	{
    		int x;
    		int y;
    		int color;
    		bool isThere;
    		bool isHit;
    	};
    と書いても(ほぼ)同じように使えます。なぜわざわざtypedefしているのでしょうか?
  • なぜblock_x、block_y、blocksize_x、blocksize_y、spaceをstaticにするより、
    マジックナンバーを利用する方を選んだのでしょうか?どうせconstなのでほぼ同じではないでしょうか?
最後に編集したユーザー Hiragi(GKUTH) on 2015年3月27日(金) 19:30 [ 編集 2 回目 ]

アバター
usao
記事: 1889
登録日時: 12年前

Re: 初のゲームを作成する日記:03

投稿記事 by usao » 10年前

「ブロック崩し」 の 「ブロック」とは何か?
ブロック=玉をぶつけられて消えていく個々の四角形のこと だと思って生きてきたけど,唐突に違和感に襲われました.
「崩す」っていうのは,なんかこう…もっとぼろぼろにしていくというか,そういうことなんじゃなかろうか…
玉を当てたら消える…これは崩壊ではなく唐突な消滅だ.その程度の行為を「崩す」って呼ぶんじゃねぇよ的な,ふさわしくない感.

ひょっとして,
四角形の集合体:塊 を指して「ブロック」なのではないだろうか.
それなら 「ブロック」を徐々に破壊していく行為を「崩す」と表現することになり,何やらしっくりくるではないか.

…といった感じなんですけど,このもやもや感をどうすれば良いのでしょうか.
場合によっては, Blocks_t という名称は間違っているということにもなりかねない,重大な事柄かと思うのですが.

ISLe
記事: 2650
登録日時: 14年前

Re: 初のゲームを作成する日記:03

投稿記事 by ISLe » 10年前

ブロック崩しは日本人が考えた造語で、ブレイクアウトというのが原題ですね。
囚人が刑務所の壁を壊して脱獄する、という意味だそうです。

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

Re: 初のゲームを作成する日記:03

投稿記事 by Hiragi(GKUTH) » 10年前

usao さんが書きました:「ブロック崩し」 の 「ブロック」とは何か?
ブロック=玉をぶつけられて消えていく個々の四角形のこと だと思って生きてきたけど,唐突に違和感に襲われました.
「崩す」っていうのは,なんかこう…もっとぼろぼろにしていくというか,そういうことなんじゃなかろうか…
玉を当てたら消える…これは崩壊ではなく唐突な消滅だ.その程度の行為を「崩す」って呼ぶんじゃねぇよ的な,ふさわしくない感.

ひょっとして,
四角形の集合体:塊 を指して「ブロック」なのではないだろうか.
それなら 「ブロック」を徐々に破壊していく行為を「崩す」と表現することになり,何やらしっくりくるではないか.

…といった感じなんですけど,このもやもや感をどうすれば良いのでしょうか.
場合によっては, Blocks_t という名称は間違っているということにもなりかねない,重大な事柄かと思うのですが.
確かにBlocks_tという中のblockが消滅しているような感じですね、一つの大きなブロックであるものを「崩す」のであれば一つの大きなブロックは何で
構成されているのでしょう、当たったところが「崩れる」のであれば真四角になんて崩れるわけがありません、あぁ、或はマリオのブロックのように複数のレンガが
セメントによって固定されたものを崩していくという表現が近いか、とも思いました。であれば崩すのはレンガでできた大きな「壁」でしょうか、
レンガで構成された壁を崩す、それがブロック崩しなのかもしれません、
パーティクル崩しを思い出しますね、

であればWall_tを作り、その中にblockがあると考えると良いかもしれません。
ただし最近のブロック崩しってのは個々がわかれている例も良く見ます。 それなりに大きな括りであるのかも...

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

RE: 初のゲームを作成する日記:03

投稿記事 by Hiragi(GKUTH) » 10年前

みけCAT さんが書きました:Field_tクラスのコンストラクタでnewを用いて確保されたオブジェクトが、
deleteで開放されていないのはまずい気がします。

また、Blocks_tクラスの宣言において
  • C++では、素直に

    CODE:

    	struct Block
    	{
    		int x;
    		int y;
    		int color;
    		bool isThere;
    		bool isHit;
    	};
    と書いても(ほぼ)同じように使えます。なぜわざわざtypedefしているのでしょうか?
  • なぜblock_x、block_y、blocksize_x、blocksize_y、spaceをstaticにするより、
    マジックナンバーを利用する方を選んだのでしょうか?どうせconstなのでほぼ同じではないでしょうか?

構造体に関しては単なる癖ですね、直します。
staticな変数、というものを今はじめて見ました、まだそこらへんの話を理解できるだけの知識がないのでもうしばらくお待ちください。
マジックナンバーを利用するというものが具体的に何を表すのか、staticか否かによって何が変わるのか、ちょいと勉強してきます。

deleteしてないのはマズかったですね、そういえばnewで作った奴はdeleteしないといけないんだった。。。

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

Re: 初のゲームを作成する日記:03

投稿記事 by Hiragi(GKUTH) » 10年前

ISLe さんが書きました:ブロック崩しは日本人が考えた造語で、ブレイクアウトというのが原題ですね。
囚人が刑務所の壁を壊して脱獄する、という意味だそうです。
テトリスやテニスといった昔からありそうなゲームですね

アバター
usao
記事: 1889
登録日時: 12年前

Re: 初のゲームを作成する日記:03

投稿記事 by usao » 10年前

>壁

「ブロック塀崩し」とか捉えた場合,個々の構成要素のことを「ブロック」と呼ぶのかもしれない…!
それならば
>Blocks_tという中のblock
で圧倒的に正しい!