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

События. Имитация обезвреживания бомбы

03.05.2018, 00:41. Показов 2510. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется:
Написать программу имитирующую обезвреживание бомбы. Для этого: реализовать класс
Bomb и класс Timer.
Функциональность класса Bomb:
– Конструктор, передаваемый параметр – время, через которое бомба взорвется.
– Метод EnterCode – принимает код обезврежевания бомбы, если принятый код совпал с кодом сгенерированным бомбой – бомба считается обезвреженной.
– При создании экземпляра бомбы генерируется случайный код в заданном диапазоне и
задается время срабатывания бомбы (например код от 1 до 10, время срабатывания – 5 сек)
Функциональность класса Timer:
Класс Timer генерирует событие OnTick через заданный промежуток времени.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.05.2018, 00:41
Ответы с готовыми решениями:

Имитация события MouseDown из события KeyDown
Нужно эмитировать событие MouseDown из события KeyDown. и событие MouseUp из события KeyUp. Чтобы кнопка вела себя также как при нажатии...

Имитация события
Хочу из QGraphicsView::mousePressEvent эмитировать событие MainWindow::mousePressEvent, передавая QMouseEvent представления. Пробую ...

JS, HTML. Имитация пользовательского события click
Есть блок пагинации HTML. Нужно раз в 12 секунд имитировать нажатие кнопки "следующие" скриптом JS. <div...

14
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
03.05.2018, 16:33  [ТС]
На C#. Я не понимаю, как связать секундомер, введение "пароля" и что вообще будет в консоль выходить...
0
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
03.05.2018, 18:58  [ТС]
Но я так понимаю без толку создал тему...
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
03.05.2018, 21:10
Цитата Сообщение от Goshaa Посмотреть сообщение
Но я так понимаю без толку создал тему...
Ну если просто сидеть и ждать, то да. Могли бы попробовать, а здесь мы вам поможем
0
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
03.05.2018, 22:26  [ТС]
Согласен абсолютно с вами! Прошу меня простить, забыл свой недо код показать(
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
 class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();
            double endtime = 20;
            int cod =r.Next(1,10);
            Bomb boom = new Bomb(endtime,cod);
        }
    }
    public class Bomb
    {
        public double EndTime { get; private set; }
        public int cod { get; private set; }
        public Bomb(double time,int cod)
        {
            EndTime = time;
            this.cod = cod;
        }
 
        public int EnterCod()
        {
            
            Console.Clear();
            Console.WriteLine("Введит пароль");
            int entercod = Convert.ToInt32(Console.ReadLine());
            return entercod;
 
        }
        public void Detoxification()
        {
 
            while (cod != EnterCod())
            {
                Console.WriteLine("Вы ввели не верный пароль");
            }
        }
    }
    public class Timer
    {
 
 
    }
Вот что есть, как это всё дело связать до связать, что дописать тут я не понимаю.
0
50 / 39 / 17
Регистрация: 15.03.2018
Сообщений: 110
04.05.2018, 00:40
Я сделал бы так.
Подскажите, пожалуйста, как более адекватно закончить ввод при взрыве и как можно еще событие использовать.
А в целом оно даже работает
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
 
namespace ConsoleApp57
{
    class Bomb
    {
        int code;
        Timer timer;
        public Bomb(int time)
        {
            Random rnd = new Random();
            code = rnd.Next(1, 9);
            Console.WriteLine($"Секунд до взрыва {time}");
             timer = new Timer(time);
 
        }
        public void EnterCode()
        {
            int i=-1;
            while (i != code && timer.task.IsAlive)
            {
                Console.WriteLine("Введите код от бомбы(1-9)");
 
                i = Convert.ToInt32(Console.ReadLine());
            }
            timer.task.Abort();
            Console.WriteLine("Бомба обезврежена");
            
        }
 
    }
    class Timer
    {
        int time;
        public Thread task;
        public delegate void tk();
        public event tk OnTick;
        public Timer(int time)
        {
            this.time = time;
            OnTick += OnTickH;
            task = new Thread(Tick);
            task.Start();
        }
        public void Tick()
        {
            while (time > 0)
            {
                OnTick?.Invoke();
            }
            if (time == 0)
            {
                Console.WriteLine("Взрыв, Время вышло. 1 секунда до закрытия");
                
                Environment.Exit(1);
            }
        }
        public void OnTickH()
        {
            Thread.Sleep(1000);
            time -= 1;
        }
 
    }
}
C#
1
2
3
4
5
6
7
8
9
10
 class Program
    {
        static void Main(string[] args)
        {
 
            Bomb bomb = new Bomb(10);
            bomb.EnterCode();
            Console.ReadKey();
        }
    }
0
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
04.05.2018, 09:39  [ТС]
Оу, не плохо) Спасибо, но вот да, как бы сделать что бы после каждого ввода пароля, если он не верный, выводилось новое время?
0
50 / 39 / 17
Регистрация: 15.03.2018
Сообщений: 110
04.05.2018, 09:57
Goshaa, Новое? может оставшееся?
Добавьте в класс Timer свойство:
C#
1
2
3
4
public int Time
        {
            get { return time; }
        }
И обращайтесь к нему в методе ввода кода, перед каждым вводом.
0
04.05.2018, 10:19

Не по теме:

Взрывы... обезвреживания... Сейчас бы Роскомнадзор не пришёл, да не закрыл нам форум из-за этого :D

0
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
05.05.2018, 00:27  [ТС]
Да, окей. А как сделать что бы при закрытии потока, не закрывалась сразу консоль, по истечению n времени??

Добавлено через 40 минут
И вот ещё проблема, никак не пойму.. Если код ввел не правильно выводит сообщение о взрыве. Но после нажатия клавиши выдаёт ошибку: System.FormatException: "Входная строка имела неверный формат."
И ссылается на эту строку в while:
C#
1
 i = Convert.ToInt32(Console.ReadLine());
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
05.05.2018, 02:02
эта строка кода, при любом раскладе пытается перевести введенное пользователем в !целое число!, коим enter, не является
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.05.2018, 04:58
Используйте в конце Main:
C#
1
Console.ReadKey();
0
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
05.05.2018, 12:59  [ТС]
Даже если ReadKey всё равно ошибка
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.05.2018, 13:20
А если так?
C#
1
int.TryParse(Console.ReadLine(), out i);
0
1 / 1 / 1
Регистрация: 25.10.2017
Сообщений: 155
05.05.2018, 13:56  [ТС]
В этом случае не правильно работает. Не ругается, но и по нажатию Enter, либо другой клавиши. Выводит и Что обозврежена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2018, 13:56
Помогаю со студенческими работами здесь

Имитация нажатия на кнопку из другого события
Добрый день! Подскажите, пожалуйста, можно ли как-то сымитировать нажатие Button1 в другом компоненте при определенном событии? Что...

Логические бомбы
Товарищи, нужна помощь! В своей работе я должна использовать логическую бомбу... Что это такое? Нашла только то, что это якобы вирус. А как...

Бомбы (разные)
https://www.cyberforum.ru/humour/thread42875.html Хорошие картинки... только про Россию и ядерное оружие обидно стало... это не мы...

Программа-эмуляция разминирования бомбы
Вот условие:программа эмуляция разминирования бомбы. Бомба имеет КОД ДЕАКТИВАЦИИ - это случайное число от 100 до 200 генерируется в...

Анимация сброса бомбы самолетом на корабль
Здраствуйте . нужна помощь , немнога переделать программу. что нужно : мне хотелось бы что бы самолёт на данной анимации не...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru