Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

C#でアプリを作ってみよう! #ngtnet

1,609 views

Published on

Niigata.NET 3.0 https://ngtnet.connpass.com/event/69634/ のハンズオン資料

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

C#でアプリを作ってみよう! #ngtnet

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

×