Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 88

Волнообразное движение объектов

13.11.2012, 15:03. Показов 3671. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такой вопрос, как осуществить волнообразное движение объектов при их столкновении на C#
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2012, 15:03
Ответы с готовыми решениями:

Движение объектов по форме
Господа,есть попытка создания игры "Гонки".Не получается при обновлении координаты Y для объекта бордюр ,заставить его перемещаться по...

Движение объектов по форме
Помогите пожалуйста, озадачился вопросом, мне нужно сделать форму, на ней два объекта один просто статичный располагается в нижнем правом...

Движение объектов.Таймер
Задача: Форма содержит поля ввода «Количество кнопок», «Скорость движения px/сек», кнопки «Старт», «Стоп» и панель темно-синего цвета....

21
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 88
24.11.2012, 18:03  [ТС]
Студворк — интернет-сервис помощи студентам
как сделать чтобы каждый шар имел свой собственный поток, а то вроде у меня один на всех
0
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 88
28.11.2012, 21:00  [ТС]
Почему отталкивание не очень правильное?

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System.Threading;
using System.Collections;
 
delegate void delEv();
delegate void del(int x, int y);
class Ball
{
    public event delEv ev;
    public event del ev1;
    private int x, y;
    private int dx, dy;
    private bool life;
    private bool waiting;
    private Thread thr;
    Balls balls;
    private Random r;
 
    public int X
    {
        get { return x; }
        set { x = value; }
    }
 
    public int Y
    {
        get { return y; }
        set { y = value; }
    }
 
    public Ball(int X, int Y, int Dx, int Dy, Balls balls)
    {
        x = X; y = Y; dx = Dx; dy = Dy; this.balls = balls;
        life = true; waiting = false;
        thr = new Thread(new ThreadStart(run));
        thr.Start();
    }
 
    public void suspendBall() { waiting = true; }
    public void resumeBall()
    {
        lock (this)
        {
            waiting = false;
            Monitor.Pulse(this);
        }
    }
    public void FinishBall() { life = false; }
    public void run()
    {
        while (life)
        {
            x += dx; y += dy;
            if (x > balls.Width - 30 || x < 0)
            {
                dx = -dx;
 
            }
            if (y > balls.Height - 30 || y < 0)
            {
                dy = -dy;
 
            }
            lock (this)
            {
                if (waiting)
                    Monitor.Wait(this);
            }
            if (ev != null)
            {
                ev();
            }
            if (ev1 != null)
            {
                ev1(x, y);
            }
            Thread.Sleep(50);
        }
    }
 
    public void Handler(int X, int Y)
    {
        r = new Random();
        if ((Math.Abs(((x+30)/2)-((X+30)/2))<15)&&((Math.Abs(((y+30)/2)-((Y+30)/2))<15)))
        {
            dx = -dx; dy = -dy;
        }
    }
}
 
public class Balls : Form
{
 
    private Button butAdd;
    private Button butR;
    ArrayList aL;
    Random r;
    private bool run;
 
    public Balls()
    {
 
        aL = new ArrayList();
        r = new Random();
        run = true;
 
        butAdd = new Button();
        butAdd.Location = new Point(100, 24);
        butAdd.Size = new Size(100, 50);
        butAdd.Text = "ADD";
        butAdd.Click += new EventHandler(OnButAdd);
        Controls.Add(butAdd);
 
        butR = new Button();
        butR.Location = new Point(100, 74);
        butR.Size = new Size(100, 50);
        butR.Text = "RANDOM";
        butR.Click += new EventHandler(ToRand);
        Controls.Add(butR);
    }
    void OnButAdd(object obj, EventArgs arg)
    {
        Ball a;
        Ball b = new Ball(r.Next(this.Width), r.Next(this.Height), r.Next(5, 10), r.Next(5, 15),
                 this);
        b.ev += new delEv(this.Invalidate);
        aL.Add(b);
        a = b;
        for (int i = 0; i < aL.Count - 1; i++)
        { //b.ev1 += new del(aL[i].Handler);
            b = (Ball)aL[i];
            a.ev1 += new del(b.Handler);
        }
 
 
 
    }
 
    void ToRand(object obj, EventArgs arg)
    {
 
        for (int i = 0; i < aL.Count; i++)
        {
            Ball k = (Ball)aL[i];
            k.X = r.Next(this.Width);
            k.Y = r.Next(this.Height);
 
        }
 
    }
 
 
    protected override void OnPaint(PaintEventArgs arg)
    {
        base.OnPaint(arg);
        for (int i = 0; i < aL.Count; i++)
        {
            Ball b = (Ball)aL[i];
            arg.Graphics.DrawEllipse(new Pen(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))), b.X, b.Y, 30, 30);
            arg.Graphics.FillEllipse(new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))), b.X, b.Y, 30, 30);
        }
 
    }
 
 
 
    protected override void OnClosed(EventArgs e)
    {
        base.OnClosed(e);
        for (int i = 0; i < aL.Count; i++)
        {
            Ball b = (Ball)aL[i];
            b.FinishBall();
        }
    }
 
 
    static void Main()
    {
        //Balls balls = new Balls();
        Application.Run(new Balls());
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.11.2012, 21:00

Случайное появление и движение объектов
Здравствуйте, очень нужна помощь, ну ничего в голову не приходит честное слово...нужно закончить игрушку. Игрушка типа fishy, где рыбка...

Одновременное движение разных объектов
Добрый день, я пишу арканоид и столкнулся с такой проблемой: по отдельности у меня движутся мячик (по таймеру) и платформа (по клавишам),...

Движение объектов в потоках: исправить код
ребят помогите плиз ... нужно чтоб zaprav объект( красный) приблизился к объекту ship(синий) когда ship.F=0 и к объекту ...

Одновременное движение двух объектов (на клавиатуре)
Всем доброго времени суток! В общем-то сабж - столкнулся с проблемой, что два игрока не могут одновременно передвигать своих персонажей:...

движение объектов в C#
Есть солнечная система. нужно сделать так чтоб планеты двигались по эллипсу вокруг солнца, как задать движение?????


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru