Interaktiv samtale - C#

Herbstein
Level 4 - Newbie
Posts: 48
Joined: 29 Dec 2012, 14:15

Interaktiv samtale - C#

Unread post by Herbstein » 18 Feb 2013, 20:22

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

User avatar
Code
Level 39 - Hitman
Posts: 394
Joined: 13 Feb 2013, 14:56
Location: Aalborg
Contact:

Re: Interaktiv samtale - C#

Unread post by Code » 18 Feb 2013, 23:07

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.
Spiludvikling og undervisning i Unity3D
http://www.code.dk

Danmarksmesterskabet i spiludvikling.
http://www.dmspil.dk

barkholt
Level 0 - Null
Posts: 7
Joined: 08 Mar 2008, 21:14

Re: Interaktiv samtale - C#

Unread post by barkholt » 18 Feb 2013, 23:42

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.

Herbstein
Level 4 - Newbie
Posts: 48
Joined: 29 Dec 2012, 14:15

Re: Interaktiv samtale - C#

Unread post by Herbstein » 19 Feb 2013, 09:10

Tak for svarene, kan helt sikkert hjælpe!

sunstar
Level 9 - Conjurer
Posts: 98
Joined: 12 Mar 2008, 07:01
Contact:

Re: Interaktiv samtale - C#

Unread post by sunstar » 26 Feb 2013, 17:28

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:

User avatar
Morten Brunbjerg
Level 4 - Newbie
Posts: 40
Joined: 04 Aug 2011, 13:12
Location: Copenhagen, Denmark
Contact:

Re: Interaktiv samtale - C#

Unread post by Morten Brunbjerg » 26 Feb 2013, 17:49

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

Post Reply