酢ろぐ!

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

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

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


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();
        }
    }
}