Пример #1
0
        void _thread(object obj)
        {
            byte g = (byte)obj;

            if (Attack_Button.InvokeRequired)
            {
                Attack_Button.Invoke(new MethodInvoker(delegate { Attack_Button.Enabled = true; }));
            }
            if (STOIKA_BUTTON.InvokeRequired)
            {
                STOIKA_BUTTON.Invoke(new MethodInvoker(delegate { STOIKA_BUTTON.Enabled = true; }));
            }
            sw = new Stopwatch();
            sw.Start();
            while (!Hero_Attacked)
            {
                if (sw.ElapsedMilliseconds >= 20000)
                {
                    Hero_Attacked = true;
                }
            }
            sw.Stop();
            UpdInfo.Invoke(this, new NumOfEnemy {
                i = g
            });
        }
Пример #2
0
        void _thread2(object obj)
        {
            if (hodiki.InvokeRequired)
            {
                hodiki.Invoke(new MethodInvoker(delegate
                {
                    hodiki.Text      = "<--Ход противника";
                    hodiki.ForeColor = Color.Red;
                }));
            }
            byte   g   = (byte)obj;
            Random rnd = RandomProvider.GetThreadRandom();

            // Ход врага
            if (Attack_Button.InvokeRequired)
            {
                Attack_Button.Invoke(new MethodInvoker(delegate { Attack_Button.Enabled = false; }));
            }
            if (STOIKA_BUTTON.InvokeRequired)
            {
                STOIKA_BUTTON.Invoke(new MethodInvoker(delegate { STOIKA_BUTTON.Enabled = false; }));
            }

            if (rnd.NextDouble() > 0.25) //бьёт с вероятностью 75%
            {
                if (rnd.NextDouble() <= (double)hero.BlockChance / 100)
                {
                    if (stoika_opt)
                    {
                        if (rnd.NextDouble() <= enemy.EvadeChance) //10 процентов на срабатывание контратаки
                        {
                            //enemy.HP -= hero.DMG;
                        }
                        else if (rnd.NextDouble() <= 0.1)
                        {
                            enemy.HP -= hero.DMG;
                        }
                    }
                }//заблочил
                else
                {
                    if (rnd.NextDouble() <= (double)hero.EvadeChance / 100)
                    {
                    }   //увернулся
                    else
                    {
                        if (rnd.NextDouble() <= (double)enemy.CriticalDMGChance / 100) //крит. шанс
                        {
                            hero.HP -= (int)(enemy.DMG * (enemy.CriticalDMG / 100));
                        }
                        else
                        {
                            hero.HP -= enemy.DMG;
                        }
                    }
                }
            }
            else //Блокирует с +25% шансом, не бьёт
            {
                Enemy_is_blocking  = true;
                enemy.BlockChance += 25;
            }
            if (stoika_opt)
            {
                stoika_opt         = false;
                hero.BlockChance  -= 50;
                hero.DMG          -= 7;
                enemy.EvadeChance -= 30;
            }
            Hero_Attacked = false;
            Thread.Sleep(1500);
            if (hodiki.InvokeRequired)
            {
                hodiki.Invoke(new MethodInvoker(delegate
                {
                    hodiki.Text      = "<--Ваш ход";
                    hodiki.ForeColor = Color.Green;
                }));
            }
            UpdInfo.Invoke(this, new NumOfEnemy {
                i = g
            });
        }
