Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2015, 20:15   #1
Legrandes
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 16
По умолчанию Как остановить действие до опредленного момента.

Доброго времени суток форумчане. я новичок, поэтому прошу не кидать помидорами.

Пишу программку под рулетку. Постараюсь описать все как можно подробнее.

Имеется последовательность.

Красное - Черное - Черное -Красное - Красное - Красное.

Всего 6 пунктов. Сперва программа говорит ставить на первый пункт , то есть на красное, далее происходит ввод с клавиатуры и если выпал проигрыш, программа говорит ставить на второй пункт ( то есть черное ) и так далее пока не выиграет. После выигрыша, программа опять сразу переходит на первый пункт.

для перехода к началу я использую break;

Теперь представим что у меня 3 РАЗНЫЕ последовательности. И программа должна работать сразу по 3. Например в первой последовательности выиграл первый пункт, программа должна сразу начаться заново, но это она не должна делать пока не выиграют 2 другие последовательности. Вопрос в том . как сделать , чтобы процесс перехода по пунктам последовательности становился на паузу до тех пор , пока остальные не выиграют ???

Каждая последовательность написана отдельным методом. То есть как приостановить метод , пока другой метод не дойдет до определенного момента ?


Код:

public static int[] red = { 1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 39 };
public static int[] black = { 2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35 };
public static string win = "Вы выиграли";

 static void Main(string[] args)
        {  
                while (true)
                {
                    krug();
                }
            
            Console.Read();

        }

        public static void krug()
        {

 while (true)
            {
                Console.WriteLine("Ставьте  на Красное");

                int n = int.Parse(Console.ReadLine());
                if (odd.Contains(n))
                {
                    Console.WriteLine(win);
                    Console.Clear();
                    break;
                }
}

Последний раз редактировалось Legrandes; 14.01.2015 в 20:19.
Legrandes вне форума Ответить с цитированием
Старый 14.01.2015, 20:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ничего непонятно.
Что "остановить"? Как вы их запустите все 3 одновременно? Если ввод из консоли, то вы же можете запустить их только по очереди, как-то так:
Код:
while (true)
{
    krug();
    method2();
    method3();
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2015, 20:53   #3
Legrandes
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 16
По умолчанию

Ок тогда стоит вопрос как можно несколько методов запустить одновременно ?
Тут нужно использовать потоки ? Или есть другой способ
Legrandes вне форума Ответить с цитированием
Старый 14.01.2015, 20:57   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык дело не в методах и потоках, а в вводе от пользователя.

Смотря как это должно выглядеть, я не очень понял чего вы хотите добиться.

Наверно проще не в консоли, а на форме (windows forms или wpf) с 3 полями ввода.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2015, 21:09   #5
Legrandes
Пользователь
 
Регистрация: 14.04.2012
Сообщений: 16
По умолчанию

Ок. постараюсь проще объяснить.
Есть 3 цикла действий.В каждом цикле по 6 действий. Все циклы должны работать одновременно. При вводе с клавиатуры , происходят действия сразу в 3 циклах. То есть сразу 3 цикла начинают работу одновременно. При запуске будет выведено на экран
"
Первый цикл. Красное ? Y/N
Второй Цикл. Красное ? Y/N
Третий Цикл. Черное ? Y/N

"
Понятно что будет один вариант из двух. То есть. Если выпало красное , первые два цикла должны закончится , а третий будет продолжаться пока не будет ответ "Y". Когда и в третьем цикле будет "Y", тогда все циклы должны опять начать работу заново. Вопрос : " Если первый цикл закончился после ввода "Y", Как остановить этот цикл, до тех пор пока в других циклах не будет "Y". ?
Legrandes вне форума Ответить с цитированием
Старый 14.01.2015, 21:39   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так пользователь в любом случае не может вводить одновременно, даже если будет несколько потоков.

Можно просто сделать выбор что вводить.
Код:
while (true)
{
    int sw = int.Parse(Console.ReadLine());

    if (sw == 1) // или switch вместо if-ов
    {
         krug();
    }
    else if ... 
}
Если я правильно понял, то еще методы видимо надо переделать, чтобы вводить только 1 раз в них вместо цикла до Y, и их состояние сохранять (Y ли уже или еще нет).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.01.2015, 07:16   #7
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

http://msdn.microsoft.com/ru-ru/libr...v=vs.110).aspx
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 15.01.2015, 09:38   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Толку тут от потоков? Все равно придется их синхронизировать для ввода пользователем (+ практически вся работа в нем и состоит).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как меняется со временем температура паяльника от момента включения (Pascal) Mike9362 Помощь студентам 0 04.06.2012 19:28
Бейсик. Вычисление момента инерции,момента сопротивления площади поперечного сечения для кольца kostia-92 Помощь студентам 0 26.06.2011 09:58
Как остановить Excel kzld Microsoft Office Excel 5 07.11.2010 13:33
Как остановить процесс Volkogriz Общие вопросы Delphi 1 15.01.2009 10:40
Как остановить поток? Никки Win Api 3 06.12.2007 22:04