Monthly Archives: 1月 2016

C#で2048ゲームのクローンを作る[その5]

2016年1月31日 (カテゴリ: C#:)

今回は、予定通り盤面に表示させる駒(セル)を管理するクラスを作成します。 これまでのゲームルール作成は一旦置いておき、描画寄りのプログラムになります。 今回作るプログラムで、以下のような盤面の表示を行えるようにします。 CellScriptクラスの作成(概要) まずは、セルを管理するCellScriptクラスを作成します。 大枠だけまず書くと、以下のような感じになります。 CellScript.cs using System.Windows.Forms; using System.Collections.Generic; using System.Drawing; using System; …


続きを読む

[C#]System.Drawing.ColorのListを初期化する方法

2016年1月31日 (カテゴリ: C#:)

C#で、Colorクラスを要素に持つListをまとめて初期化したい場合があります。このような場合、下記のコードで宣言と初期化を一度に行えます。 Colorクラスはコンストラクタで色指定できないので、FromArgb()などのメソッドを使ってインスタンス生成します。 using System.Drawing;   public class SomeClass { public List<Color> colorList = new List<Color>{ Color.FromArgb(255, 255,255,0), Col…


続きを読む

[DMM Mobile]WebAPI仕様:利用可能な高速通信量の確認

2016年1月30日 (カテゴリ: 未分類:)

DMMのNVMO SIMに対する、利用可能な高速通信データ残量や追加容量チャージのクーポン情報取得に関するWebAPIの仕様です。 Mvno_List.GetCoupon:クーポン一覧問合せ Resuest: 使用している端末がAndroidの場合は、URLに”method=AndroidApp”、POSTパラメータのappidにandroid_mvnoをセットする。messageに要求APIを指定する。 POST https://www.dmm.com/service/-/json/=/method=AndroidApp HTTP/1.1 Content-Type: …


続きを読む

[C#]LabelなどGUIコントロールの動的生成コードを一瞬で作る方法

2016年1月29日 (カテゴリ: C#:)

VisualStudioでWinFormを使って画面を作る際、通常はボタンやテキストボックスなどのGUIパーツ(コントロール)を画面から設定していきます。 ツールボックスからパーツをドラッグして、プロパティから各種設定を行うのが通常のパターンですね。 時にはこのコントロールを動的に作成したい場合があります。各コントロールは単なるクラスなので、このような場合でも、動的生成したいコントロールのクラスをnewしてプロパティをセットするプログラムを書けば問題なく動的生成が行えます。 ですが、動的にコントロールを作る場合、何のプロパティをセットしたら自分が思ったような設定になるのか、試行錯誤するのが結構…


続きを読む

C#で2048ゲームのクローンを作る[その4]

2016年1月28日 (カテゴリ: C#:)

今日は、前回の予定通り盤面の管理を別クラスに分けてみました。 リファクタリングを行っただけなので、前回のプログラムとできることは全く同じです。 まずは、画面を管理しているForm1.csファイルです。 盤面管理をBoardManagerに逃がしたので、非常にシンプルになりました。 using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms;   namespace Mock2048 { public partial class Form1 : Fo…


続きを読む

C#で2048ゲームのクローンを作る[その3]

2016年1月28日 (カテゴリ: C#:)

今回は、ゲームサイクルの作成を行いました。 以下の細々とした処理を追加し、1回分のゲーム開始->プレイ->ゲームオーバーまで、1周分のサイクルが作れました。 ゲーム状態の管理を追加(isGameOver変数) KeyDown()に、ゲームオーバー判定を追加 KeyDown()に、1手動かすたびに新セルの生成処理を追加 initBoard()に、盤面の初期化処理(ランダムで2セル生成)を追加 addCell()として、新セルの生成のメソッドを追加 slideCell()に、スライドした結果セルの移動があったか否かを取得できるよう修正 一通り遊べるのですが、スライドさせたときのアニメーションが無い…


続きを読む

C#で2048ゲームのクローンを作る[その2]

2016年1月27日 (カテゴリ: C#:)

前回は、上キーを押したときのみの処理を書いていましたが、上下左右のキーに対応しました。 これに伴って、上下左右のキーを押したとき、各セルの移動先を求める関数を切り出しました。 移動先を求めるのはgetDestPos()メソッドで、これを利用してセル移動を行うmoveCell()メソッドを実装しています。 他には、方向指定がC#のKeys列挙体の定義を流用していたため、専用のDIR列挙体を作っているなど、細かいところを修正しました。 using System; using System.Collections.Generic; using System.Data; using System.Wi…


続きを読む

サクラエディタで制御文字を入力する方法

2016年1月26日 (カテゴリ: 未分類:)

ASCIIコードには、通常の数字やアルファベット以外にCR,LF,STX,ETXなどの制御文字があります。 サクラエディタで改行やタブの制御文字は、簡単に入力できるのですが、STX,ETXなどの文字は簡単に入力できません。 サクラエディタで制御文字を入力するには、下記より制御文字の入力ダイアログが表示できます。 編集->挿入->コントロールコード入力 もし、キーボードだけで操作したい場合は”Alt+E -> I -> C”の順にキー入力すればOKです。 ダイアログの一覧から入力したい制御文字をクリックすれば制御文字が入ります。 正しく入力できたかは、ウィンド…


続きを読む

WindowでTotoiseSVNだけ使ってSVNサーバを用意する

2016年1月24日 (カテゴリ: 未分類:)

Windowの環境で、TotoiseSVNを使用してSVNサーバを作ってみます。 ローカルにサーバ環境の作る方法を覚えておくと、普段はLinux上にSVNサーバを持っているけど普段使わないコマンドを使用したい時など、事前にローカル環境でコマンドの実行を試してみることができるので便利です。 まずは、リポジトリを作ります set PATH=%PATH%;C:\Program Files\TortoiseSVN\svn-win32-1.8.13\bin mkdir c:\home2\test_svn cd c:\home2\test_svn svnadmin create test_repo 次にユ…


続きを読む

C#で2048ゲームのクローンを作る[その1]

2016年1月21日 (カテゴリ: C#:)

これから勉強をかねて、2048というゲームのクローンをWinFormで作ってみようと思います。 2048って何? 一時期ブームになったスマホのゲームアプリで、パネルをスライドさせながら大きな数字を作っていくゲームです。ルールは説明するより、動画を見てもらったほうが早いです。 個人的にはこのゲーム、結構プレイしていて最高で8192まで行った事があります。 作成ルール 本当は一気に作ってしまいのですが、時間が無いので下記のルールで少しづつ進めていきます。 毎週何か作る。本当な毎日少しづつ進めたいけど仕事があるので、週に3回以上は最低目標とする。 作成中のプログラムをBlogにさらす。本当ならいった…


続きを読む

[C#]WinFormでゲーム作成時、カーソル入力を取得する方法

2016年1月19日 (カテゴリ: C#:)

Windows上で.Net Frameworkを使用してゲームなどを作るとき、キー入力を取得したい場合があります。 このような場合、画面内のTextBoxなどにフォーカスが当たっていると、キー入力をフォーカスが当たったコントロールが処理してしまいます。 このような場合は、FormのKeyPreviewをtrueにするとよいです。 実際のキー入力チェック処理は、FormのKeyDownイベントで取得すると便利です。 using System; using System.Windows.Forms;   namespace Test01 { public partial cla…


続きを読む

WindowsからAWS CodeCommitを使う(TortoiseGit使用)

2016年1月17日 (カテゴリ: Git:)

AWSにてプライベートに使用できるgitのリポジトリサービスであるCodeCommitがリリースされました。 このCodeCommitの料金体系ですが、https://aws.amazon.com/jp/codecommit/pricing/に記載されているとおり以下の範囲では、なんと無料で使用可能です。 ・5 人のアクティブユーザー ・50 GB のストレージ/月 ・10,000 件の Git リクエスト 個人のプログラムを管理する程度であれば、無料の範囲で十分なので、かなり太っ腹なサービスです。 Githubのようなオープンなリポジトリではなく、個人でプライベートに使いたい場合には最適です…


続きを読む

[Smarty]PHPでセットしたdefine(“KEY”, “value”)の定数をSmaryで表示する

2016年1月13日 (カテゴリ: PHP:)

PHPでは、定数をdefine()関数で定義することができます。 viewのテンプレートにSmartyを使用している場合、この定数は$smarty.constで取得可能です。 以下、コード例です。 test.php <?php define("MESSAGE", "hello world"); test.tpl {$smarty.const.MESSAGE} これで、画面にhello worldが表示されます。


続きを読む