Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 12.05.2019
Сообщений: 3

Событие должно возникать при столкновении шара с границей формы

24.04.2020, 13:42. Показов 552. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно исправить событие так,чтобы оно возникало только при столкновении шара с границей формы. Событие должно принимать только 1 параметр,который говорит с какой стороны (вертикальной или горизонтальной произошло событие). Не понимаю как правильно это сделать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
namespace Shar
{
    class Figure 
    {
        public delegate void Collide(float deltaX, float deltaY, float Z, float W, out float X, out float Y);
        public float DeltaX { get; set; }
        public float DeltaY { get; set; }
        public float X;
        public float Y;
        public int Width { get; set; }
        public int Height { get; set; }
 
        public event Collide Collize;
 
        public Figure(float posX, float posY, int width, int height, float dX, float dY)
        {
            X = posX;
            Y = posY;
            Width = width;
            Height = height;
            DeltaX = dX;
            DeltaY = dY;
        }
 
        public void Move(int width, int height)
        {
            
            if (X + Width > width)
                DeltaX = -DeltaX;
            if (Y + Height > height)
                DeltaY = -DeltaY;
            if (X < 0)
                DeltaX = -DeltaX;
            if (Y < 0)
                DeltaY = -DeltaY;
 
            Collize(DeltaX, DeltaY, X, Y, out X, out Y);
        }
 
        public void Draw(Graphics g)
        {
            g.DrawEllipse(Pens.Blue, X, Y, Width, Height);
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
namespace shar
{
    public partial class Form1 : Form
    {
        Figure figure = new Figure(100, 100, 100, 100, 3, 3);
        public Form1()
        {
            InitializeComponent();
            
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
 
            Timer timer = new Timer();
            timer.Interval = (10);
            timer.Tick += timer1_Tick;
            timer.Start();
 
            figure.Collize += delegate (float DeltaX, float DeltaY, float Z, float W, out float X, out float Y)
            {
                X = Z + DeltaX;
                Y = W + DeltaY;
            };
        }
   
        private void timer1_Tick(object sender, EventArgs e)
        {
            figure.Move(ClientRectangle.Width, ClientRectangle.Height);
            Invalidate();
 
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
 
            figure.Draw(e.Graphics);
        }
 
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2020, 13:42
Ответы с готовыми решениями:

Движение символа и смена направления движения при столкновении с границей окна
как сделать, чтобы символ передвигался и, доходя до рамки менял направление на обратное пишу на чистом C многопоточную программу модели...

Движение шарика, смена направление при столкновении с границей или другим объектом
Расположить на форме таймер, фигуру «круг» и фигуру «прямо-угольник». Разработать приложение, которое работает следующим образом: ...

Какой код нужно ввести чтобы мяч менял направление при столкновении с границей или с прямоугольником?
Расположить на форме таймер, фигуру «круг» и фигуру «прямо-угольник». Разработать приложение, которое работает следующим образом: ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2020, 13:42
Помогаю со студенческими работами здесь

Событие при столкновении двух Image
Привет! Пока я только учусь,и мне нужна помощь. Для реализации одного проекта нужно сделать так,чтобы при &quot;столкновении&quot; двух...

Стала возникать "Ошибка при создании формы" после публикации
Накануне вечером запускал нормально. После полез в свойства проекта, воспользовался функцией публикация. Большое ничего не трогал. ...

При копировании текста в буфер обмена, должно происходить событие
Как сделать что бы при копировании в буфер обмена, определенного текста происходило событие? Например при копировании из адресной строки...

MaskedTextBox1 событие по системным часам - что должно вызывать это событие?
Добрый день! Помогите разобраться с ситуацией пожалуйста. На форме висит элемент maskedTextBox с маской DateTime. (00:00) Задача, чтобы он...

как сделать так, что-бы иконки (или изображения) при изменении размера формы не оставались за ее границей, а переходили на следующую строчку
Привет всем :) Подскажите пожалуйста: как сделать так, что-бы иконки (или изображения) при изменении размера формы не оставались...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru