/// <summary> /// ゲームのメインルーチン /// </summary> /// <param name="player1Id"></param> /// <param name="player2Id"></param> /// <param name="method"></param> /// <returns></returns> public async Task <Game> GameAsync( string player1Id, string player2Id, string method) { if (string.IsNullOrEmpty(player2Id)) { player2Id = Const.COM_NAME_DB; } bool isAIAuto = true; if (method == "コンピューター") { isAIAuto = false; } Game game = await _context.Game.Where(x => x.Player1Id == player1Id && x.Player2Id == player2Id) .SingleOrDefaultAsync(); OffenceModeEnum offenceMode = method.GetOffenceMode(); switch (offenceMode) { case OffenceModeEnum.Run: case OffenceModeEnum.ShortPass: case OffenceModeEnum.LongPass: case OffenceModeEnum.Pant: case OffenceModeEnum.Kick: case OffenceModeEnum.Cpu: if (offenceMode == OffenceModeEnum.Cpu) { int i = 0; int currentQ = game.CurrentQuarter; while (i < 1000 && game.CurrentPlayer == 2 && game.CurrentQuarter == currentQ && game.RemainSeconds > 0) { i++; offenceMode = _AIThink(game); _Offence(offenceMode, game); if (!isAIAuto) { break; } } } else { _Offence(offenceMode, game); } _context.Update(game); await _context.SaveChangesAsync(); break; case OffenceModeEnum.Empty: case OffenceModeEnum.Initialize: default: if (game != null && offenceMode == OffenceModeEnum.Initialize) { _context.Remove(game); game = null; } if (game == null) { game = InitializeGame(); game.Player1Id = player1Id; game.Player2Id = player2Id; _context.Update(game); await _context.SaveChangesAsync(); } break; } return(game); }
public static (string method, int seconds) GetOffenceModeData(this OffenceModeEnum value) { var dic = new Dictionary <OffenceModeEnum, ValueTuple <string, int> >() { { OffenceModeEnum.Run, ("ラン", 15) },