Come posso fare lo stesso codice ripetere fino a quando il giocatore risponde in modo diverso?

Quindi sto cercando di fare un gioco di avventura di testo per il mio computer di classe. Conosco le basi di C#, ma ovviamente mi manca qualcosa perché non riesco a ottenere il codice di diritto. Voglio fare l’uomo chiedere al giocatore una domanda che, se si risponde no si ripete sostanzialmente la domanda perché devono rispondere di sì o di continuare a giocare. Ho provato con un ciclo for ma che non ha funzionato molto bene. Comunque, questo è il codice che ho:

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("MINECRAFT TEXT ADVENTURE: PART 1!");
            Console.WriteLine("\"Hello traveller!\" says a man. \"What's your name?\"");
            string playerName = Console.ReadLine();
            Console.WriteLine("\"Hi " + playerName + ", welcome to Minecraftia!\nI would give you a tour of our little town but there really isn't much left to\nsee since the attack.\"");
            Console.WriteLine("He looks at the stone sword in your hand. \"Could you defeat the zombies in the hills and bring peace to our land?\"");
            string answer1 = Console.ReadLine();
            if (answer1 == "yes")
            {
                Console.WriteLine("\"Oh, many thanks to you " + playerName + "!\"");
                answerNumber = 2;
            }
            else if (answer1 == "no")
            {
                Console.WriteLine("\"Please " + playerName + "! We need your help!\"\n\"Will you help us?\"");
                answerNumber = 1;
            }
            else
            {
                Console.WriteLine("Pardon me?");
                answerNumber = 0;
            }
            for (int answerNumber = 0; answerNumber < 2;)
            {
                Console.WriteLine("\"We need your help!\"\n\"Will you help us?\"");
            }
        }
    }
}

Qualsiasi aiuto o suggerimento per quello che ho potuto fare sarebbe molto apprezzato perché ho esaurito le idee.

 

4 Replies
  1. 1

    Penso che la cosa migliore sarebbe usare un ciclo do while, check out il Esempio MSDN per una guida

    using System;
    public class TestDoWhile 
    {
        public static void Main () 
        {
            int x = 0;
            do 
            {
                Console.WriteLine(x);
                x++;
            } while (x < 5);
        }
    }
  2. 8

    È possibile utilizzare while loop:

    while (answer != "yes")
    {
        //while answer isn't "yes" then repeat question
    }

    Se si vuole fare distinzione tra maiuscole e minuscole controllo:

    while (!answer.Equals("yes", StringComparison.InvariantCultureIgnoreCase))
    {
        //while answer isn't "yes" then repeat question
    }

    Si può anche provare a utilizzare do-while ciclo, dipende dalle vostre esigenze.

  3. 0

    Qualcosa di simile a questo:

    bool isGoodAnswer= false;
    while (!isGoodAnswer)
    {
    //Ask the question
    //Get the answer
    isGoodAnswer = ValidateAnswer(answer);
    }
    • stesso concetto, solo ampliare un po ‘ – potrebbe essere while (!ValidateAnswer(answer))

Lascia un commento