酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

C#でYaneSDKを使ってキャラクターを動かしてみる

今日やった事を踏まえて、monaくんを動かしてみました。透過色の設定がよく判ってないのでRGB(255,0,255)の色が残ったままになってます(恥ずかしい)。

|cs| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;

namespace yanetest2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

    Yanesdk.Input.Key1 key;

    Yanesdk.Draw.Win32Window window;
    Yanesdk.Draw.GlTexture texture;
    Yanesdk.Draw.Surface surface;

    // monaくん描画開始座標
    int mona_x;
    int mona_y;

    // フォームの読み込み時に初期化を行う
    private void Form1_Load(object sender, EventArgs e)
    {
        key = new Yanesdk.Input.Key1();

        window = new Yanesdk.Draw.Win32Window(pictureBox1.Handle);

        // Texture作成時はScreen.Selectを呼ぶ
        // なんで?
        window.Screen.Select();

        // BMPからサーフェイスに変換
        texture = new Yanesdk.Draw.GlTexture();
        Bitmap bmp = new Bitmap(GetType(), "mona.bmp");
        Yanesdk.Draw.BitmapHelper.BitmapToSurface(bmp, out surface);

        // テクスチャにサーフェイスを設定する
        texture.SetSurface(surface);

        // 代入による初期化しか出来ない?
        // C++みたいな初期化子の使い方は出来ないのかな?
        // まぁ、あとで調べましょ。
        mona_x = mona_y = 0;

        // monaくんは真ん中に配置しる
        mona_x = (int)((window.Screen.Width / 2) - (texture.Width / 2));
        mona_y = (int)((window.Screen.Height / 2) - (texture.Height / 2));
    }

    // 100ms間隔でこの関数が呼ばれる(10FPS)
    private void timer1_Tick(object sender, EventArgs e)
    {
        // キーの入力状態を更新する
        key.Update();

        /// ボタン番号
        /// 0:ESCキー
        if (key.IsPress(1))
        {
            //ESCキーが押されていた時の処理
        }

        /// 1:テンキー8,↑キー,ジョイスティック↑
        if (key.IsPress(1)) mona_y -= 2;

        /// 2:テンキー2,↓キー,ジョイスティック↓
        if (key.IsPress(2)) mona_y += 2;

        /// 3:テンキー4,←キー,ジョイスティック←
        if (key.IsPress(3)) mona_x -= 2;

        /// 4:テンキー2,→キー,ジョイスティック→
        if (key.IsPress(4)) mona_x += 2;

        /// 5:スペースキー,ジョイスティック ボタン1
        if (key.IsPress(5))
        {
            //スペースキーが押されていた時の処理
        }

        /// 6:テンキーEnter,リターンキー,左シフト,右シフト。
        /// ジョイスティック ボタン2
        if (key.IsPress(5))
        {
            //リターンキーが押されていた時の処理
        }

        // 描画はSelect()〜Update()までに行う
        window.Screen.Select();
        // 黒色で消すよ
        window.Screen.SetClearColor(0, 0, 0);
        window.Screen.Clear();
        window.Screen.Blt(texture, mona_x, mona_y);
        window.Screen.Update();
    }
}

} ||<