表示するサンプルコードの言語を指定できます。

大量の画像の描画

Altseedでテクスチャをマップチップとして描画するには、 MapObject2Dというマップの描画を扱うオブジェクトのクラスとChip2Dというチップのクラスを使います。

テクスチャを描画できるという点ではTextureObject2Dと同じですが、 TextureObject2Dは一つのオブジェクトに対して一枚のテクスチャが対応しているのに対し、 MapObject2Dは一つのオブジェクトが何枚ものテクスチャをマップチップとして保有します。これにより、 テクスチャをいくら大量に描画してもMapObject2Dの更新処理は一回で済むため高速に描画処理することが可能です。

基本

SS

C++


#include <Base.h>

/**
@brief  マップを表示するサンプル。
*/
int main()
{
    // Altseedを初期化する
    asd::Engine::Initialize(u"MapObject2D_Basic", 640, 480, asd::EngineOption());

    {
        //マップオブジェクトを生成する。
        auto mapObject = std::make_shared<asd::MapObject2D>();

        auto texture = asd::Engine::GetGraphics()->CreateTexture2D(u"Data/Texture/Chip1.png");

        //マップオブジェクトに16*12=184個のチップを登録する。
        for (int i = 0; i < 16; ++i)
        {
            for (int j = 0; j < 12; ++j)
            {
                //チップを生成する。
                auto chip = std::make_shared<asd::Chip2D>();

                //チップにテクスチャを設定する。
                chip->SetTexture(texture);

                //チップの描画先を指定する。
                chip->SetPosition(asd::Vector2DF(i * 40, j * 40));

                //マップオブジェクトにチップを追加する。
                mapObject->AddChip(chip);
            }
        }

        // マップオブジェクトのインスタンスをエンジンへ追加する。
        asd::Engine::AddObject2D(mapObject);
    }

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        // Altseedを更新する。
        asd::Engine::Update();
    }

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

C#

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

/// <summary>
/// マップを表示するサンプル。
/// </summary>
class MapObject2D_Basic
{
    public string Description
    {
        get { return "マップチップを並べて描画するサンプルです。"; }
    }

    public string Title
    {
        get { return "マップチップの描画"; }
    }

    public string ClassName
    {
        get { return "MapObject2D_Basic"; }
    }

    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("MapObject2D_Basic", 640, 480, new asd.EngineOption());

        {
            //マップオブジェクトを生成する。
            var mapObject = new asd.MapObject2D();

            var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Chip1.png");

            //マップオブジェクトに16*12=184個のチップを登録する。
            for (int i = 0; i < 16; ++i)
            {
                for (int j = 0; j < 12; ++j)
                {
                    //チップを生成する。
                    var chip = new asd.Chip2D();

                    //チップにテクスチャを設定する。
                    chip.Texture = texture;

                    //チップの描画先を指定する。
                    chip.Position = new asd.Vector2DF(i * 40, j * 40);

                    //マップオブジェクトにチップを追加する。
                    mapObject.AddChip(chip);
                }
            }

            //レイヤーにマップオブジェクトを追加する。
            asd.Engine.AddObject2D(mapObject);
        }

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }

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

Java

