{"id":3982,"date":"2013-01-19T15:08:47","date_gmt":"2013-01-18T21:08:47","guid":{"rendered":"http:\/\/www.moonmile.net\/blog\/archives\/3982"},"modified":"2013-01-19T15:08:47","modified_gmt":"2013-01-18T21:08:47","slug":"%e6%9c%80%e5%88%9d%e3%81%af%e3%83%81%e3%83%bc%e3%83%97%e3%81%aa%e7%94%bb%e9%9d%a2%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%83%ad%e3%82%b8%e3%83%83%e3%82%af%e3%82%92%e7%a2%ba%e8%aa%8d%e3%82%92","status":"publish","type":"post","link":"http:\/\/www.moonmile.net\/blog\/archives\/3982","title":{"rendered":"\u6700\u521d\u306f\u30c1\u30fc\u30d7\u306a\u753b\u9762\u3092\u4f5c\u3063\u3066\u30ed\u30b8\u30c3\u30af\u3092\u78ba\u8a8d\u3092"},"content":{"rendered":"<p>\n\u4eca\u66f4\u306a\u304c\u3089\u5e74\u59cb\u306e\u96d1\u6587\u3067\u7a74\u57cb\u3081\u3092 | Moonmile Solutions Blog<br \/>\n<a href=\"http:\/\/www.moonmile.net\/blog\/archives\/3978\">http:\/\/www.moonmile.net\/blog\/archives\/3978<\/a>\n<\/p>\n<p>\n\u306e\u7d9a\u304d\u3002\n<\/p>\n<p>\n\u30ed\u30b8\u30c3\u30af\u306e\u78ba\u8a8d\u306e\u305f\u3081\u306b\u3001\u4e0b\u8a18\u306e\u3088\u3046\u306a\u30c1\u30fc\u30d7\u306a\u753b\u9762\u3092\u4f5c\u6210\u3059\u308b\u3002\n<\/p>\n<p><a href='http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2013\/01\/wpid-cworkblogimage20130117_01org.jpg'><img border='0' src='http:\/\/www.moonmile.net\/blog\/wp-content\/uploads\/2013\/01\/wpid-cworkblogimage20130117_01thum.jpg'\/><\/a><\/p>\n<p>\n\u3053\u306e\u624b\u306e\u30ed\u30b8\u30c3\u30af\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u306e\u306f\u3001UnitTest \u3092\u4f7f\u3046\u306e\u304c\u3044\u3044\u306e\u3067\u3059\u304c\u3001\u4eca\u56de\u306f UI \u306e\u30c1\u30a7\u30c3\u30af\u3082\u517c\u306d\u308b\u306e\u3067\u3001Windows \u30d5\u30a9\u30fc\u30e0\u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002\u6700\u521d\u306f\u3001\u3044\u304d\u306a\u308a Windows \u30b9\u30c8\u30a2 \u30a2\u30d7\u30ea\u306b\u3057\u3088\u3046\u304b\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\u3001UI \u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u30d0\u30a4\u30f3\u30c9\u3068\u6df7\u3056\u3063\u3066\u3084\u3084\u3053\u3057\u304f\u306a\u308b\u306e\u3067\u3001\u30d5\u30a9\u30fc\u30e0\u30a2\u30d7\u30ea\u3067\u4f5c\u6210\u3068\u3044\u3046\u3053\u3068\u3067\u3002\n<\/p>\n<p>\n\u30d5\u30a9\u30fc\u30e0\u306b\u66f8\u3044\u305f\u30b3\u30fc\u30c9\u306f\u4f7f\u3044\u6368\u3066\u306b\u306a\u308b\u306e\u3067\u3001\u3067\u304d\u308b\u3060\u3051\u7c21\u6f54\u306b&#8230;\u3068\u4e91\u3044\u307e\u3059\u304b\u3001\u30d5\u30a9\u30fc\u30e0\u3067\u3082Windows \u30b9\u30c8\u30a2 \u30a2\u30d7\u30ea\u3067\u3082\u305d\u308c\u306a\u308a\u306b\u52d5\u304f\u3088\u3046\u306b\u3057\u305f\u3044\u306e\u3067\uff08\u30b3\u30fc\u30c9\u30ec\u30d9\u30eb\u3067\u306f\u7121\u7406\u306a\u306e\u3067\u3001\u30ed\u30b8\u30c3\u30af\u306e\u624b\u7d9a\u304d\u30ec\u30d9\u30eb\u3067\uff09\u3001\u30ed\u30b8\u30c3\u30af\u306e\u547c\u3073\u51fa\u3057\u30c6\u30b9\u30c8\u3082\u517c\u306d\u3066\u3002\n<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\npublic partial class Form1 : Form\n{\n\tpublic Form1()\n\t{\n\t\tInitializeComponent();\n\n\t\t_board.Player1.EventSelCard += Player1_EventSelCard;\n\n\t\tlistBox1.Sorted = true;\n\t\tlistBox2.Sorted = true;\n\t\tlistBox3.Sorted = true;\n\t\tlistBox4.Sorted = true;\n\t\tlistBox5.Sorted = true;\n\n\t}\n\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ 2\u679a\u304b\u3089\u9078\u629e\u3059\u308b\n\t\/\/\/ &lt;\/summary&gt;\n\t\/\/\/ &lt;param name=&amp;quot;c1&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;param name=&amp;quot;c2&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;returns&gt;&lt;\/returns&gt;\n\tCard Player1_EventSelCard(Card c1, Card c2)\n\t{\n\n\t\tstring msg = string.Format(\n\t\t\t&amp;quot;{0} \u3068 {1} \u304c\u3042\u308a\u307e\u3059\u3002{2} \u3092\u9078\u629e\u3057\u307e\u3059\u304b\uff1f&amp;quot;,\n\t\t\tc1.ID, c2.ID, c1.ID);\n\t\tvar btn = MessageBox.Show(msg, &amp;quot;&amp;quot;, MessageBoxButtons.YesNo);\n\t\tif (btn == System.Windows.Forms.DialogResult.Yes)\n\t\t{\n\t\t\treturn c1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn c2;\n\t\t}\n\t}\n\n\tGameBoard _board = new GameBoard();\n\tPlayer _curPlayer;\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ \u5c71\u304b\u3089\uff11\u679a\u53d6\u5f97\n\t\/\/\/ &lt;\/summary&gt;\n\t\/\/\/ &lt;param name=&amp;quot;sender&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;param name=&amp;quot;e&amp;quot;&gt;&lt;\/param&gt;\n\tprivate void button1_Click(object sender, EventArgs e)\n\t{\n\t\tCard c = _board.Yama.GetCard();\n\t\t_board.Ba.PutCard(c);\n\t\t\/\/ \u753b\u9762\u306e\u66f4\u65b0\n\t\tScrUpdate();\n\t}\n\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ \u30de\u30c3\u30c1\u3057\u305f\u30ab\u30fc\u30c9\u3092\u5834\u304b\u3089\u53d6\u5f97\n\t\/\/\/ &lt;\/summary&gt;\n\t\/\/\/ &lt;param name=&amp;quot;sender&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;param name=&amp;quot;e&amp;quot;&gt;&lt;\/param&gt;\n\tprivate void button2_Click(object sender, EventArgs e)\n\t{\n\t\tvar lst = _board.Game.MatchBa(_board.Ba, _board.Ba.PlayerCard, _curPlayer);\n\t\t_board.Ba.GetCard(lst);\n\t\t_curPlayer.GetCard(lst);\n\t\t\/\/ \u753b\u9762\u306e\u66f4\u65b0\n\t\tScrUpdate();\n\t}\n\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ \u82b1\u672d\u3092\u914d\u308b\n\t\/\/\/ &lt;\/summary&gt;\n\t\/\/\/ &lt;param name=&amp;quot;sender&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;param name=&amp;quot;e&amp;quot;&gt;&lt;\/param&gt;\n\tprivate void button5_Click(object sender, EventArgs e)\n\t{\n\t\t\/\/ \u82b1\u672d\u3092\u914d\u308b\n\t\t_board.Reset();\n\t\t_curPlayer = _board.Player1;\n\t\t\/\/ \u753b\u9762\u306e\u66f4\u65b0\n\t\tScrUpdate();\n\t}\n\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ player1\u306e\u30ab\u30fc\u30c9\u3092\u5834\u306b\u51fa\u3059\n\t\/\/\/ &lt;\/summary&gt;\n\t\/\/\/ &lt;param name=&amp;quot;sender&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;param name=&amp;quot;e&amp;quot;&gt;&lt;\/param&gt;\n\tprivate void button3_Click(object sender, EventArgs e)\n\t{\n\t\tif (listBox2.SelectedIndex == -1) \n\t\t\treturn;\n\n\t\tvar c = (Card)listBox2.SelectedItem;\n\t\t_board.Player1.IntoBa(c);\n\t\t_board.Ba.PutCard(c);\n\t\t_curPlayer = _board.Player1;\n\t\t\/\/ \u753b\u9762\u306e\u66f4\u65b0\n\t\tScrUpdate();\n\t}\n\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ player2\u306e\u30ab\u30fc\u30c9\u3092\u5834\u306b\u51fa\u3059\n\t\/\/\/ &lt;\/summary&gt;\n\t\/\/\/ &lt;param name=&amp;quot;sender&amp;quot;&gt;&lt;\/param&gt;\n\t\/\/\/ &lt;param name=&amp;quot;e&amp;quot;&gt;&lt;\/param&gt;\n\tprivate void button4_Click(object sender, EventArgs e)\n\t{\n\n\t\tif (listBox4.SelectedIndex == -1)\n\t\t\treturn;\n\n\t\tvar c = (Card)listBox4.SelectedItem;\n\t\t_board.Player2.IntoBa(c);\n\t\t_board.Ba.PutCard(c);\n\t\t_curPlayer = _board.Player2;\n\t\t\/\/ \u753b\u9762\u306e\u66f4\u65b0\n\t\tScrUpdate();\n\t}\n\n\t\/\/\/ &lt;summary&gt;\n\t\/\/\/ \u753b\u9762\u306e\u66f4\u65b0\n\t\/\/\/ &lt;\/summary&gt;\n\tvoid ScrUpdate()\n\t{\n\t\tlistBox1.Items.Clear();\n\t\tlistBox2.Items.Clear();\n\t\tlistBox3.Items.Clear();\n\t\tlistBox4.Items.Clear();\n\t\tlistBox5.Items.Clear();\n\t\tlistBox1.Items.AddRange(_board.Ba.Cards.ToArray());\n\t\tlistBox2.Items.AddRange(_board.Player1.MyCards.ToArray());\n\t\tlistBox3.Items.AddRange(_board.Player1.TakenCards.ToArray());\n\t\tlistBox4.Items.AddRange(_board.Player2.MyCards.ToArray());\n\t\tlistBox5.Items.AddRange(_board.Player2.TakenCards.ToArray());\n\n\t\tlabel7.Text = _board.Ba.PlayerCard.ToString();\n\t}\n}\n<\/pre>\n<p>\n\u753b\u9762\u306e\u30ed\u30b8\u30c3\u30af\u306f\u57fa\u672c\u306f\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u306e\u30a4\u30d9\u30f3\u30c8\u30c9\u30ea\u30d6\u30f3\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u306a\u3093\u3089\u304b\u306e\u9078\u629e\u3092\u3057\u305f\u6642\u306b\u767a\u751f\u3057\u307e\u3059\u3002\u6614\u306f\u696d\u52d9\u30ed\u30b8\u30c3\u30af\u3068\u753b\u9762\u304b\u3089\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u5206\u96e2\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u300c\u30a4\u30d9\u30f3\u30c8\u3054\u3068\u306b\u95a2\u6570\u3092\u4f5c\u308b\u300d\u3063\u3066\u306a\u3053\u3068\u3092\u3084\u3063\u3066\u305f\u308a\u3057\u307e\u3059\u304c\u3001\u7169\u96d1\u306a\u306e\u3067\u3001\u6700\u8fd1\u306f\u30d1\u30b9\u3067\u3059\u306d\u3002\u3067\u3059\u304c\u3001NUnit \u306a\u3069\u306e\u81ea\u52d5\u30c6\u30b9\u30c8\u3092\u6709\u52b9\u306b\u50cd\u304b\u305b\u308b\u305f\u3081\u306b\u306f\u3001\u753b\u9762\u306e\u307b\u3046\u306b\u696d\u52d9\u30ed\u30b8\u30c3\u30af\u3092\u5165\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u306e\u304c\u30d9\u30bf\u30fc&#8230;\u306a\u306e\u3067\u3059\u304c\u3001\u3044\u307e\u306e\u3068\u3053\u308d\u3053\u308c\u3068\u3044\u3063\u305f\u5b9a\u756a\u304c\u3042\u308a\u307e\u305b\u3093\u3002<br \/>\n\u696d\u52d9\u30a2\u30d7\u30ea\u306e\u3088\u3046\u306a\u7c21\u5358\u306a\uff08\uff1f\uff09\u753b\u9762\u306e\u5834\u5408\u306b\u306f\u3001MVVM \u304b MVC \u3067\u5206\u96e2\u3055\u305b\u3066\u3001\u696d\u52d9\u30ed\u30b8\u30c3\u30af\u3092 NUnit \u3067\u30c6\u30b9\u30c8\u3057\u3066\u3001\u304f\u3063\u3064\u3051\u305f\u4e0a\u3067\u30a2\u30d7\u30ea\u4e0a\u3067\u518d\u30c6\u30b9\u30c8\u3063\u3066\u624b\u9806\u304c\u3088\u3044\u306e\u3067\u3059\u304c\u3001\u30b2\u30fc\u30e0\u306e\u5834\u5408\u306f\u3069\u3046\u306a\u3093\u3067\u3057\u3087\u3046\u306d\uff1f\u3063\u3066\u306e\u304c\u3001\u4eca\u306e\u79c1\u306e\uff08\u89e3\u6d88\u3057\u306a\u3051\u308c\u3070\u3044\u3051\u306a\u3044\uff09\u7591\u554f\u70b9\u3067\u3059\u3002\n<\/p>\n<p>\n\u305d\u3093\u306a\u8a33\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u3059\u308b\u30dc\u30bf\u30f3\u306e\u985e\u3068\u3001\u753b\u9762\u66f4\u65b0 ScrUpdate \u3068\u3044\u3046\u7c21\u5358\u306a\u7d44\u307f\u5408\u308f\u305b\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u30dc\u30bf\u30f3\u30a4\u30d9\u30f3\u30c8\u306e\u3068\u3053\u308d\u304c\u9577\u304f\u306a\u3063\u305f\u3089\u3001\u9069\u5b9c\u30ed\u30b8\u30c3\u30af\u306e\u307b\u3046\u3078\u79fb\u884c\u3063\u3066\u306a\u96f0\u56f2\u6c17\u3067\u7d44\u307f\u7acb\u3066\u308b\u3068\u3088\u3044\u304b\u3068\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4eca\u66f4\u306a\u304c\u3089\u5e74\u59cb\u306e\u96d1\u6587\u3067\u7a74\u57cb\u3081\u3092 | Moonmile Solutions Blog http:\/\/www.moonmile.net\/blog\/archives\/3978 \u306e\u7d9a\u304d\u3002 \u30ed\u30b8\u30c3\u30af\u306e\u78ba\u8a8d\u306e\u305f\u3081\u306b\u3001\u4e0b\u8a18\u306e\u3088\u3046\u306a\u30c1\u30fc &hellip; <a href=\"http:\/\/www.moonmile.net\/blog\/archives\/3982\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-3982","post","type-post","status-publish","format-standard","hentry","category-etc"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/3982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/comments?post=3982"}],"version-history":[{"count":0,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/posts\/3982\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/media?parent=3982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/categories?post=3982"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.moonmile.net\/blog\/wp-json\/wp\/v2\/tags?post=3982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}