/// <summary> /// Конструктор для бота /// </summary> /// <param name="difficulty">Определяет, как быстро будет перемещаться ракетка бота, и, как далеко она видит. Может принимать значения от 1 до 11 (11 — имбобот).</param> /// <param name="controlledRacket">Какую ракетку будет контролировать бот</param> /// <param name="ball">Ссылка на объект-мяч</param> public AI(Form owner, int difficulty, racket controlledRacket, ball ball) { //копируем аргументы в локальные переменные this.difficulty = difficulty; racket = controlledRacket; this.owner = owner; this.ball = ball; if (difficulty <= 10) { //объявляем таймер, который будет управлять ракеткой бота, и запускаем его Timer aiTimer = new Timer(); if (difficulty != 0) { aiTimer.Interval = 10; } aiTimer.Tick += new EventHandler(aiTimer_Tick); aiTimer.Start(); } else { racket.Height = owner.ClientSize.Height - 24; racket.Top = 12; } }
public mpClient(Form1 Owner, racket Racket, racket YourRacket, ball Ball, Label Score) { ball = Ball; owner = Owner; racket = Racket; score = Score; yourRacket = YourRacket; receiveTimer.Interval = 1; receiveTimer.Start(); receiveTimer.Tick += new System.EventHandler(receive_Tick); }
public mpServer(Form1 Owner, racket Racket, racket YourRacket, ball Ball, Label Score) { racket = Racket; ball = Ball; score = Score; yourRacket = YourRacket; owner = Owner; receiveTimer.Interval = 10; receiveTimer.Start(); receiveTimer.Tick += new System.EventHandler(receive_Tick); sendSnapshot(); }
// { что-то непостижимо непонятное public Form1() { InitializeComponent(); rendering = new Rendering(this); this.Width = Settings.Window.width; this.Height = Settings.Window.height; ball = new ball(); score.Left = Convert.ToInt32((this.Width - score.Width) / 2); score.Top = ClientSize.Height - score.Height - 10; racket_1 = new racket(this, true); racket_2 = new racket(this, false); switch (dataTransfer.gameType) { case 0: //vs AI if (dataTransfer.aiDifficulty == 11) { score.Text = "0"; score.Left = Convert.ToInt32((this.Width - score.Width) / 2); } new AI(this, dataTransfer.aiDifficulty, racket_1, ball); new playerRacket(this, racket_2); break; case 1: //hotseat new playerRacket(this, racket_1); new playerRacket(this, racket_2); break; case 2: //multiplayer if (dataTransfer.typeOfNet == "server") { mp = new mpServer(this, racket_2, racket_1, ball, score); new playerRacket(this, racket_1); } else { mp = new mpClient(this, racket_1, racket_2, ball, score); new playerRacket(this, racket_2); } break; case 3: //screensaver new AI(this, 9, racket_1, ball); new AI(this, 9, racket_2, ball); break; } // инициализураыфвфыпкуопгзем основной таймер, отвечающий за передвижение квадрата-мяча timer.Tick += new EventHandler(timer_Tick); timer.Interval = 10; timer.Start(); // if (dataTransfer.typeOfNet != "client") { bonusTimer.Tick += new EventHandler(bonusTimer_Tick); bonusTimer.Interval = 1000; bonusTimer.Start(); sinTimer.Tick += new EventHandler(sinTimer_Tick); sinTimer.Interval = 100; } bonusCloseTimer.Tick += new EventHandler(bonusCloseTimer_Tick); bonusCloseTimer.Interval = 1000; bonusCloseTimer.Start(); // настраиваем физику physX.currPower = 5; // скорость (она же — сила пинка по мячику) передвижения if (rnd.Next(2) == 0) // начальный угол перемещения мячика в градусах (0 — вправо, 90 — вверх и т.д.) { physX.deltaAngle = -60 + rnd.Next(120); } else { physX.deltaAngle = 120 + rnd.Next(120); } physX.getProjection(); //фигачим проекцию на оси Хэ и Угрик. //в данной программе: //проекция — кол-во пикселей, на которое переместится мяч за один ход/тик/иличтотамещёунас }