ASP.NET SignalR によるクイズWebアプリ 「みんなで同時プレイするWebアプリでCodeQuizに挑戦!」
C#でアプリを作ってみよう! #ngtnet
-
Upload
- -
Category
Engineering
-
view
425 -
download
3
Transcript of C#でアプリを作ってみよう! #ngtnet
C#でアプリを作ってみよう!
2017/11/18 - #ngtnet
TAKANO Sho(高野 将)/ @masaru_b_cl
自己紹介
某SIerで働くDeveloper
そのかたわら執筆業も
#ngtnet 2
ところで……
こんな仕事をしていませんか?
プロジェクト専用のフレームワークがある
アプリはフレームワークの流儀で作成
しばしば設計書という名のExcel方眼紙から生成
既存システムのコードを流用
という名のコピペ
#ngtnet 3
その結果……
こんなことが起きがち
一からアプリを作ったことが無い!
自分でロジックを考えたことが無い!
#ngtnet 4
そこで……
一からアプリを作成する
ハンズオンを行います
#ngtnet 5
ハンズオンの目的
アプリを作成するということを体験する
自分で「設計」してみる
#ngtnet 6
作成するアプリ
じゃんけんバトル
#ngtnet
敵(パソコン)とじゃんけんで対戦し、5回勝つとそのラウンドの勝ちになります。また、ライフ制を取り入れ、先にライフがゼロになったほうが負けになります。
7
作成するアプリ
じゃんけんバトル
#ngtnet
敵(パソコン)とじゃんけんで対戦し、5回勝つとそのラウンドの勝ちになります。また、ライフ制を取り入れ、先にライフがゼロになったほうが負けになります。
時間が足りないので、いけるところまで
8
余談ながら
元ネタはこちらです
後ろに置いてあるので参考にどうぞ
#ngtnet 9
ハンズオンの進め方
1. アプリ作成準備
2. ゲーム画面作成
3. 1回じゃんけんして結果表示
4. 勝負がつくまでじゃんけんする
5. ラウンド制を取り入れる
#ngtnet 10
ハンズオンの進め方
1. アプリ作成準備
2. ゲーム画面作成
3. 1回じゃんけんして結果表示
4. 勝負がつくまでじゃんけんする
5. ラウンド制を取り入れる
#ngtnet 11
1.アプリ作成準備
#ngtnet 12
1.アプリ作成準備
素材を用意する
「アプリを作ろう! C#」で検索して日経BP社のページへ
#ngtnet 13
クリック
1.アプリ作成準備
Visual Studioを起動して
新規プロジェクトを作成
Windows フォーム アプリケーション
プロジェクト名は JankenBattle
VBが得意ならVBでも可
#ngtnet 14
2.ゲーム画面作成
#ngtnet 15
まずは最低限の画面を作成する
使うコントロール
Panel
PictureBox
Label
Button
Panelは枠線表示
BorderStyle=FixedSingle
#ngtnet
2.ゲーム画面作成
16
Labelは自動サイズ調整無効化
AutoSize=false
PictureBoxのImangeには
リソースとして
画像ファイルを表示
ドラゴンは1か所だけなので
ローカルリソース
じゃんけんの手は複数使うので
プロジェクトリソース
#ngtnet
2.ゲーム画面作成
17
3.1回じゃんけんして結果表示
#ngtnet 18
スタートボタンでゲーム開始
「ゲームスタート!」と表示
スタートボタンを押すまで
手は選べない
手を選んだらじゃんけんする
選んだ手を表示
敵の手をRandomクラスを
使ってランダムに選んで表示
勝負の結果を画面に表示
勝ち、負け、あいこ
#ngtnet 19
3.1回じゃんけんして結果表示
手の種類は列挙型で定義
グー、チョキ、パー
勝負の判定はif文で分岐
条件をどうすればよいか
考えてみよう!
#ngtnet 20
3.1回じゃんけんして結果表示
4.勝負がつくまでじゃんけんする
#ngtnet 21
あいこなら勝敗表示なし
勝つか負けるまで繰り返す
手を選ぶと続けてじゃんけん
勝負中かどうかの
状態を管理する
bool型のフィールド or
プロパティ
#ngtnet 22
4.勝負がつくまでじゃんけんする
5.ラウンド制を取り入れる
#ngtnet 23
最大5回勝負
1回の勝負をラウンドと呼ぶ
どちらかが先に3勝したら
勝敗数表示してゲーム終了
ラウンドごとの勝敗結果は
勝敗表に表示
ラウンドが変わるごとに
ラウンド数表示
自分と敵の手をクリア
#ngtnet 24
5.ラウンド制を取り入れる
勝敗結果、ラウンド数を
状態として管理する
勝敗結果は 配列 or リスト
ラウンド数は 数値
#ngtnet 25
5.ラウンド制を取り入れる
続きは……
ぜひ書籍を手に取ってみてください
#ngtnet 26
最後に
#ngtnet 27
最後に
今回作成したのはあくまでシンプルなアプリ
フォームとイベントハンドラーで
なんとかなる規模
現実はもっと複雑な要件が待っている
WebやDB、ファイルなど外部へのアクセス
エラーハンドリング
などなど
#ngtnet 28
最後に
フォームとイベントハンドラーだけで
なんとかするのは初心者まで
可読性、保守性、再利用性などを考慮し、
アプリを設計しよう
PDS(プレゼンテーションとドメインの分離)
責務に応じたクラス
プラットフォームに応じたエラー処理
#ngtnet 29
C#でアプリを作ってみよう!
2017/11/18 - #ngtnet
TAKANO Sho(高野 将)/ @masaru_b_cl
ありがとうございました!