Beispiel #1
0
        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("コンボ処理完了");
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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;
        }