2014-11-13 4 views
-7

Дело в том, что я хочу иметь возможность увеличить/уменьшить переменную (int), нажимая клавиши со стрелками вверх и вниз. Но как я могу манипулировать переменной, поэтому она идет от 3 до 1 и назад от 1 до 3 снова?Подсчет до определенного номера и начало снова + назад

Я использую Visual C# express 2010 и это приложение Windows Console! Извините за беспокойство!

Я отчаянно пытаюсь попасть на C# и борюсь с такими основными вещами. Я был бы очень благодарен, если бы кто-нибудь мог мне помочь в этом. Я получил это далеко, это должно стать меню на котором пользователь может прокручивать три варианта: 1- Новые игры // 2- загрузить игру и 3- Выход игры

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int iMOP = 0; 

      ConsoleKeyInfo keyInfo = Console.ReadKey(); 
      if (keyInfo.Key == ConsoleKey.UpArrow){ 
      } 
      else if (keyInfo.Key == ConsoleKey.DownArrow){ 
      } 

       switch (iMOP) 
       { 
        case 0: 
         break; 
        case 1: 
         break; 
        case 2: 
         break; 
       } 
     } 
    } 
} 

Дополнительно: Постараюсь для обновления меню с помощью Console.Clear, хотя мне придется вычислять проблему подсчета. Я перевел это на это сейчас: И ЭТО РАБОТАЕТ СЕЙЧАС, СПАСИБО ДЛЯ ВХОДА, ПАРОВ!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.CursorVisible = false; 

      int iMOP = 1; 

      Console.WriteLine(" >>New Game"); 
      Console.WriteLine(" Load Game"); 
      Console.WriteLine(" Exit Game"); 

      while (iMOP != 5) 
      { 
       { 
        ConsoleKeyInfo keyInfo = Console.ReadKey(); 
        if (keyInfo.Key == ConsoleKey.UpArrow) 
        { 
         iMOP--; 
        } 
        else if (keyInfo.Key == ConsoleKey.DownArrow) 
        { 
         iMOP++; 
        } 
       } 

       if (iMOP == 0) 
       { 
        iMOP = 3; 
       } 
       else if (iMOP == 4) 
       { 
        iMOP = 1; 
       } 

       switch (iMOP) 
       { 
        case 1: 
         Console.Clear(); 
         Console.WriteLine(" >>New Game"); 
         Console.WriteLine(" Load Game"); 
         Console.WriteLine(" Exit Game"); 
         break; 
        case 2: 
         Console.Clear(); 
         Console.WriteLine(" New Game"); 
         Console.WriteLine(" >>Load Game"); 
         Console.WriteLine(" Exit Game"); 
         break; 
        case 3: 
         Console.Clear(); 
         Console.WriteLine(" New Game"); 
         Console.WriteLine(" Load Game"); 
         Console.WriteLine(" >>Exit Game"); 
         break; 
       } 
      } 
     } 
    } 
} 
+7

Непонятно, что вы имеете в виду ... если вы реагируете на нажатия клавиш, это будет определять, увеличиваете или уменьшаете переменную. Возможно, если вы разместили код, который у вас есть, и объяснили разницу между тем, что он делает и что вы хотите, вам было бы легче помочь вам. –

+1

Итак, вы хотите, чтобы номер «обернулся»? Оператор модуля ('%') - ваш друг здесь. Если вы опубликуете то, что у вас есть, было бы легче помочь. – BradleyDotNET

+4

Когда ваш вопрос включает какой-либо пользовательский интерфейс или ввод (например, клавиши со стрелками, инициирующие процесс), вы должны указать, с какой платформы вы работаете, потому что вы получите разные ответы: WPF, Windows Forms, Web? –

ответ

1

Для «петли» чисел; заменить:

if (iMOP == 0) 
{ 
    iMOP = 3; 
} 
else if (iMOP == 4) 
{ 
    iMOP = 1; 
} 

с:

iMOP = (iMOP % 3) + 1; 

% возвращает остаток после деления; поэтому он может только возвращать 0, 1 или 2. Затем вы добавляете 1, чтобы получить диапазон 1, 2 и 3. Обратите внимание, что этот трюк точно такой же, как тот, который вы используете для масштабирования случайного двойного:

int scaledRandom = (rand.NextDouble() % max) + min; 
+0

Можете ли вы сослаться на учебник, который поможет мне, скажем, перейти в другое меню? Я не хочу, чтобы все это происходило, если бы заявления или циклы навсегда. –

+0

@FoX Theres на самом деле не учебник для этого. В консольном приложении; вложенная система меню - нетривиальная конструкция. У меня есть хорошая мысль; но его немного выше начального уровня C#. Если вы зададите новый вопрос об этом; Я постараюсь помочь. – BradleyDotNET