がりらぼ

WindowsRuntimeの応援ブログ

C#

C#のクロスプラットフォームゲームライブラリっぽいものを作りました

このタイトルだとまるで僕がクロスプラットフォームに対応させた見たいに見えますが簡単に言うとMonoGameでもっとゲーム作りやすく(なるかもしれない)フレームワークです。 機能 今のところこんな感じの機能を持っています 画面管理 ゲームオブジェクト管理 …

WindowsRuntimeではList<T>のForeachメソッドが無いらしい

@garicchi たぶん WinRTだけそのメソッドが存在してない https://t.co/3CLxqvYa8x— たなか@チーム防御率1.52 (@tanaka_733) 2015, 4月 13 らしいです。 IEnumerableで列挙した要素全てに対して特定のメソッドを呼ぶとか、プロパティを変えるとかしたかったの…

Arduinoのシリアル通信で文字列情報の送信を考える

Arduinoのシリアル通信は基本的に1byteごとにしかポートに来ている情報を読むことができません。 だから、シリアル通信で文字列を渡そうと思ったらなかなか大変です。 そこでシリアル送信側で文字列の最後に終端記号「\0」を送信してもらって、そこまでを読…

【WindowsRuntime+ReactiveExtensions入門】その2 いろいろなファクトリメソッド

Observable Reactive ExtensionsにはObservableというクラスがあり、このクラスが様々なIObseravbleを生成するファクトリメソッドを持っています。 Observable.Range() Observable.Rangeメソッドは第1引数に指定した整数から、第2引数に指定した値までの連続…

C#の主要インターフェース解説:IObservable<T>、IObserver<T>

C#

IObservable<T>、IObserver<T> この2つのインターフェースはクラスのオブジェクトどうしの監視と通知を実現するインターフェースです。 LINQのような文法で非同期処理を書くことができるReactive ExtensionsはIObservable<T>とIObserver<T>によって実現され、RXを理解す</t></t></t></t>…

C#の主要インターフェース解説:ICloneable

C#

オブジェクトの複製 C#は自作クラスはすべて参照型として扱われます。 ですのでインスタンスを別のインスタンスにコピーしたとき、コピーされるのは実体ではなく、参照情報となります。これをシャローコピーと言います。 public class MyObject { public int…

C#の主要インターフェース解説:IComparerとIComparer<T>

C#

IComparer 前回のIComparableでも解説しましたが、通常の自作クラスのオブジェクトではオブジェクト同士の比較をすることができません。 自作クラスにIComparableインターフェースを実装していればListのSortメソッドで一列にソートすることが可能になります…

C#の主要インターフェース解説:IComparable

C#

IComparable たとえば車クラス(Car)を作ったとして、これを一列にソートするとします。 自分で作った車クラスは、比較方法がないので優劣をつけることができず、1列に並べるにも規則性のある整列ができません。 そこで、自作クラスにIComparableインターフェ…

C#の主要インターフェース解説:IDisposable

C#

IDisposable IDisposableは簡単に言うと、「実装すると、Disposeメソッドを実行することによってリソースを破棄してくれることを保証するインターフェース」です。 ようするにクラスがもっているリソースをDisposeメソッドによって破棄する、C++のdeleteと似…

C#の主要インターフェース解説:IEnumerable

C#

IEnumerableとは 「アイ エニュメラブル」と読むそうです。 このインターフェースを実装することによって実現できる機能は、「foreachでコレクション処理できる」ことです。 foreachといえば foreach(int i in collection) { Console.WriteLine(i); } みたい…

C#の主要インターフェース解説:インターフェースとは

C#

にゅーろにあのCoreプロジェクトをIEnumerableで返したいなとか思ったので今日から数回にわたってC#で使われる主要インターフェースについて解説したいと思います。 インターフェースとは インターフェースと検索してみると、 二つのものが接続・接触する箇…

MonoGameWindowsRuntimeゲームプログラミング入門vol12:セーブデータを保存する

ゲームのセーブデータ ゲームにおいて獲得したスコアや最高記録などはセーブデータとしてストレージに保存します。 そして次回以降の起動でセーブデータを復元します。 WindowsRuntimeにおけるデータ保存方法 WindowsRuntimeでは設定データとファイルデータ…

MonoGameWindowsRuntimeゲームプログラミング入門vol11:加速度センサーの入力を検知する

加速度センサー ほとんどのWindowsタブレットには加速度センサーが付いています。 加速度センサーはデバイスを傾けるだけで入力をすることができるのでよりゲームが直感的になります。 加速度センサーを利用するにあたって、「どの軸を固定とした回転か」を…

MonoGameWindowsRuntimeゲームプログラミング入門vol9:キーボード入力を検知する

Keyboard キーボード入力を検知するには、KeyboardクラスのGetStateメソッドを使います。 GetStateで取得できるKeyboardStateクラスでは、IsKeyDownメソッドでそのキーが押されているかを判定できます。 また、GetPressedKeysメソッドで現在押されているキー…

MonoGameWindowsRuntimeゲームプログラミング入門vol7:タッチ入力を検知する

タッチ入力 WindowsストアアプリやWindowsPhoneのゲームにおいて、タッチ入力というものはもっとも比重が置かれるべき入力方法です。 シングルタッチだけではなく、マルチタッチにも対応しなければならないので開発者は複数の指のタッチを検知する必要があり…

