Page 1 of 1

Interaktiv samtale - C#

Posted: 18 Feb 2013, 20:22
by Herbstein
Hej!

Jeg sidder og prøver at lave en interaktiv samtale for sjov, og kunne ikke finde ud af hvordan jeg "gemte" hvad brugeren svare (1/2 eller 3) i et variabel, og senere hentede det for at komme videre i samtalen... Lidt hjælp kunne være meget dejligt. Det er lavet i Visual Studio Express 2010, og er en konsol application. Her er min foreløbige kode:

Code: Select all

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string userName;
            int choiceOne;
            int personalityAngry = 0;
            int personalityHappy = 0;
            
            Console.WriteLine("Mathias:      Hej, hvad hedder du?");
            userName = Console.ReadLine();

            Console.WriteLine("Hej " + userName + "! Hvad laver du?");

            Console.WriteLine("Console:      Nu kan du vælg tre svarmuligheder! Skriv 1, 2 eller 3, for at     fortsætte samtalen");
            
            Console.WriteLine("1:      Sidder og skriver med dig...");
            Console.WriteLine("2:      Keder... Dig");
            Console.WriteLine("3:      Mine forældre er lig blevet skilt");

            choiceOne = int.Parse(Console.ReadLine());
            

            if (choiceOne = 1)
                Console.WriteLine("Sjovt, jeg sidder også og skriver med dig :D");
                personalityHappy = personalityHappy + 1;

            Console.ReadLine();
        }
    }
}
Rasmus

Re: Interaktiv samtale - C#

Posted: 18 Feb 2013, 23:07
by Code
Hvis du gerne vil have en liste over hvad han har svaret for hver gang kunne du lave en <list> (ville jeg gøre i unity, gætter på det samme her) eller array og gemme værdien for hver gang han laver et nyt træk. Så vil du kunne tilgå dem.

Re: Interaktiv samtale - C#

Posted: 18 Feb 2013, 23:42
by barkholt
Selvom jeg ikke har praktisk erfaring med C#, så er jeg ret sikker på at det er her det går helt galt:

Code: Select all

 if (choiceOne = 1)
                Console.WriteLine("Sjovt, jeg sidder også og skriver med dig :D");
                personalityHappy = personalityHappy + 1;
- Gætter på at C# bruger == til lighedstjek for heltal, ikke = (assignment).
- Du har glemt at bruge { } til at definere den blok der hører under if sætningen. Lige nu får du kun den første linje med.

Re: Interaktiv samtale - C#

Posted: 19 Feb 2013, 09:10
by Herbstein
Tak for svarene, kan helt sikkert hjælpe!

Re: Interaktiv samtale - C#

Posted: 26 Feb 2013, 17:28
by sunstar
Vi tager lige lidt rettelser og lidt udvidelser bare sådan rystet ud af hånden ...
(Der mangler sikkert lidt using's, og sikkert os lit syntax etc ... men så er der da lidt og google ...)

Code: Select all

using System.Xml.Serialization;
//... Something something ...

    class Program
    {
        static void Main(string[] args)
        {
            string userName;
            int choiceOne;
            int personalityAngry = 0;
            int personalityHappy = 0;
            
            Console.WriteLine("Mathias:      Hej, hvad hedder du?");
            userName = Console.ReadLine();

            do {

                Console.WriteLine("Hej " + userName + "! Hvad laver du?");
                Console.WriteLine("Console:      Nu kan du vælg tre svarmuligheder! Skriv 1, 2 eller 3, for at     fortsætte samtalen");
            
                Console.WriteLine("0:      Quit");
                Console.WriteLine("1:      Sidder og skriver med dig...");
                Console.WriteLine("2:      Keder... Dig");
                Console.WriteLine("3:      Mine forældre er lig blevet skilt");
                Console.WriteLine("5:      Save Last");
                Console.WriteLine("6:      Load Last");

                choiceOne = int.Parse(Console.ReadLine());
            

                switch (choiceOne ) {
                    case 1: 
                    {
                        Console.WriteLine("Sjovt, jeg sidder også og skriver med dig :D");
                        personalityHappy = personalityHappy + 1;
                    }
                    break;
                    case 5: 
                    {
                        SaveAnswor("c:\\Text.xml");
                    }
                    break;
                    case 6: 
                    {
                        LoadAnswor("c:\\Text.xml");
                    }
                    break;
                    dafault: 
                        Console.WriteLine("Hov jeg kender ikke den kommando ?");
                    break;
                }
            } while ( choiceOne != 0);

        }
		
         static void SaveAnswor(string FileName, int data)
        {
            using (FileStream stream = new FileStream(FileName, FileMode.Create, FileAccess.Write)) {
                try {
                    XmlSerializer serializer = new XmlSerializer(typeof(int));
                    serializer.Serialize(stream, data);
                    stream.Close();
                } catch (Exception e) {
                    Console.WriteLine(e.Message);
                }
            }
        }

        static int LoadAnswor(string FileName)
        {
            try {
                XmlSerializer serializer = new XmlSerializer(typeof(int));
                using (StreamReader reader = new StreamReader(FileName))
                {
                    return (int)serializer.Deserialize(reader);
                }
            } catch (Exception e) {
                Console.WriteLine(e.Message);
            }
            return 1; // Fallback
        }
    }
Det er altså ikke gennemtænkt at meget ... så hvis der er noget der virker helt fjollet så skyd en anden end mig .... Men der er da lidt keywords som du kan google lidt videre på :-)

Ps. xml objekt serialization giver ikke så meget mening før du har et objekt med flere properties ... men hey som sagt gik jeg os mest efter at komme med et par ord du kan google lidt videre på :lol:

hope it helps :geek:

Re: Interaktiv samtale - C#

Posted: 26 Feb 2013, 17:49
by Morten Brunbjerg
Når du skal til at forfatte replikkerne har jeg med fordel brugt det eksisterende software chat-mapper når jeg har skrevet branched dialogue for at beholde overblikket over store samtaler. Den kan håndtere en lignende samtale og du kan teste den i softwaren bagefter også og skrive et træ ud med alle replikker. Men du skal så have replikkerne ind i dit eget software bagefter.

http://www.chat-mapper.com

-
Morten Brunbjerg
http://mortenbrunbjerg.dk
41 67 69 89