Click here to Skip to main content
15,891,253 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
Basically I want the items in my list to show in the console... but instead i get this:

SimpleTextAdventure.Item
SimpleTextAdventure.Item
SimpleTextAdventure.Item


There are 3 items in the list, so i know the items have been added. But instead of writing them out like

Sword
Shield
Torch

Is has done the above instead. Why is this happening? If your wondering what it means

SimpleTextAdventure is the name of the project, and .Item is the name of one of the classes.

Please help, ive been stuck on this all day long thanks...

C#
public class Inventory
    {
        // Attributes
        private static List<Item> _inventory = new List<Item>();

        // Constructors

        // Properties

        // Methods
        public static void AddItem(string item)
        {
            _inventory.Add(new Item(item));

        }

        public static void PrintItems()
        {
            foreach (Item itemName in _inventory)
            {
                Console.WriteLine(itemName);
            }
        }

        public static void RemoveItem(string itemName)
        {
            for (int i = 0; i < _inventory.Count; i++)
            {
                if (_inventory[i].ItemName == itemName)
                {
                    _inventory.Remove(_inventory[i]);
                    break;
                }
            }
        }

        public static bool HasItem(string itemName)
        {
            foreach (Item item in _inventory)
            {
                if (item.ItemName == itemName)
                {
                    return true;
                }
            }

            return false;
        }

        public static int CountItemsFromInventory(string inventory)
        {
            int count = 0;

            foreach (Item item in _inventory)
            {
                if (item.ItemName == inventory)
                {
                    count++;
                }
            }

            return count;
        }
    }
}




C#
class Item
    {
        // Attributes
        string _itemName;

        // Constructors

        public Item(string itemName)
        {
            _itemName = ItemName;
        }

        // Properties
        public string ItemName { get { return _itemName; } }

        // Methods
        public void PrintOut(Inventory _inventory)
        {
            Console.WriteLine(_inventory);
        }
    }
}




C#
public class RoomThree:Room
    {
        // Attributes
        public static string[] _availableItems = new string[] { "torch", "shield", "sword" };


        public static ChatLine[] _lines = new ChatLine[]
        {
           // new ChatLine("START", "Welcome to Room 3.. There are doors to the #DIRECTIONS#.", "move+?", GameEngine.Instance.PlayerMove),
            new ChatLine("START", "Welcome to Room 3. There is a table with weapons and a phone ringing on it. " +
                "I would suggest you answer it", "answer, answer phone", AnswerPhone),
            new ChatLine("TABLE", "There are items on the table", "look, look table", LookTable),
            new ChatLine("FOUND_ITEMS", "You looked at the table and there #AVAILABLE_ITEMS#.", "", PlayerSelectsItem),
            new ChatLine("MOVE_OR_PICK", "Move towards the North door, or pick another item, there #AVAILABLE_ITEMS#", "pick+?", PlayerSelectsItem),
            new ChatLine("MOVE_OR_PICK", "Move towards the North doorm or pick another item, there #AVAILABLE_ITEMS#", "move+?", GameEngine.Instance.PlayerMove),


            new ChatLine("", "", "pick+?, select+?, choose+?", PlayerSelectsItem),
            new ChatLine("", "", "drop+?", PlayerDropsItem),
            new ChatLine("", "", "move+?", GameEngine.Instance.PlayerMove)

        };

        // Constructors

        public RoomThree()
            : base("ROOM_THREE", _lines,  "START", _availableItems)
        {
        }

        // Methods


        private static string AnswerPhone(string word, object[] args)
        {
            Console.WriteLine();
            Console.WriteLine("Hello human. My name is Sauron. I am the leader of this race. You have became a problem for me," +
                " and for my race. But I see potential in you. I see a great warrior in you.. So I will offer you this deal...." +
                "If you can get to me, I will offer you a commander role leading my army against the demons. But it will be tough, you" +
                " will have to face very experienced fighting orcs and you will have to find your way to me.. But IF you SURVIVE." +
                " I will make you my second in command. Now there are weapons on the table in front of you, and an orc in the other room." +
                " Good luck. You will need it.");

            Console.WriteLine();

            return "TABLE";
        }

        private static string LookTable(string word, object[] args)
        {
            Console.WriteLine();

            return "FOUND_ITEMS";
        }

        public static string PlayerSelectsItem(string word, object[] args)
        {
            GameEngine.Instance.RemoveItemFromRoom(word);
            Inventory.AddItem(word);
            Inventory.PrintItems();
            Console.WriteLine();
            return "MOVE_OR_PICK";  // Don't change action
        }

        public static string PlayerDropsItem(string word, object[] args)
        {
            if (Inventory.HasItem(word))
            {
                Inventory.RemoveItem(word);
                GameEngine.Instance.DropItemInRoom(word);
                Console.WriteLine("Item has been dropped");
            }
            else
            {
                Console.WriteLine("You don't have that item");
            }

            return "";  // Don't change action
        }
    }
Posted
Updated 19-Dec-13 7:23am
v2
Comments
Adam Zgagacz 19-Dec-13 13:03pm    
Post your code, please
joginder-banger 19-Dec-13 13:07pm    
what you try ???
ZurdoDev 19-Dec-13 13:16pm    
1. How can you expect anyone to tell you what you have done wrong if you don't post your code?
2. Just write out .Item.Text.

Not able to understand your query properly but as i am understanding you need to display list item on console .If your class like below :

class Items
    {
        List<string> lst = new List<string>();
        

       
        public IList GetList()
        {
            lst.Add("Sword");
            lst.Add("Shield");
            lst.Add("Torch");
            return lst;
        }

    }


then you can display list value by using such code :

static void Main(string[] args)
        {

            Items _items = new Items();
            IList lst = _items.GetList();

            foreach(string l in lst)
            {
                Console.WriteLine(l);
              
            }
            Console.ReadKey();
          }
 
Share this answer
 
v3
Like the other question earlier (almost Identical code) it is the same type of problem. You are binding the object Item (poor choice for a name) and not the ItemName property of the Item.

you NEED to change the PrintItems like this.

C#
public static void PrintItems()
{
    foreach (Item itemName in _inventory)
    {
        Console.WriteLine(itemName.ItemName);
    }
}
 
Share this answer
 
Comments
[no name] 20-Dec-13 2:53am    
Thanks, but it doesn't come up with anything now.... Like i can see that its printing out something, but it is blank.... like theres nothing being printed out but blank space.. but you can definitely tell that its printing something out...
I solved it guys :)... basically, it was something soo stupid.... I basically had to change a letter from uppercase to lowercase...


Instead of ...itemName... i had it ItemName....



C#
public static void PrintItems()
        {
            foreach (Item itemName in _inventory)
            {
                Console.WriteLine(itemName.itemName);
            }
        }





C#
public Item(string itemName)
{
    _itemName = itemName;
}

// Properties
public string itemName { get { return _itemName; } }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900