とりあえず、下地となるマスを書いてみます。
最初考えたのは、
こんな画像を用意して、9×9に並べてみました。
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("square.png");
// マス
int offsetX = 10;
int offsetY = 10;
int width = 64;
int height = 64;
for(int row = 0; row < 9; row++)
{
for(int col = 0; col < 9; col++)
{
var square = new asd.TextureObject2D();
square.Position = new asd.Vector2DF(width * row + offsetX, height * col + offsetY);
square.Texture = texture;
asd.Engine.AddObject2D(square);
}
}
// Altseedが進行可能かチェックする。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
}
イメージとしては上の画像をテクスチャとして並べただけです。
スクショでは分かりませんが、内側の線が全て太く描画されてしまいました。
これは、ちょっと見づらいですね・・・
よし、9×9マスの画像を作成して、1枚のテクスチャーにしよう。
上の画像を修正して、
これを一つのテクスチャオブジェクトに貼り付けます。
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);
// Altseedが進行可能かチェックする。
while (asd.Engine.DoEvents())
{
// Altseedを更新する。
asd.Engine.Update();
}
// Altseedを終了する。
asd.Engine.Terminate();
}
}
}
うん、いいんじゃないでしょうか。
次は文字の作成をやってみます。