MonoGameWindowsRuntimeゲームプログラミング入門vol6:文字列を描画する

SpriteFont MonoGameで文字列を描画するときもwavサウンドを再生するときと同じようにxnb形式にコンパイルする必要があります。 XNAGameStudio4.0.4をまだインストールしていない人もしくはコンテンツビルド用プロジェクトを作成していない人は「サウンドを…

MonoGameWindowsRuntimeゲームプログラミング入門vol5:サウンドを再生する

コンテンツパイプライン XNAでは画像ファイルやサウンドファイルなどの読み込みを高速化するためにあらかじめコンテンツをコンパイルしておくコンテンツパイプラインという仕組みがあります。 サウンドファイルであるwavファイルはこのコンテンツパイプライ…

MonoGameWindowsRuntimeゲームプログラミング入門vol4:2D画像をアニメーションさせる

2D画像の描画座標 2D画像を描画するときは、Drawメソッドで描画座標を指定しています。 //描画する spriteBatch.Draw(texture,new Vector2(10,75),Color.White); この場合、左上からx軸が10px、y軸が75pxずれた位置に描画されます。 2Dアニメーションとは 2D…

MonoGameWindowsRuntimeゲームプログラミング入門vol3:2D画像を描画する

Gameクラス 作成したMonoGameのプロジェクトの要素をソリューションエクスプローラで見てみましょう。 Program.csを見てみましょう。 public static class Program { /// <summary> /// The main entry point for the application. /// </summary> static void Main() { var fac…

MonoGameWindowsRuntimeゲームプログラミング入門vol2:プロジェクトの要素を見てみる

Gameクラス 作成したMonoGameのプロジェクトの要素をソリューションエクスプローラで見てみましょう。 Asstesフォルダはタイルのpng画像が入っています。Assetとは日本語で「資産」とうい意味なのでpngやwavなどのファイルリソースはこのフォルダの中に入れ…

MonoGameWindowsRuntimeゲームプログラミング入門vol1:MonoGameをインストールする

MonoGame MonoGameとはC#でマルチプラットフォームのゲームを作ることができるゲームプラットフォームです。 2014年春に廃止されたXNAとほぼ同じ文法でゲームを作ることができます。 MonoGameでゲームを作るにはMonoGameをインストールする必要があります。 …

MonoGameでWindows8のテンプレートからプロジェクトを作成できない

MonoGameでWindows8のプロジェクトテンプレートから、新しくプロジェクトを作成するとき、エラーがでて作成できません。 「エラー:このテンプレートは、コンポーネントアセンブリ 'Microsoft.VisualStudio.WinRT.TemplateWizards, Version=11.0.0.0, Cultur…

C#で最良優先探索

最良優先探索法 前に迷路問題の状態空間表現を作成し、2回にわたって縦型探索と横型探索を適用してきました。 迷路問題を状態空間表現で表してみる - がりらぼ C#で縦型探索 - がりらぼ C#で横型探索 - がりらぼ しかし、これらは網羅的探索法と呼ばれ、ゴー…

C#で横型探索

横型探索 前回、縦型探索を用いて迷路問題を解きました。 迷路問題を状態空間表現で表してみる - がりらぼ C#で縦型探索 - がりらぼ 今回は同じ迷路問題を横型探索を用いて解きます。 横型探索とは、幅優先探索とも呼ばれ、ひたすら突き進んだ先にゴールがあ…

C#で縦型探索

縦型探索 前回迷路問題を状態空間表現しました。 迷路問題を状態空間表現で表してみる - がりらぼ これでコンピュータに迷路問題を認識させることができたのでゴールまで迷路を解かせてみましょう。 問題をコンピュータに解かせるには「探索」をつかいます。…

迷路問題を状態空間表現で表してみる

前回水差し問題を状態空間表現で表してみました。 状態空間表現については前回の記事を参考にしてください。 今回は、このような迷路問題を状態空間表現であらわしてみます。 ※大まかなクラスは前回と同じですがところどころメソッドを変更しています。 Prog…

C#で問題の状態空間表現をしてみる

問題状態空間表現とは 人工知能ネタです。 問題状態空間表現とは、そもそも人工知能を適用する以前に、人工知能を適用する問題をどのように表現(モデリング)するかというところです。 よく用いられるのが水差し問題と8パズルですが、8パズルは長いので水差し…

awaitできるRelayCommandを考える

C#

前回、OnSuspendingでRelayCommandをやると死ぬという記事を書きましたが、 なぜ死ぬか、完結にまとめると、 ・RelayCommandのExecuteメソッドはvoid型を返す ・RelayCommand内に登録するActionをasyncにするとそこは非同期になるけどExecuteがTaskを返さな…

コード入力量を更に減らす!VisualC#のコードスニペットを作成する方法

C#

前回 コード入力量を減らす!VisualC#で使えるコードスニペットまとめ - がりらぼ という記事を書きましたが、それだけでは俺の仕事はおわらないぜ!!って人のためにオリジナルコードスニペットの作り方を紹介します。 コードスニペットとはなんぞという人…

コード入力量を減らす!VisualC#で使えるコードスニペットまとめ

C#

コードスニペットとは? コードスニペットとは、VisualStudioで特定のキーワードを入力し、Tabキーを2回押すことによって定型文を挿入することができるコードの自動生成機能です。 たとえば「while」と入力し、Tabキーを2回連続で押すと このようにwhileルー…