IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Ракета и Цель., Хаос происходящий в потоках. c++/minGW
Andrewshkovskii
сообщение 18.12.2008 17:33
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Есть желание написать программу, реализующую действия ракеты и её цели. Задаются координаты цели для ракеты, стрелками на клавиатуре можно менять положение цели в 2-х мерном пространстве, ракета должна отслеживать цель. Все это должно производиться "параллельно"..

Код исходный большой(т.е там файлов листинга просто много). Я знаю, что один вольво отвечает на мои безумные посты, на него и надежда вся.smile.gif
В общем, в коде я оставил комментарии, где происходит "неконтролируемое", они в 2х файлах main и realiz.cpp. Код в архиве...

Сообщение отредактировано: Andrewshkovskii - 18.12.2008 17:58


Прикрепленные файлы
Прикрепленный файл  ev.zip ( 3.04 килобайт ) Кол-во скачиваний: 155
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 19.12.2008 1:12
Сообщение #2


Гость






Цитата
Ну, видимо, если убрать SetEvent ,допустим, в ChangeCoordTarget, то поток с "полетом ракеты" не узнает о том, что координата поменялась ...
Если убрать SetEvent в ChangeCoordTarget, то поток с полетом ракеты никогда не выйдет из ожидания WaitForSingleObject, потому что событие - с автосбросом, как только один WaitFor... его дождался - оно сбрасывается, и если его опять не установить, то больше ни один WaitFor... его не дождется... Обращай на это внимание. Так что SetEvent-ы в обоих потоках нужны для того, чтобы запустить друг друга (твой изначальный ответ был неверен: один поток все-же запустится, а вот какой именно - это решает системный планировщик заданий).

Цитата
почему-то ракета не летит за целью, а просто перебирает координаты(x++,y--).
С твоей функцией у меня ракета снесла 4 цели из 4-х...

Цитата
выводиться ascii код нажатой клавиши.
Не нужен? Убери
            // ResetEvent(changeCoordEvent);
cout << (int)key << endl; // <--- Вот эту строчку


Сообщение отредактировано: volvo - 19.12.2008 13:35
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Andrewshkovskii   Ракета и Цель.   18.12.2008 17:33
Andrewshkovskii   с одной проблемой в case разобрался. совсем забыл ...   18.12.2008 18:00
volvo   А можно объяснить, что ты задумывал сделать вот ту...   18.12.2008 18:32
Andrewshkovskii   switch (choise) { case 'n':// если ответ...   18.12.2008 18:45
Andrewshkovskii   Одну проблему нашел, где вычисляется соотношение к...   18.12.2008 19:35
volvo   Задумка неплохая, НО... Объясни мне, зачем у тебя ...   18.12.2008 20:12
Andrewshkovskii   Честно говоря не совсем. НЕ совсем я понимаю в син...   18.12.2008 20:19
volvo   Смотри... Я ничего не менял в файлах Rocket.cpp и ...   18.12.2008 22:01
Andrewshkovskii   ну интересуют все закомментированные инструкции, в...   18.12.2008 23:24
volvo   Нет-нет... Это как раз для того, чтобы показать те...   18.12.2008 23:56
Andrewshkovskii   я сделал такое лицо сейчас - :dry: У меня лишь п...   19.12.2008 0:08
volvo   вот сейчас тупо вставил твой код, попробывал ...   19.12.2008 0:21
Andrewshkovskii   Volvo, скажу одно - тебе можно только позавидовать...   19.12.2008 0:24
volvo   Если убрать SetEvent в ChangeCoordTarget, то поток...   19.12.2008 1:12
Andrewshkovskii   про аски-код - не заметил, извиняюсь. Странно, но ...   19.12.2008 1:22
volvo   Кстати, чтобы ракета наводилась на цель, достаточн...   19.12.2008 1:25
Andrewshkovskii   Про вывод из потоков понятно.НО проблема-то не в в...   19.12.2008 1:30
volvo   Мой вариант функции слежения тоже работает стабиль...   19.12.2008 1:36
Andrewshkovskii   Missile at : 8 ,-8 missile report: target at 15278...   19.12.2008 1:45


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.06.2025 14:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"