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.

.NET MVP によるドキドキ・ライブコーディング! 小島の分

6,167 views

Published on

2015-01-31 MVP Community Camp 北陸会場
https://mvp.microsoft.com/ja-jp/mvp/comcamp-in-person-seminar.aspx
http://toyama-eng.connpass.com/event/9372/

「.NET MVP による、C# ドキドキ・ライブコーディング!!」
北信越の .NET MVP 3名が C# の魅力について語ります。LT や コーディング ライブ。

の小島の分のスライド。

アニメーションが有効な slideboom 版はこちら: http://bit.ly/1LBQM4Q

Published in: Technology
  • Be the first to comment

.NET MVP によるドキドキ・ライブコーディング! 小島の分

  1. 1. • • • •
  2. 2. • • http://www.microsoft.com/ja-jp/dev/campaign/csharp/story.aspx • 3 C丼
  3. 3. • •
  4. 4. 1. 2. 3. 1. 2.
  5. 5. • •
  6. 6. • • • •
  7. 7. • 石野さん のことだから… まさかとは思うけど、 他プレイヤーの GetPutCard メソッドを書き換えて勝てって 意味かも (謎)?
  8. 8. • • http://www.codeproject.com/Articles/37549/CLR-Injection-Runtime-Method-Replacer public static void 取り替え(this MethodInfo メソッド1, MethodInfo メソッド2) { unsafe { var メソッドへのポインター1 = メソッド1.MethodHandle.Value.ToPointer(); var メソッドへのポインター2 = メソッド2.MethodHandle.Value.ToPointer(); *((int*)new IntPtr(((int*)メソッドへのポインター1 + 1)).ToPointer()) = *((int*)new IntPtr(((int*)メソッドへのポインター2 + 1)).ToPointer()); } } unsafe! だめじゃん!!
  9. 9. メソッドが取り替えられないなら インスタンスを取り替えてしまえば 良いじゃない
  10. 10. こうして… こうだ!! 異物混入!!!
  11. 11. 全勝!
  12. 12. class 偽鈴木 : 偽プレイヤー { public override string GetPalyerName() { return "どうみても本物の鈴木"; } public override string GetPalyerImageName() { return "suzuki.png"; } } class 偽石野 : 偽プレイヤー { public override string GetPalyerName() { return "疑いようのない真の石野"; } public override string GetPalyerImageName() { return "ishino.png"; } }
  13. 13. public 裏工作をするプレイヤー() { 偽装工作.開始(ゲーム); 自分のことは棚に上げてイカサマされたときに訴える(); } void 自分のことは棚に上げてイカサマされたときに訴える() { const int 最大のパスの回数 = 3; Application.Current.MainWindow.Closing += (sender, e) => { if (GetPutCardが呼ばれた回数 < 最大のパスの回数) MessageBox.Show("イカサマだ!!", "或るプレイヤーからの訴え", MessageBoxButton.OK, MessageBoxImage.Warning); }; }
  14. 14. • •
  15. 15. • • • 最後の札、はしっこの札 (AかK)、次も自分が持ってる: 出す • 次が自分じゃない札: • とにかく止められるとき (パスできるとき) は止めてパス • パス3回だったら 「その札より後ろにある自分の札の枚数 - その札より後ろにある自分以外の 札の枚数」がなるべく多くなるやつを出す それぞれの出せる札で この基準で評価点をつけ、 評価点が最高の札を出す
  16. 16. • • 1. 7から遠い札ほど高評価 (出しても相手に有利になりにくい) 2. その札より後ろに自分の札があった場合 • 「後ろに自分の札までの距離」が近いほど高評価とする 評価が或る程度以上高け れば、パスできてもパス せずに出す
  17. 17. 珍現象発生!!
  18. 18. • 石野さんの勝ち!
  19. 19. • 石野さんの勝ち!
  20. 20.

×