Yanesdk
サンプルプログラム「手と栗鼠」を見てのメモ。 Formを使っておらず、SDLWindow2DGIでウィンドウを作成している。なるほど、こうやってLinuxやMacでも使えるようにするのか。 Timerイベントを使わず、whileループで回し、FpsTimerで調整している。入力更新→…
Yanesdkのサンプルとしてテトリス風のゲームが公開された。 どういう風に書けばいいんだろうと悩んでいたところがいくつもあったので、こういうサンプルは非常にありがたい。これはじっくり見ながら参考にさせてもらおう。
テクスチャファイルの読み込みをSmartTextureLoaderを使って行う方法。 SmartTextureLoaderのLoadDefFileメソッドで定義ファイルを指定するとTextureLoaderが得られる。描画するときにはTextureLoaderのGetTextureメソッドでテクスチャを取得できる。 定義フ…
各タスクでそのタスクが必要なくなったときには、Taskメソッドで非0を返せば、そのタスクは削除される。 タスクを終了するとき返す値は非0なら何でもいいけど、個人的な感覚としては-1を使うかも。 class Task0 : TaskBase { public override int Task(Objec…
各タスクはTaskBaseから派生して作る。そしてTaskメソッドが呼ばれるのでここにタスクで行いたい処理を記述する。引数にはTaskControllerのCallTaskで指定したobjectが渡される。今までのサンプルではGameInfoを渡しているので、as演算子でobject型から変換…
相変わらずタスクシステムの勉強。しかし、ほんと進みが遅いな。 タスクが実行されるようにするためには、タスクコントローラーのCallTaskメソッドを呼ぶ。引数にはobject型を指定でき、この引数がTaskBaseのTaskメソッドの引数になる。 private void timer1…
引き続きタスクシステム。 シーンコントローラーのJumpSceneメソッドをタスク名を指定して呼び出せば、そのシーンタスクが生成される。このときにTaskFacotryで設定したメソッドが呼び出されるというわけか、なるほど。 info.sceneController.JumpScene(Task…
引き続きタスクシステムの勉強。 タスクシステムにはTaskControllerクラスとSceneControllerクラスを用いる。 シーンコントローラーにはタスク名の列挙体を渡し、TaskFactoryを設定する。そして、このシーンコントローラーもタスクなのでタスクコントローラ…
引き続きタスクの勉強。 task_sample.csによると、TaskControllerクラスとSceneControllerクラスを用いる。サンプルではsystemに収められているとあるが、今のバージョンではytlに入っている。 TaskControllerがタスクの管理を行うもの。タスクはTaskBaseか…
Yanesdkフォルダのsrc/sampleにtask_sample.csというタスクシステムのサンプルプログラムがあったので、それを見ながら勉強。 しかし、タスク自体が良く分かっていないので難航中。
新しいバージョンがリリース。基本的にバグフィックスがメインの模様。 ウィンドウの外でもマウスのボタンを取得してしまうという問題(id:toburau:20060529)への対処がされていた。改変履歴を見ていたら、そのページへのリンクが書かれていたのでちょっとび…
今作っているミニゲームのサウンドファイルをZipファイルから読み込む方法を調べたところ、FileSysクラスのAddArchiverメソッドを使えば良いことが分かった。 昨日のテストプログラムを次のように改良。 using Yanesdk.System; FileArchiverZip ziparc = new…
Zipファイルの読み込みにはFileArchiverZipクラスを使う。 a.txtとb.txtを含んだdata.zipという名前のZipファイルがあるとき、この中からファイルを読み出す方法は次の通り。 using Yanesdk.System; FileArchiverZip file = new FileArchiverZip(); byte Buf…
Yanesdkを使わずに普通にPictureBoxを貼り付けたFormを作成し、MouseEnterやMouseLeaveイベントが発生するか試してみた。結果、イベントは発生しなかった。 ためしにFormより小さいPictureBoxを貼り付けてテストしてみると、マウスカーソルがPictureBox上に…
今作っているプログラムではマウスカーソルがそのウィンドウの外にあってもマウスの入力を受け付けてしまうようになっている。そこでYanesdkのMouseInputのインスタンスを作成する部分を次のように変更。 MouseInput mouse; mouse = new MouseInput(this, tr…
マウスのボタンが押されているか取得するにはIsPressを用いたが、ボタンが1回押されたかを取得するにはIsPushを用いる。このとき、ボタン状態を更新するUpdateを呼び出す必要がある。 using Yanesdk.Input; MouseInput mouse; private void Form1_Load(objec…
新しいバージョンがリリース。データベース関連が追加されていた。いまのところデータベースは使う予定が無いのであんまり関係ないかな。 あとTextureStringでalign指定が出来るようになった。これはうれしいかも。
経過時間を取得するときにはGameTimerクラスを使う。値はTimeプロパティで取得できる。単位はms。 using Yanesdk.Timer; private void Func() { GameTimer timer = new GameTimer(); int iNow = timer.Time; }
サウンドを鳴らすにはSoundクラスを使う。サウンドはBGM1個とSE8個を鳴らすことが出来る。Loadメソッドでサウンドファイルを読み込み、Playメソッドで再生。Stopメソッドで停止。非常に簡単。 SEの場合は1-8のチャンクナンバーを指定できるが、0を指定してお…
Yanesdkの新しいバージョンがリリース。今回のバージョンアップではLinuxやMacにも対応。他にはマウス関連の修正が多い。 さっそく昨日のプログラムを新しいバージョンでビルドしなおしてみると、ウィンドウの外でも座標を取ってしまっていたのが、クライア…
現在のマウス座標を表示するプログラムを作ってみた。 FormのSizeは300x300。 FormにPictureBoxを貼り付け、DockプロパティをFillに。 FormにTimerを貼り付け、EnabledプロパティをTrueに。Intervalプロパティに16を設定。 Formをダブルクリックして、Loadイ…
マウス入力にはMouseInputクラスを使う。 コンストラクタの引数にFormを渡せば、そのフォームに対するマウス位置が取得できる。引数を指定しなければ画面全体のマウス位置となる。 位置を取得するときはGetPosメソッドを使い、ボタンが押されているかはIsPre…
プレイステーションのパッドをPCで使う変換器(ゲームパッドコンバータ - JC-PSシリーズ)を持っていたことを思い出して、さっそく昨日のプログラムで試してみた。 結果、3つ以上ボタンを押しても問題なく反応した。 キーボードだけの症状のようだ。
キーボードからの入力にはKeyクラスを使う。KeyクラスにはKey1-Key4の4種類ある。 Key1 キーボード+ジョイスティック(2ボタン) Key2 キーボード+ジョイスティック(6ボタン) Key3 キーボード(2ボタン) Key4 キーボード(6ボタン) akirameiさんのページ(はじめ…
FpsTimerを使うときには、TimerのIntervalの値はどのくらいにするのが適当なのだろうか。 もちろん、FpsTimerを使って60fpsにしようとするのなら、Tickイベントはそれよりも速くしなくてはならない。ってことで試しに遅くして実行してみたら、表示はガクガク…
YanesdkにはFpsTimerというフレームレートを調整する便利なタイマーがあるので、それを使うことにする。 using Yanesdk.Timer; FpsTimer fpsTimer = new FpsTimer(); // タイマーのTickイベント private void OnTick(object sender, EventArgs e) { // 1フレ…
公式サイトをチェックしたら、新しいバージョンがアップされていた。さっそくダウンロードしてチェックしてみると、すでにDrawLineが修正されていた。 さらにDrawLinesの修正はどうしようかと思っていたら、DrawLinesはprivateに変更されていた。確かにDrawL…
ライン描画時に+0.5ずつずらすために、DrawLineを次のように変更してみた。 public void DrawLine(int x1, int y1, int x2, int y2) { DrawContext dc = DrawContext; Gl.glBegin(Gl.GL_LINES); Gl.glVertex2f(x1 * dc.RateX + dc.OffsetRX + 0.5f, y1 * dc.…
OpenGLのテクスチャGlTextureを試してみた。 Yanesdk.Draw.Win32Window window; Yanesdk.Draw.GlTexture texture; // 作成と読み込み texture = new Yanesdk.Draw.GlTexture(); texture.Load("tex.bmp"); // 描画 Yanesdk.Draw.Screen2DGl screen = window.S…
昨日ちゃんと描画できたと喜んでみたが、ふと考えてみると正しく描画できていない気がする。 PictureBoxのサイズを100×100にしたわけだから、指定する座標は0から始めると(0,0)-(99,99)となるのでは。いやでもラインの最後の点は描画されないというのを聞い…