SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

C#たんと学ぶ/わりと硬派なソフトウェア開発講座

C#たんと学ぶ/わりと硬派なソフトウェア開発講座
第2回「デスクトップアプリケーション」

C#たんと学ぶ わりと硬派なソフトウェア開発講座(3)


  • X ポスト
  • このエントリーをはてなブックマークに追加

中核処理の仕様

C#たん笑い
とりあえず、中核処理部分の仕様だけ書いておきますね
C++たん落胆
あっ、やっぱりコードの中身まで解説する気はないんだ。

 今回作った15パズルは以下のような仕様になっています。

セルの値を参照:

  • 左上から右下に、0~15のインデックス番号を割り当てています。
  • セルの値にも0~15の番号を割り当てていて、15番が空セルを表します。
  • インデクサー(this[i])を使って、セルの値を参照します。

初期化

  • セルをランダムに並べ替えます。

キー入力

  • キー入力でのゲームプレイを想定して、方向を指定してセルを動かします。
  • 例えば、「右」キーで、空セルの左側のセルを右に移動します。

マウスクリック

  • マウスクリックでのゲームプレイを想定して、インデックスを指定してセルを動かします。
  • 指定したインデックスのセルが空セルと隣接していれば、そのセルを動かします。そうでなければ何もしません。

クラス実装

 この仕様を実装するクラスは以下のようになります。

public class Game
{
    // 盤面をランダムに初期化。
    public void Initialize() { … }

    // セルの状態番号を取得。
    public int this[CellIndex i] { get; }

    // マウスクリックでセルを動かすためのメソッド。
    // セルのインデックスを指定。
    public MoveResult Move(CellIndex i) { … }
 
    // キー操作でセルを動かすためのメソッド。
    // 動かしたい向きを指定。
    public MoveResult Move(Direction key) { … }
}

 セルの移動(Move)の結果(MoveResult)は以下のような情報を持ちます。

public struct MoveResult
{
    // 所望の操作が可能だったかどうか。
    // 操作可能だった(=セルの状態が変化した)ら true。
    public bool Success { get; }

    // 変化したセルのインデックス。
    // セルの入れ替え(= 変化するのは2つ)なので、そのうちの1つ目。
    public CellIndex Index1 { get; }

    // 変化したセルのインデックス。
    // セルの入れ替え(= 変化するのは2つ)なので、そのうちの2つ目。
    public CellIndex Index2 { get; }
}

次のページ
UIの差し替え

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
C#たんと学ぶ/わりと硬派なソフトウェア開発講座連載記事一覧

もっと読む

この記事の著者

C#たん ソフトウェア開発講座 制作委員会(シーシャープタン)

ソフトウェアに求められる要求の高度化とともに大きくなる開発者への負担を、開発ツールやフレームワーク、時には萌え力を頼りに軽減できないか考えるプロジェクト。C#たんは単なるマスコットかと思いきや、割と毒舌。自分のことは棚に上げて、「萌えればいいってもんじゃないですよ?」が信条。twitter: @cs...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5961 2011/06/30 11:28

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング