4壁式

アバター
もるも
記事: 54
登録日時: 8年前
連絡を取る:

4壁式

投稿記事 by もるも » 2年前

壁を塗るのが隣のマス目とちょくちょく間違えちゃったり。
ただ、設計がスマートにいかなかったので考え中。
タイルも画像ピクセルも座標があればいいのだけども、
壁だと1マスでさらに4方向のどれかという情報を持たせなくちゃいけなくて設計が使いまわせなくて
別でif文で分岐させてるがモヤモヤがとまらない。
良い感じかと思ってたが、応用が利かない時点で駄目駄目すぎる(;´Д`)
スクリーンショット (284).png
スクリーンショット (284).png (27.7 KiB) 閲覧数: 1914 回

アバター
いわん
記事: 30
登録日時: 8年前

Re: 4壁式

投稿記事 by いわん » 2年前

私は迷路のプログラムで壁の情報を保存するのに、ビットフィールドで持たせてます。
ただ、壁を挟んで両側の通路に同時に壁情報を設定しないといけないという問題があって
なにかうまい方法はないかなといろいろ考えたんですがいい案は思いつかず(-_-;)
C# だとビットフィールドも扱いやすいですね。

サンプルコード

CODE:

using System;

[Flags]
enum Wall : byte
{
    right = 0x01,   // 右の壁
    top = 0x02,     // 上の壁
    left = 0x04,    // 左の壁
    bottom = 0x08,  // 下の壁
}

class MazeWall
{
    static void Main()
    {
        Wall piece = Wall.right | Wall.bottom;
        if (piece.HasFlag(Wall.right))
        {
            Console.WriteLine("右に壁あり");
        }
        if (piece.HasFlag(Wall.top))
        {
            Console.WriteLine("上に壁あり");
        }
        if (piece.HasFlag(Wall.left))
        {
            Console.WriteLine("左に壁あり");
        }
        if (piece.HasFlag(Wall.bottom))
        {
            Console.WriteLine("下に壁あり");
        }
    }
}

アバター
もるも
記事: 54
登録日時: 8年前
連絡を取る:

Re: 4壁式

投稿記事 by もるも » 2年前

こ、これはビットに苦手意識を持っている場合ではないですねΣ(・ω・ノ)ノ!
解説見ても使い方にイメージが沸かなかったりしてましたが、
実際の使用例だと分かりやすいですね。
使ってみたいけど、壁の種類があるからうむむむむ・・・(;´Д`)

アバター
いわん
記事: 30
登録日時: 8年前

Re: 4壁式

投稿記事 by いわん » 2年前

もるも さんが書きました:
2年前
使ってみたいけど、壁の種類があるからうむむむむ・・・(;´Д`)
基本型が byte だと使えるビットフラグは8つまでですけど、
enum Wall : Int64
という様にすれば最大64個までビットフラグを定義できますよ。

アバター
もるも
記事: 54
登録日時: 8年前
連絡を取る:

Re: 4壁式

投稿記事 by もるも » 2年前

長さも選べるんですね~ビットと言えば8ビットと凝り固まってました(笑)