Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 14.10.2011
Сообщений: 89

Удалить объекты при их столкновении

27.05.2012, 13:53. Показов 2102. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,нужна помощь, нужно изменить программу.
Условие задачи:В окне перемещаются объекты, отталкиваясь от стенок окна. В окне также перемещается специальный объект. Каждый объект имеет свой поток, перемещающий его. Объекты, координата х которых близка к координате х специального объекта, исчезают. Объекты размещаются случайно в окне при нажатии на кнопку.

Язык вообще не знаю, преподаватели совсем сума сошли сказали 3 языка программирования за месяц изучить! c#,Java,C++/CLI . Нужна помощь!
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
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;
using System.Threading;
//необходимо добавить библиотеки system.windows.form и system.drawing
 
delegate void Del (int X, int Y, Ball B);
 
class Ball
{
    int num;    // номер шарика
    int x, y;   // координаты
    ChangeColor cC;
    public event Del ev; // событие
    Thread t;   // поток
    public bool colR;
    bool life; // индикатор жизни шарика
    public Ball(int N, int X, int Y, ChangeColor CC)
    {
        num = N;
        colR = true;
        cC = CC;
        x = X;
        y = Y;
        life = true;
        t = new Thread(new ThreadStart(Moving));
        t.Start();
    }
    public int Number { get { return num; } }
    public int X { get { return x; } }
    public int Y { get { return y; } }
 
    void Moving()
    {
        int dx = 10, dy = 15;
        while (life)
        {
            x += dx;
            y += dy;
            if (x < 25 || x > cC.Width - 25) dx = -dx;
            if (y < 25 || y > cC.Height - 25) dy = -dy;
            Thread.Sleep(25);
            cC.Invalidate();
            if (ev!=null) ev(x,y, this); //генерирование события
 
        }
    }
    public void Handler(int X, int Y, Ball B)
    {
        if ((Math.Abs(x - X) < 25) && (Math.Abs(y - Y) < 25))
        {
            colR = false; 
            B.colR = false;
        }
 
    }
}
 
 
class ChangeColor : Form
{
    Ball ball;
    ArrayList AL;
    Button but;
    Random rand;
    public ChangeColor()
    {
        this.Text = "ChangeColor"; //название окна
        rand = new Random(); //случайное число
        Button but = new Button();
        but.Location = new Point(10, 10);
        but.Size = new Size(40, 40); //само свойство есть ссылка на объект
        but.Text = "Okay";
        but.Click += new EventHandler(ButClick); //плюс ставится потому что так трабует граматика
        this.Controls.Add(but); //добавляем кнопку на форму
        AL = new ArrayList();
    }
 
    private void ButClick(object ob, EventArgs args) // Обработчик нажатия
    {
        ball = new Ball(1, rand.Next(this.Width - 60), rand.Next(this.Height - 60), this);
        for (int i = 0; i < AL.Count; i++)
        {
            ball.ev += new Del(((Ball)AL[i]).Handler);
        }
        AL.Add(ball);
        Invalidate();
    }
 
    protected override void OnPaint(PaintEventArgs e) // override?
    {
        base.OnPaint(e);
        for (int i = 0; i < AL.Count; i++)
            if (ball != null)
            {
                Color color = (((Ball)AL[i]).colR)? Color.Red : Color.Blue;
                    e.Graphics.DrawEllipse(new Pen(color, 5), ((Ball)AL[i]).X, ((Ball)AL[i]).Y, 50, 50);
            }
    }
 
 
    static void Main(string[] args)
    {
        ChangeColor cC = new ChangeColor();    //создаем объект класса окно
        Application.Run(cC);                   // запуск этого окна
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2012, 13:53
Ответы с готовыми решениями:

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

Удаление шаров через ArrayList при столкновении со специальным объектом
В окне перемещаются объекты, отталкиваясь от стенок окна. В окне также перемещается специальный объект. Каждый объект имеет свой поток,...

Арканоид. Как уничтожить объект при столкновении с другим объектом
Делаю игру арканоид кирпичи которые являются двухмерным массивом класса Box так вот что делать с ними при столкновении? как заставить...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2012, 13:53
Помогаю со студенческими работами здесь

Удалить все объекты и создать объекты - потомки
Как сделать клоны объекта в другом объекте? Использую метод Instantiate Есть метод public Transform Elem; //элемент на...

Удаление при столкновении объектов
ребят как сделать так что бы при столкновении двух шаров они удалялись ? например нажал на кнопку и два шара поехали друг к другу и при...

Застывает игра при столкновении
Пытаюсь при столкновении с объектом,камеру переместить плавно вверх, через Camera.transform.position = Vector3.Lerp...

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

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru