PC版のアリスギアアイギスがパワーアップしていたんだが。

最近リリースされたらしい。

今までは仮想環境にスマホをエミュレートしていた感じで動作していたのですが、

新しいクライアントソフトは完全にPC用に作られたものです。

まずホーム画面。

広い。

スマホの画面が横に二つ付いたような画面の広さ。

そして、待望の、ゲームパッド対応。

PC用のコントローラーで操作できます。

操作方法はこんな感じ。

キーバインドで配置を変更できます。

あと、左スティックで仮想カーソルを動かすこともできますが、マウスの方が早いので、戦闘以外はそちらの方が良いと思います。

それでは、白熱のバトルの様子をご覧ください。

これはもうスマホには戻れんわ。

ちょっと最近は放置気味だったけど頑張ってみるか。

あなたは3密を避けるという意味を間違えていないか?

昨日ニュースを見ていたら、とある、発信力のある方が

「パチンコは空調設備が整っているから換気が良いので、3密では無いから安全」

と言っているので、それに対して「待った!」と言いたい。

あなたは3密で無ければコロナに感染しないと思っているのではないか?

それは大きな間違い。

昨日の夕方の専門家が言っていた。

公園などに外出して、子連れのママ達が集まって会話した場合、換気は良いが、密集、密接しているので、飛沫感染する可能性はある、と。

パチンコ屋だって、人が一箇所に密集しているではないか。

3密のうち、一つでも密があると、感染するリスクは存在する。

密が重なると、感染する確率が高くなるだけ。

感染するリスクを0にするためには、3密を完全に排除するしか無い。

ついでに言っておくと、東京で感染経路が分からない人達は通勤電車の中で感染しているんじゃないかと思います。

会社の経営者は、電車以外の通勤手段を手配するとか、会社の近くにホテルを取るとかして、社員の安全を確保するために手を尽くさなければあとで大きなリスクを背負うことになりますよ。

【C#】【ALTSEED】【数独】ボタン作成

前回までの状況はこちら。

最新ソースはこちら(gitHub)

https://github.com/takishita2nd/sudokuGUI

処理を行うボタンを設置します。

作成するボタンは「解析開始」ボタンと、入力した数字を全部消去する「クリア」ボタンです。

まず、ボタンを配置するところから作ります。

ボタンを配置するためにボタン用のクラスを作成します。

しかし、すでに作成しているSquareObjectクラスと重複している部分があるので、新たにObjectBaseクラスを作成して、共通部分はこちらに書きます。

    class ObjectBase
    {
        protected int _x;
        protected int _y;
        protected asd.TextureObject2D _backTexture;
        protected asd.TextObject2D _valueText;
        protected int width;
        protected int height;

        public asd.TextureObject2D getBackTexture()
        {
            return _backTexture;
        }

        public asd.TextObject2D getTextObject()
        {
            return _valueText;
        }

        public bool isClick(asd.Vector2DF pos)
        {
            if (pos.X > _x && pos.X < _x + width
                && pos.Y > _y && pos.Y < _y + height)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

そして、SquareObjectクラスと新たに作成するボタンクラスはこのObjectBaseクラスを継承します。

SquareObjectの記載は省略します。gitHubのソースを参照してください。

    class Button : ObjectBase
    {
        private string _text;
        private const int fontOffsetX = 39;
        private const int fontOffsetY = 9;

        public Button(int x, int y, string text)
        {
            width = 256;
            height = 64;
            _x = x;
            _y = y;
            _text = text;

            _backTexture = new asd.TextureObject2D();
            _backTexture.Position = new asd.Vector2DF(_x, _y);

            _valueText = new asd.TextObject2D();
            _valueText.Text = _text;
            _valueText.Font = Resource.getTextFont();
            _valueText.Position = new asd.Vector2DF(_x + fontOffsetX, _y + fontOffsetY);
        }

        public void updateTexture(asd.Vector2DF pos)
        {
            if (pos.X > _x && pos.X < _x + width
                && pos.Y > _y && pos.Y < _y + height)
            {
                _backTexture.Texture = Resource.getButtonTexture();
            }
            else
            {
                _backTexture.Texture = null;
            }
        }

        public virtual void onClick(SquareObject[,] squareObjects)
        {
            throw new NotImplementedException();
        }
    }

onClick()にクリック時の処理を記載します。

実際はこのクラスを継承して使用するので、ここでは未実装Exceptionを投げて例外を発生させます。

このクラスを継承して、まずはクリア処理を作成します。

    class ClearButton : Button
    {
        public ClearButton() : base(600, 500, "クリア")
        {

        }

        public override void onClick(SquareObject[,] squareObjects)
        {
            for (int row = 0; row < 9; row++)
            {
                for (int col = 0; col < 9; col++)
                {
                    squareObjects[row, col].setValue(0);
                }
            }
        }
    }

これを使用して、処理を作成します。

            // ボタン
            Button clear = new ClearButton();
            asd.Engine.AddObject2D(clear.getBackTexture());
            asd.Engine.AddObject2D(clear.getTextObject());

            Button start = new Button(600, 570, "解析開始");
            asd.Engine.AddObject2D(start.getBackTexture());
            asd.Engine.AddObject2D(start.getTextObject());

            // Altseedが進行可能かチェックする。
            while (asd.Engine.DoEvents())
            {
                asd.Vector2DF pos = asd.Engine.Mouse.Position;
                if (!mouseHold)
                {
                    for (int row = 0; row < 9; row++)
                    {
                        for (int col = 0; col < 9; col++)
                        {
                            squareObjects[row, col].updateTexture(pos);
                        }
                    }
                    clear.updateTexture(pos);
                    start.updateTexture(pos);
                }
                else
                {
                    palette.updateTexture(pos);
                }

                if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
                {
                    if (mouseHold)
                    {
                        if (!palette.isClick(pos))
                        {
                            palette.hide();
                            mouseHold = false;
                        }
                        else
                        {
                            int value = palette.getClickValue(pos);
                            if(clickedSquareObject != null)
                            {
                                clickedSquareObject.setValue(value);
                                palette.hide();
                                mouseHold = false;
                            }
                        }
                    }
                    else
                    {
                        if (clear.isClick(pos))
                        {
                            clear.onClick(squareObjects);
                        }
                        else
                        {
                            mouseHold = true;
                            palette.show(pos);
                            for (int row = 0; row < 9; row++)
                            {
                                for (int col = 0; col < 9; col++)
                                {
                                    if (squareObjects[row, col].isClick(pos) == true)
                                    {
                                        clickedSquareObject = squareObjects[row, col];
                                    }
                                }
                            }
                        }
                    }
                }

                // Altseedを更新する。
                asd.Engine.Update();
            }

実行結果はこんな感じ。

次回は解析処理を実装していきます。