Пример #3
0
        void Update_Info_thread(object obj)
        {
            byte g = (byte)obj;

            if (Player_HP.InvokeRequired)
            {
                Player_HP.Invoke(new MethodInvoker(delegate { Player_HP.Text = string.Format("HP: {0}/{1}", hero.HP, hero.FULLHP); }));
            }
            if (Enemy_HP.InvokeRequired)
            {
                Enemy_HP.Invoke(new MethodInvoker(delegate { Enemy_HP.Text = string.Format("HP: {0}/{1}", enemy.HP, enemy.FULLHP); }));
            }
            string Hero_text  = string.Format(@"Full HP: {0}
Damage: {1}
Evade Chance: {2}
Block Chance: {3}
CriticalDMG %: {4}
CriticalDMG: {5}%", hero.HP, hero.DMG, hero.EvadeChance, hero.BlockChance, hero.CriticalDMGChance, hero.CriticalDMG);
            string Enemy_text = string.Format(@"Full HP: {0}
Damage: {1}
Evade Chance: {2}
Block Chance: {3}
CriticalDMG %: {4}
CriticalDMG: {5}%", enemy.HP, enemy.DMG, enemy.EvadeChance, enemy.BlockChance, enemy.CriticalDMGChance, enemy.CriticalDMG);

            if (Hero_Stats.InvokeRequired)
            {
                Hero_Stats.Invoke(new MethodInvoker(delegate { Hero_Stats.Text = Hero_text; }));
            }
            if (Enemy_Stats.InvokeRequired)
            {
                Enemy_Stats.Invoke(new MethodInvoker(delegate { Enemy_Stats.Text = Enemy_text; }));
            }
            if (hero.HP <= 0)
            {
                Thread t = Thread.CurrentThread;
                fight = false;
                enemyRectanglepos.RemoveAt(g);
                enemys.RemoveAt(g);
                foreach (Thread thr in thList)
                {
                    thr.Resume();
                }
                LoadEnemySightAndWay();
                if (pictureBox2.InvokeRequired)
                {
                    pictureBox2.Invoke(new MethodInvoker(delegate { pictureBox2.Image = Image.FromFile(Environment.CurrentDirectory + "\\ImagesH\\Battle_tendence.png"); }));
                }
                if (Attack_Button.InvokeRequired)
                {
                    Attack_Button.Invoke(new MethodInvoker(delegate
                    {
                        Attack_Button.Enabled = false;
                        Attack_Button.Visible = false;
                    }));
                }
                if (STOIKA_BUTTON.InvokeRequired)
                {
                    STOIKA_BUTTON.Invoke(new MethodInvoker(delegate
                    {
                        STOIKA_BUTTON.Enabled = false;
                        STOIKA_BUTTON.Visible = false;
                    }));
                }
                if (Player_HP.InvokeRequired)
                {
                    Player_HP.Invoke(new MethodInvoker(delegate
                    {
                        Player_HP.Visible = false;
                    }));
                }
                if (Enemy_HP.InvokeRequired)
                {
                    Enemy_HP.Invoke(new MethodInvoker(delegate
                    {
                        Enemy_HP.Visible = false;
                    }));
                }
                if (Hero_Stats.InvokeRequired)
                {
                    Hero_Stats.Invoke(new MethodInvoker(delegate
                    {
                        Hero_Stats.Visible = false;
                    }));
                }
                if (Enemy_Stats.InvokeRequired)
                {
                    Enemy_Stats.Invoke(new MethodInvoker(delegate
                    {
                        Enemy_Stats.Visible = false;
                    }));
                }
                if (hodiki.InvokeRequired)
                {
                    hodiki.Invoke(new MethodInvoker(delegate
                    {
                        hodiki.Visible   = false;
                        hodiki.Text      = "<--Ваш ход";
                        hodiki.ForeColor = Color.Green;
                    }));
                }
                t.Abort();
            }
            else if (enemy.HP <= 0)
            {
                if (pictureBox2.InvokeRequired)
                {
                    pictureBox2.Invoke(new MethodInvoker(delegate { pictureBox2.Image = Image.FromFile(Environment.CurrentDirectory + "\\ImagesH\\Battle_tendence.png"); }));
                }
                Thread t = Thread.CurrentThread;
                fight = false;
                enemyRectanglepos.RemoveAt(g);
                enemys.RemoveAt(g);
                foreach (Thread thr in thList)
                {
                    thr.Resume();
                }
                LoadEnemySightAndWay();
                if (hodiki.InvokeRequired)
                {
                    hodiki.Invoke(new MethodInvoker(delegate
                    {
                        hodiki.Visible   = false;
                        hodiki.Text      = "<--Ваш ход";
                        hodiki.ForeColor = Color.Green;
                    }));
                }
                if (Attack_Button.InvokeRequired)
                {
                    Attack_Button.Invoke(new MethodInvoker(delegate
                    {
                        Attack_Button.Enabled = false;
                        Attack_Button.Visible = false;
                    }));
                }
                if (STOIKA_BUTTON.InvokeRequired)
                {
                    STOIKA_BUTTON.Invoke(new MethodInvoker(delegate
                    {
                        STOIKA_BUTTON.Enabled = false;
                        STOIKA_BUTTON.Visible = false;
                    }));
                }
                if (Player_HP.InvokeRequired)
                {
                    Player_HP.Invoke(new MethodInvoker(delegate
                    {
                        Player_HP.Visible = false;
                    }));
                }
                if (Enemy_HP.InvokeRequired)
                {
                    Enemy_HP.Invoke(new MethodInvoker(delegate
                    {
                        Enemy_HP.Visible = false;
                    }));
                }
                if (Hero_Stats.InvokeRequired)
                {
                    Hero_Stats.Invoke(new MethodInvoker(delegate
                    {
                        Hero_Stats.Visible = false;
                    }));
                }
                if (Enemy_Stats.InvokeRequired)
                {
                    Enemy_Stats.Invoke(new MethodInvoker(delegate
                    {
                        Enemy_Stats.Visible = false;
                    }));
                }
                t.Abort();
            }
            else
            {
                if (Hero_Attacked)
                {
                    Turn_Enemy.Invoke(this, new NumOfEnemy {
                        i = g
                    });
                }
                else
                {
                    Turn_Hero.Invoke(this, new NumOfEnemy {
                        i = g
                    });
                }
            }
        }