Портал образовательно-информационных услуг «Студенческая консультация»

  
Телефон +3 8(066) 185-39-18
Телефон +3 8(093) 202-63-01
 (093) 202-63-01
 studscon@gmail.com
 facebook.com/studcons

<script>

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 

  ga('create', 'UA-53007750-1', 'auto');

  ga('send', 'pageview');

 

</script>

Розробка програмного додатку "Гра Пінг-Понг"

Тип работы: 
Курсова робота
К-во страниц: 
38
Язык: 
Українська
Оценка: 

(верхняя грань)

_angle = _angle + (180 - 2 * _angle);
if (CheckCollision()) //Если столкновение с одной из ракеток
{
ChangeAngle();      //меняем угол
ChangeDirection();  //меняем направление
}
ChangeBallPoint(); //Изменить координаты шарика
if (_ball.X >= RightBorder) //если мяч коснулся правого края
{
_ball.LeftResult += 1; //Левому игроку +1 очко
GameReset();            //Перезапуск игры
}
if (_ball.X <= LeftBorder) //Коснулся левого края
{
_ball.RightResult += 1; //Правому игроку +1
GameReset();
}
if ((_ball.RightResult == gameEndScore) || (_ball.LeftResult == gameEndScore))
{GameEnd();}}
Метод для перемалювання м’яча:
private void ChangeBallPoint() //перерисовка шарика
{
double radians = (Math.PI / 180) * _angle; //радианы
//Vector - структура. Представляет смещение в двухмерном пространстве.
Vector vector = new Vector
{
X = Math.Sin(radians),
Y = -Math.Cos(radians)
};
//Перерисовка
_ball.X += vector.X * SpeedOfBall;
_ball.Y += vector.Y * SpeedOfBall;
}
Метод запуску наступного раунду:
private void GameReset()        //Мячик в начальное положение
{
if (!Podacha)               //если подача не тру то шарик ставим к правой ракетке
{
leftActive = false;     //левая не тру
_ball.Y = _rightPad.YPosition + 25; //ставим координаты шарика
_ball.X = 760;
Podacha = true;                     // меняем подачу
timer.Stop();                       //останавливаем таймер, чтобы можно было двигать ракетку с шариком
_IsEnabled = false;                  // и тут в не тру, чтобы о
}
else //иначе левая ракетка
{
leftActive = true;
_ball.Y = _leftPad.YPosition+25;
_ball.X = 20;
Podacha =false;
timer.Stop();
_IsEnabled = false;
}}
Методи, необхідні для перевірки зіткнень, зміни вугла та напрямку польоту м’ячика:
private void ChangeAngle() //изменение угла шара
{
if (_ball.MovingRight == true) //если двиг. вправо истина
_angle = 270 - ((_ball.Y + 10) - (_rightPad.YPosition + 40));
else                            //если влево
_angle = 90 + ((_ball.Y + 10) - (_leftPad.YPosition + 40));}
private void ChangeDirection() //изменение направления
{
if (_ball.MovingRight)          // если истина
_ball.MovingRight = false;  //устанавливаем false
else                            //если false
_ball.MovingRight = true;   //ставим в true
}
private bool CheckCollision() //проверка коллизий
{bool collisionResult = false; //результат проверки
if (_ball.MovingRight)        //если мяч двигается вправо
collisionResult = _ball.X >= 760 && (_ball.Y > _rightPad.YPosition - 20 && _ball.Y < _rightPad.YPosition + 80); //проверка с правой ракеткой
else
collisionResult = _ball.X <= 20 && (_ball.Y > _leftPad.YPosition - 20 && _ball.Y < _leftPad.YPosition + 80); //проверка с левой ракеткой
return collisionResult;}
Вікно «Результати» містить інформацію про результати гри і викликається, якщо один із гравців набере зазначену кількість очків (Рис. 2.4)
 
Рисунок 2.4 Вікно «Результати», вкладника «Результати»
Код XAML:
<Window x:Class="PongGame.Results"
        Title="Результаты!" Height="411.508" Width="643.761" ResizeMode="NoResize" Loaded="Window_Loaded_1" WindowStartupLocation="CenterScreen">    <Grid Margin="0,0,4,7" >          
                 <TabControl>
            <TabItem Header="Результаты" Foreground="#FF56009E">
                <Grid Height="385" Background="#FF9BC0FF" >
                    <Label x:Name="lbl2" Content="Победитель:" HorizontalAlignment="Left" Margin="86,235,0,0" VerticalAlignment="Top" FontSize="24" FontFamily="Times New Roman" FontStyle="Italic" Foreground="#FF001ABD" Panel.ZIndex="5"/>
                    <Label x:Name="lblWinner" Content="&quot;Ник победителя&quot;" HorizontalAlignment="Left" Margin="242,235,0,0" VerticalAlignment="Top" FontSize="28" Height="32" Width="342" Background="{x:Null}" Foreground="#FFDA0063" Panel.ZIndex="5"/>
                    <Label Content="vs" HorizontalAlignment="Left" Margin="303,115,0,0" VerticalAlignment="Top" FontSize="25" Background="#FF3E5DAE" Foreground="#FF002C9E" FontStyle="Italic"/>
                    <Menu HorizontalAlignment="Left" Height="36" VerticalAlignment="Top" Width="624">
                        <Menu.Background>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="White" Offset="0.003"/>
                                <GradientStop Color="#FF91C8FF" Offset="1"/>
                            </LinearGradientBrush>
                     
CAPTCHA на основе изображений