【C#】【ALTSEED】【数独】マウス操作をいろいろ

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

今回はマウス操作を試してみます。

マウスカーソルの位置をリアルタイムで表示、さらに左クリックするとその座標を表示する、という感じでやってみます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sudokuGUI
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Altseedを初期化する。
            asd.Engine.Initialize("数独解析ツール", 1000, 800, new asd.EngineOption());

            // 下地
            var background = new asd.GeometryObject2D();
            asd.Engine.AddObject2D(background);
            var bgRect = new asd.RectangleShape();
            bgRect.DrawingArea = new asd.RectF(0, 0, 1000, 800);
            background.Shape = bgRect;

            // テクスチャー
            asd.Texture2D texture = asd.Engine.Graphics.CreateTexture2D("squares.png");

            // マス
            int offsetX = 10;
            int offsetY = 10;
            var square = new asd.TextureObject2D();
            square.Position = new asd.Vector2DF(offsetX, offsetY);
            square.Texture = texture;
            asd.Engine.AddObject2D(square);

            int fontOffsetX = 19;
            int fontOffsetY = 9;
            var font = asd.Engine.Graphics.CreateFont("number.aff");
            var obj = new asd.TextObject2D();
            obj.Font = font;
            obj.Position = new asd.Vector2DF(offsetX + fontOffsetX, offsetY + fontOffsetY);
            obj.Text = "1";
            asd.Engine.AddObject2D(obj);

            var obj2 = new asd.TextObject2D();
            obj2.Font = font;
            obj2.Position = new asd.Vector2DF(64 + offsetX + fontOffsetX, 64 + offsetY + fontOffsetY);
            obj2.Text = "2";
            asd.Engine.AddObject2D(obj2);

            var mouseXText = new asd.TextObject2D();
            mouseXText.Position = new asd.Vector2DF(700, 600);
            mouseXText.Font = font;
            asd.Engine.AddObject2D(mouseXText);

            var mouseYText = new asd.TextObject2D();
            mouseYText.Position = new asd.Vector2DF(700, 670);
            mouseYText.Font = font;
            asd.Engine.AddObject2D(mouseYText);

            var mouseHXText = new asd.TextObject2D();
            mouseHXText.Position = new asd.Vector2DF(800, 600);
            mouseHXText.Font = font;
            asd.Engine.AddObject2D(mouseHXText);

            var mouseHYText = new asd.TextObject2D();
            mouseHYText.Position = new asd.Vector2DF(800, 670);
            mouseHYText.Font = font;
            asd.Engine.AddObject2D(mouseHYText);


            // Altseedが進行可能かチェックする。
            while (asd.Engine.DoEvents())
            {
                asd.Vector2DF pos = asd.Engine.Mouse.Position;
                mouseXText.Text = string.Format("{0}", pos.X);
                mouseYText.Text = string.Format("{0}", pos.Y);

                if(asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
                {
                    mouseHXText.Text = string.Format("{0}", pos.X);
                    mouseHYText.Text = string.Format("{0}", pos.Y);
                }

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

            // Altseedを終了する。
            asd.Engine.Terminate();
        }
    }
}

なかなか良さそうです。

じゃあ、次回からUIをもっと詰めて、クラス構成を考えてみましょう。