async Task ShowCombo() { waitedTime = int.TryParse(waitedTimeText.Text, out waitedTime) ? Math.Max(30, waitedTime) : 800; var isFalenDrop = fallDoropCheckBox.Checked; UnSelect(); WriteLineLog(); WriteLineLog("コンボ処理開始"); int comboNum = 0; while (true) { var combo = PuzzDraPInvoke.EvalCombo(board); DrawBoard(); comboNum += combo; if (combo >= 1) { WriteLineLog("+" + combo + "コンボ"); } await Task.Delay(waitedTime); if (combo == 0) { break; } var pushed = PuzzDraPInvoke.PushDownDrops(board); DrawBoard(); await Task.Delay(waitedTime); if (isFalenDrop) { PuzzDraPInvoke.FillBoardRandom(board); } DrawBoard(); await Task.Delay(waitedTime); } WriteLineLog("合計" + comboNum + "コンボ"); WriteLineLog("コンボ処理完了"); }
private void Form1_Load(object sender, EventArgs e) { logTextBox.Enabled = false; mainPictureBox.Focus(); PuzzDraPInvoke.Initialize(); dropImages = new[] { new Bitmap(size, size), new Bitmap("火ドロップ.png"), new Bitmap("水ドロップ.png"), new Bitmap("木ドロップ.png"), new Bitmap("光ドロップ.png"), new Bitmap("闇ドロップ.png"), new Bitmap("ハートドロップ.png"), }; //初期はランダム生成 board = GenerateRandomBoard(); //描画 DrawBoard(); }
async Task CalcAutoMovemnt() { if (isAnimating) { return; } int beamWeight; beamWeight = int.TryParse(beamWeightText.Text, out beamWeight) ? Math.Max(beamWeight, 1) : 50; WriteLineLog(); WriteLineLog("ルート解析開始"); WriteLineLog("ビーム幅: " + beamWeight); await Task.Delay(10); isAnimating = true; var startTime = DateTime.Now; var tup = await PuzzDraPInvoke.BeamSerach(board, beamWeight); var elapsed = DateTime.Now - startTime; WriteLineLog("ルート解析完了"); WriteLineLog("解析時間:" + elapsed.TotalSeconds + "秒"); int score = tup.Item2; var route = tup.Item3; int startRow = tup.Item4; int startColumn = tup.Item5; WriteLineLog("開始地点 (上, 左) = (" + startRow + ", " + startColumn + ")"); await MoveDropByRoute(startRow, startColumn, route); await ShowCombo(); WriteLineLog(); isAnimating = false; }