がりらぼ

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ルー…

Bing Translator APIでストアアプリから翻訳を行うには

garicchi.com に書きました。 Bing Translator APIを使うには最初に認証情報をHttpPostして、取得したAccessTokenをヘッダにいれてGetしなければならないとかめちゃくちゃ面倒臭かったので 既存のTranslatorControl拡張機能を利用しました。 使うにはAzure M…

WindowsストアアプリプログラミングTispに非同期項目を追加しました。

garicchi.comのWindowsストアアプリプログラミングTipsに非同期項目を4記事追加しました。 追加した項目 非同期 非同期メソッドとは 処理を非同期にするには 非同期メソッドを作成するには 非同期メソッド内でUIを処理するには これだけ理解できればWindows…

XAMLでの回転式メニューについて考える

今回はちょっとむずかしい話 ドラッグして回転するようなコントロールつくれたらいいとおもいますよね(問題はどうやって回転を反映させるか。 たしかストアアプリには回転動作のイベント取得方法があったような気がするけど WPFでもできるように考えてみる。…

HttpClientを簡単に認証プロキシに対応させることができるライブラリ、RuntimeProxyをつくりました

最近クラスライブラリを作ってNugetに上げるのが趣味になってるぐらいNuget素晴らしいさてHttpClientを認証プロキシに対応させる - がりらぼでも述べたとおり、HttpClientHandlerを編集すればHttpClientを使ったアプリを簡単に認証プロキシを通すことができ…

Bindingする値を変換する

BindingConveterの基本的な話です。ModelとUIとのバインドにはIValueConveterというクラスを使うことでバインドする値を変換することが可能です。まずはIValueConveterを実装した変換クラスを作成 public class IntegerToStringConverter:IValueConverter { …

HttpClientを認証プロキシに対応させる

.Net4.5あたりからインターネットからデータをダウンロードしたり、するようなアプリにはHttpClientがよく使われているとおもわれます。(よく知らないですけどすると問題になってくるのが認証プロキシの問題です。 Windowsデバイスは社内や学内のプロキシー…

AcceptReturnをTrueにしたTextBoxのOnKeydownイベントでEnterを取得する

TextBoxのAcceptReturnプロパティをTrueにするとなぜかKeyDownイベントでEnterキーのKeyDownは取得できません。(KeyUp時は取得できます)TextBoxのAcceptsReturnをTrueにするとKeyDownでEnterが取得できない | 雪猫ノートコントロール設計者側にも何かしらの…

KeyBindManager version2.0

さっき公開したばかりのWindowsストアアプリでKeyBindを可能にするライブラリKeyBindManagerですが、Version1公開してからわずか4時間ぐらいで早速Version2に更新しました。ラピッドリリース しかも超大幅更新 変更点 まず、前回はKeyBindクラスとして、 [バ…

Windowsストアアプリでキーバインドを可能にするライブラリKeyBindManager

この記事には最新バージョンがあります!! KeyBindManager version2.0 - がりらぼ Windowsデベロッパーセンターみてても、WPFにあったようなキーバインドはありません。 キーバインドは死んだ!もういない!ってわけにもいかないので無理やりキーバインドさ…

簡単にProgressRingを表示させることができるクラス、AttachedProgressを作りました

awaitで非同期処理をしている最中、ProgressRingを回すアプリはよくあると思います。 しかし、ProgressRingコントロールをいちいちXAMLで設置して管理するのはUI的にも崩れやすく、非表示にしたりするのがだるくて、結局つけないとかいう例がよくあります。(…

?(とびうお)問題

@garicchi ?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi?@garicchi— かずき@I♡田☎ (@okazuki) 2014, 1月 19「?」という文字、(とびうお)というんですね...初めて知りました。 C#で文字列処理をす…

FlyoutとAttachedFlyoutの違いについて考える

8.1からAttachedFlyoutとかいうのが出てきました。 ちょっと気になったのでまとめます。 Flyoutについて ButtonなどのFlyoutプロパティに指定されたFlyoutは規定のClickイベントのみ反応し、Flyoutが出現します。 <Button Content="Button" HorizontalAlignment="Left" Margin="131,337,0,0" VerticalAlignment="Top" Height="132" Width="216"> <Button.Flyout> <Flyout> </flyout></button.flyout></button>

Prism for WindowsRuntimeとは何なのかまとめてみる

最近Prism for WindowsRuntimeの8.1英語verがリリースされたようです。 MSDN Blogs 最近少し熱がこもりかけているPrismforWinRTについて調べてみました。 そもそもPrismとはなんなのか patterns & practicesチームが作っているXAML系プラットフォーム向けの…

ポリモーフィズム的なオブジェクトをシリアライズする

ポリモーフィズム(多様性)とはオブジェクト指向の3大なんたらの最終奥義?もとい重要なことで、オブジェクト自体をいろんなオブジェクトに入れ、一括管理できるとかいうヤツです。代表的な使い方としては、いろんなクラスを一括管理するためにそれらが継承す…

ListViewItemのスタイルを変更する

WindowsRuntimeになって変わったのかわからないですけど、 ListViewの選択項目のスタイルを変更したり、そういう時にはListViewItemのVisualStateを変更する必要があります。BlendでListViewを右クリック→追加のテンプレートの編集→ItemsContainerStyle→空の…

JsonをC#のクラスに変換する

C#

他人が書いた記事ですが、すごく良いのと自分がわすれないために via しばやん雑記

VisualStudioのソリューションファイルについて理解する

C#

ソリューションエクスプローラーを見てみます。 VisualStudioにはプロジェクトというものが存在し、ひとつのプロジェクトは、ひとつのアセンブリファイル(最終的に出力されるプログラムファイル)を出力します。 その複数のプロジェクトを一つにまとめるもの…

C#プログラムの用語を理解する

C#

C#のHello worldの基本的なプログラムを見てみます。 [csharp] using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _1_1_1 { class Program { static void Main(string[] arg…

Hello worldを出力する

C#

まずはお決まりのHello worldを出力するところから始めましょう。 VisualStudioのファイル→新規作成→プロジェクトを開きます。 左の欄から、VisualC#を選択、真ん中のリストからコンソールアプリケーションを選択し、適当な名前を入力し、OKを押します。 以…

俺のアプリはUSBを挿すと動く

Windows 8 Store apps Advent Calendar7日目という事で 今年も年末になりましたね。がりっちです。本年度は勉強会を主催させていただいたり、MSPフェローシップになれたり、東京でいろいろしたり楽しかった一年でした。景気よく年末を迎えるために、アドベン…