C# ドキドキ ライブ コーディング!!
~ 小島の分 ~
BuriKaigi 2022 @ Online
29th January 2022
Fujio Kojima
#BuriKaigi
#BuriKaigi_s
自己紹介
2
今回はダイヤモンド ゲーム
3
• テクニカルな解法
• 正攻法
• 過去のやり口からしてチート
知らんけど
他の方の戦略を予想
4
ところで、過去のライブ コーディングでは…
5
ところで、過去のライブ コーディングでは…
6
あれ?
「デビル小島?」
7
小島だよ!
というわけで、今回は…
8
デベロッパーとして大切なことに立ち返る!
9
デベロッパーとして大切なことに立ち返る!
10
1
♪ひとりーの小さな手ー
何もーできないけどー
それでもみんなの手と手を合わせればー
なにかできるー なにーかーできるー♪
♪ひとりーの人間はー
とても弱いけれどー
それでもみんながみんなが集まればー
強くくなれるー つよーくーなーれーるー♪
ひとりの小さな手 - YouTube
12
ここまで何か邪悪なこと言ってます?
我々は、ライブ コーディング チーム!
13
仲間を信じる!
14
仲間への感謝
なんでも自分でやろうとしない
車輪の再発明をしない
三人寄れば文殊の知恵
安心して任せられる仲間
我々は、ライブ コーディング チーム!
15
安心して任せられる仲間!
ここで、小さな疑問
16
果たしてダイアモンド ゲームの
AI を作る人間が、
4人のチームに4人も要るのか?
1
というわけで今回の戦略は…
仲間
今回の戦略
18
static Dictionary<Board.Piece, IPlayer> 大切な仲間たち = new() {
{ Board.Piece.Red , new PlayerSuzuki (suzukisPiece ) },
{ Board.Piece.Orange, new PlayerIshino (Board.Piece.Orange) }
#if !AGAINST_CHEAT
,{ Board.Piece.Blue , new PlayerMurohoshi(Board.Piece.Blue ) }
#endif
};
仲間
今回の戦略
19
static Dictionary<Board.Piece, IPlayer> 大切な仲間たち = new() {
{ Board.Piece.Red , new PlayerSuzuki (suzukisPiece ) },
{ Board.Piece.Orange, new PlayerIshino (Board.Piece.Orange) }
#if !AGAINST_CHEAT
,{ Board.Piece.Blue , new PlayerMurohoshi(Board.Piece.Blue ) }
#endif
};
なんでも自分で
やろうとしない
車輪の再発明
をしない
三人寄れば
文殊の知恵
仲間
今回の戦略
20
var swappedBoard = SwapPieces(board, 仲間のAI);
var movePoint = 仲間のAI.GetMovePoint(swappedBoard);
Board SwapPieces(Board board, Board.Piece hisPiece)
{
var cloneBoard = Clone(board);
SwapPieces(board, cloneBoard, hisPiece); // 駒のスワップ
SwapGoals (cloneBoard, hisPiece); // ゴールのスワップ
return cloneBoard;
}
仲間
今回の戦略
21
var (仲間のAI, movePoint, score) =
仲間たちの考えたすごい手.BestOrDefault(手 => 手.score);
// ここで、すごい手を考えてくれた仲間に感謝する!
return movePoint;
信頼
• 鈴木さんが、チーム福井 (鈴木さんと私) に
最適な手以外を打つわけがない
リスペクト
• 石野さんがぬるい手を選ぶわけがない
• えーと… なんかうまいことやってくれそう
知らんけど
ゆるぎない信頼とリスペクト
22
信頼
• 鈴木さんが、チーム福井 (鈴木さんと私) に
最適な手以外を打つわけがない
リスペクト
• 石野さんがぬるい手を選ぶわけがない
• えーと… なんかうまいことやってくれそう
知らんけど
ゆるぎない信頼とリスペクト
23
安心して任せられる
仲間たち
• 私のために 仲間
感謝サービス
24
Azure 上に ASP.NET Core 6 で、
感謝サービスを用意しました!
(これを作る方に時間かかった)
https://diamondgamewebburikaigi2022.azurewebsites.net
• 私のために 仲間
感謝サービス
25
仲間への感謝
Azure 上に ASP.NET Core 6 で、
感謝サービスを用意しました!
(これを作る方に時間かかった)
https://diamondgamewebburikaigi2022.azurewebsites.net
感謝サービス
26
私の代わりに
良い手を考えてくれたら、
ここで褒めます
一番貢献してくれるのは
はたして誰でしょう?
【おまけ】 チート対策
27
• プレイヤー室星
仲間への信頼… とは…
鼻から悪魔が
出るかもしれないので

BuriKaigi 2022 「C# Live Coding!」 小島の分