/**
 * マップを表示するサンプル。
*/
class MapObject2D_Basic 
{
    public java.lang.String getDescription() {
        return "マップチップを並べて描画するサンプルです。";
    }
    public java.lang.String getTitle() {
        return "マップチップの描画";
    }
    public java.lang.String getClassName() {
        return "MapObject2D_Basic";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("MapObject2D_Basic", 640, 480, new asd.EngineOption());

        // マップオブジェクトを生成する。
        asd.MapObject2D mapObject = new asd.MapObject2D();

        asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Chip1.png");

        // マップオブジェクトに16*12=184個のチップを登録する。
        for(int i = 0; (i < 16); ++i)
        {
            for(int j = 0; (j < 12); ++j)
            {
                // チップを生成する。
                asd.Chip2D chip = new asd.Chip2D();

                // チップにテクスチャを設定する。
                chip.setTexture(texture);

                // チップの描画先を指定する。
                chip.setPosition(new asd.Vector2DF((i * 40), (j * 40)));

                // マップオブジェクトにチップを追加する。
                mapObject.AddChip(chip);
            }
        }

        // レイヤーにマップオブジェクトを追加する。
        asd.Engine.AddObject2D(mapObject);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();
        }


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

カメラによる表示位置の移動

SS

C++


#include <Base.h>

/**
@brief  カメラ付きでマップを表示するサンプル。
*/
int main()
{
    // Altseedを初期化する
    asd::Engine::Initialize(asd::ToAString("MapObject2D_Camera").c_str(), 640, 480, asd::EngineOption());

    //カメラを設定する。
    auto camera = std::make_shared<asd::CameraObject2D>();

    camera->SetSrc(asd::RectI(0, 0, 640, 480));
    camera->SetDst(asd::RectI(0, 0, 640, 480));

    {
        //マップオブジェクトを生成する。
        auto mapObject = std::make_shared<asd::MapObject2D>();

        auto texture = asd::Engine::GetGraphics()->CreateTexture2D(asd::ToAString("Data/Texture/Chip1.png").c_str());

        //マップオブジェクトに50*50=2500個のチップを登録する。
        for (int i = 0; i < 50; ++i)
        {
            for (int j = 0; j < 50; ++j)
            {
                //チップを生成する。
                auto chip = std::make_shared<asd::Chip2D>();

                //チップにテクスチャを設定する。
                chip->SetTexture(texture);

                //チップの描画先を指定する。
                chip->SetPosition(asd::Vector2DF(i * 40 - 1000, j * 40 - 1000));

                //マップオブジェクトにチップを追加する。
                mapObject->AddChip(chip);
            }
        }

        // マップオブジェクトのインスタンスをエンジンへ追加する。
        asd::Engine::AddObject2D(mapObject);
    }

    //エンジンにカメラオブジェクトを追加する。
    asd::Engine::AddObject2D(camera);

    // Altseedのウインドウが閉じられていないか確認する。
    while (asd::Engine::DoEvents())
    {
        //カメラを移動させる
        auto pos = camera->GetSrc();
        pos.X += 1;
        pos.Y += 1;
        pos.X %= 1000;
        pos.Y %= 1000;
        camera->SetSrc(pos);

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

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

C#

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

/// <summary>
/// カメラ付きでマップを表示するサンプル。
/// </summary>
class MapObject2D_Camera
{
    public string Description
    {
        get { return "マップチップを並べて描画し、さらにカメラでスクロールするサンプルです。"; }
    }

    public string Title
    {
        get { return "マップチップとスクロール"; }
    }

    public string ClassName
    {
        get { return "MapObject2D_Camera"; }
    }

    [System.STAThread]
    static void Main(string[] args)
    {
        // Altseedを初期化する
        asd.Engine.Initialize("MapObject2D_Camera", 640, 480, new asd.EngineOption());

        //カメラを設定する。
        var camera = new asd.CameraObject2D();

        camera.Src = new asd.RectI(0, 0, 640, 480);
        camera.Dst = new asd.RectI(0, 0, 640, 480);

        {
            //マップオブジェクトを生成する。
            var mapObject = new asd.MapObject2D();

            var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Chip1.png");

            //マップオブジェクトに50*50=2500個のチップを登録する。
            for (int i = 0; i < 50; ++i)
            {
                for (int j = 0; j < 50; ++j)
                {
                    //チップを生成する。
                    var chip = new asd.Chip2D();

                    //チップにテクスチャを設定する。
                    chip.Texture = texture;

                    //チップの描画先を指定する。
                    chip.Position = new asd.Vector2DF(i * 40 - 1000, j * 40 - 1000);

                    //マップオブジェクトにチップを追加する。
                    mapObject.AddChip(chip);
                }
            }

            //レイヤーにマップオブジェクトを追加する。
            asd.Engine.AddObject2D(mapObject);

            //レイヤーにカメラオブジェクトを追加する。
            asd.Engine.AddObject2D(camera);
        }

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            //カメラを移動させる
            var pos = camera.Src;
            pos.X += 1;
            pos.Y += 1;
            pos.X %= 1000;
            pos.Y %= 1000;
            camera.Src = pos;

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

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

Java

/**
 * カメラ付きでマップを表示するサンプル。
*/
class MapObject2D_Camera 
{
    public java.lang.String getDescription() {
        return "マップチップを並べて描画し、さらにカメラでスクロールするサンプルです。";
    }
    public java.lang.String getTitle() {
        return "マップチップとスクロール";
    }
    public java.lang.String getClassName() {
        return "MapObject2D_Camera";
    }
    public static void main(String args[])
    {
        // Altseedを初期化する
        asd.Engine.Initialize("MapObject2D_Camera", 640, 480, new asd.EngineOption());

        // カメラを設定する。
        asd.CameraObject2D camera = new asd.CameraObject2D();

        camera.setSrc(new asd.RectI(0, 0, 640, 480));
        camera.setDst(new asd.RectI(0, 0, 640, 480));

        // マップオブジェクトを生成する。
        asd.MapObject2D mapObject = new asd.MapObject2D();

        asd.Texture2D texture = asd.Engine.getGraphics().CreateTexture2D("Data/Texture/Chip1.png");

        // マップオブジェクトに50*50=2500個のチップを登録する。
        for(int i = 0; (i < 50); ++i)
        {
            for(int j = 0; (j < 50); ++j)
            {
                // チップを生成する。
                asd.Chip2D chip = new asd.Chip2D();

                // チップにテクスチャを設定する。
                chip.setTexture(texture);

                // チップの描画先を指定する。
                chip.setPosition(new asd.Vector2DF(((i * 40 ) - 1000), ((j * 40 ) - 1000)));

                // マップオブジェクトにチップを追加する。
                mapObject.AddChip(chip);
            }
        }

        // レイヤーにマップオブジェクトを追加する。
        asd.Engine.AddObject2D(mapObject);

        // レイヤーにカメラオブジェクトを追加する。
        asd.Engine.AddObject2D(camera);

        // Altseedのウインドウが閉じられていないか確認する。
        while(asd.Engine.DoEvents())
        {
            // カメラを移動させる
            asd.RectI pos = camera.getSrc();
            pos.X += 1;
            pos.Y += 1;
            pos.X %= 1000;
            pos.Y %= 1000;
            camera.setSrc(pos);

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


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