text adventure

Status
Niet open voor verdere reacties.

thebest07111

Gebruiker
Lid geworden
28 nov 2011
Berichten
64
hallo.

ik ben bezig met een text adventure en tot nu tot nu toe heb ik dit.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace textadventure
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Please enter your name ");
            string name = Console.ReadLine();
            Console.WriteLine("So your name is {0}", name);
            Console.ReadKey();
            Console.WriteLine("could you please enter your date of birth {0}", name);
            string age = Console.ReadLine();
            Console.WriteLine("so your name is {0} and your date of birth is {1}", name, age);
            Console.ReadKey();
            Console.WriteLine("{0} lays in his bed with his eyes closed, when suddently he hears a scream from outside.", name); // vraag 1
            Console.ReadKey();
            Console.WriteLine("What do you do?");
            Console.WriteLine("a: you return to bed");
            Console.WriteLine("b: you decide to take a look outside");
            Console.WriteLine("c: you decide to call the cops");
            char mijnchar = Console.ReadKey().KeyChar;
            Console.WriteLine("");

            //vraag 1 antwoorden
            if (mijnchar.Equals('a'))
            {
                Console.WriteLine("you return to bed and you didnt know what happened");
                Console.ReadKey();
                Environment.Exit(0);
            }
            if (mijnchar.Equals('b'))
            {
                Console.WriteLine("You are goeing outside and you see someone beating another person");
                vraag1antwoordb();
            }
            if (mijnchar.Equals('c'))
            {
                Console.WriteLine("You call the cops but the person who did this came away");
                vraag1antwoordc();
            }
    
       }
        public static void vraag1antwoordb()
        {
            //vraag 1 antwoord b
            Console.WriteLine("The suspect is getting away");
            Console.WriteLine("What do you do");
            Console.WriteLine("a: you go after the suspect");
            Console.WriteLine("b: you call an ambulance and go after the suspect");
            Console.WriteLine("c: you call an ambulance and you let the suspect go");
            char mijnchar1 = Console.ReadKey().KeyChar;
            Console.WriteLine("");   
        }
        public static void vraag1antwoordc()
        {
            //vraag 1 antwoord c
            Console.WriteLine("You call the cops and explain everything, then you go back to bed");
            Console.ReadKey();
            Environment.Exit(0);
        }
        
        
    
    }



     

}


nu heb ik alleen een probleem.
als je bij vraag 1antwoord b bent
en je kiest daar weer b. dus you call an ambulance and go after the suspect.
dan moet die weer een vraag gaan stellen.

dus ik dacht dan zet ik dit neer.
Code:
if (mijnchar1.Equals('b'))
            {
                Console.WriteLine("You run really fast after the suspect");
                Console.ReadKey();
            }

alleen ik weet niet waar ik dit moet neerzetten in de code.

kan iemand mij helpen.

gr
 
Persoonlijk zou ik voor die vragen gewoon een klasse aanmaken, aangezien je nu voor één vraag al redelijk wat code kwijt bent en je code dus onoverzichtelijk wordt naarmate het aantal vragen toeneemt. Naast het feit dat de code daardoor stuk netter wordt is er ook nog het voordeel dat je veel minder regels code hoeft te schrijven. Aangezien ik me toch verveelde heb ik je even een voorbeeld gemaakt, al heb ik geen rekening met je huidige kennis genomen, maar je kunt deze functionaliteit opzoeken of zelf een alternatief schrijven voor wat het moet doen:



[cpp]
Vraag.cs:
namespace HelpmijNLVoorbeeld
{
public class Vraag
{
private List<string> vragen;
private int antwoordId;

public Vraag(List<string> vragen, string antwoord)
{
this.vragen = vragen;
this.antwoordId = vragen.FindIndex(v => v.Equals(antwoord)) + 1;
}

public bool GoedBeantwoord()
{

for (int vraagnr = 0; vraagnr < vragen.Count; vraagnr++)
{
string v = vragen[vraagnr];
if (v.Contains('|')) v = v.Remove(v.IndexOf('|'));

Console.WriteLine(String.Format("{0}: {1}", vraagnr + 1, v));
}
Console.Write("\nUw antwoord: ");

int geantwoord = 0;
Int32.TryParse(Console.ReadLine(), out geantwoord);

if (geantwoord != antwoordId)
{
string v = (geantwoord < 1 && geantwoord > vragen.Count ? "geen geldige keuze" : vragen[geantwoord - 1]);
if (v.Contains('|')) v = v.Remove(v.IndexOf('|'));

Console.WriteLine(String.Format("\nv\n", v));
return false;
}

return true;
}
}
}

Program.cs:
namespace HelpmijNLVoorbeeld
{
class Program
{
static void Main(string[] args)
{
// Een lijst met vragen waaruit de gebruiker moet kiezen
List<string> vraag1 = new List<string>() {
"you call an ambulance and you let the suspect go",
"you go after the suspect|you return to bed and you didnt know what happened", // het antwoord dat moet worden gegeven wanneer de gebruiker fout antwoord wordt dus onderscheiden door een | teken
"you call an ambulance and go after the suspect|You are goeing outside and you see someone beating another person"
};


List<string> vraag2 = new List<string>() {
"you call an ambulance and you let the suspect go",
"you go after the suspect|you return to bed and you didnt know what happened",
"you call an ambulance and go after the suspect|You are goeing outside and you see someone beating another person"
};

List<string> vraag3 = new List<string>() {
"you call an ambulance and you let the suspect go",
"you go after the suspect|you return to bed and you didnt know what happened",
"you call an ambulance and go after the suspect|You are goeing outside and you see someone beating another person"
};

List<Vraag> vragen = new List<Vraag>() {
// Om tijdens het aanmaken van de lijsten geen rekening te hoeven houden met waar de string nu precies in de lijst staat kun je het juiste antwoord het beste
// op de eerste plaats zetten en de lijst met vragen in willekeurige volgorde meegeven.
new Vraag(vraag1.Select(v => new { Index = System.Guid.NewGuid(), Value = v }).OrderBy(p => p.Index).Select(p => p.Value).ToList(), vraag1[0]),
new Vraag(vraag2.Select(v => new { Index = System.Guid.NewGuid(), Value = v }).OrderBy(p => p.Index).Select(p => p.Value).ToList(), vraag2[0]),
new Vraag(vraag3.Select(v => new { Index = System.Guid.NewGuid(), Value = v }).OrderBy(p => p.Index).Select(p => p.Value).ToList(), vraag3[0])
};

foreach (Vraag v in vragen)
{
while (!v.GoedBeantwoord())
{
// hier kun je eventueel nog aan de gebruiker vragen of hij het programma wilt stoppen
}
}
}
}
}
[/cpp]

edit: commentaar toegevoegd
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan