유니티3D 프로그래밍

C# 2주차 1일 수업 내용 (21.03.15) 본문

C#/수업내용

C# 2주차 1일 수업 내용 (21.03.15)

tjdgus9955 2021. 3. 15. 11:23

배열 연습

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

namespace Study00
{
    public class App
    {
        public App()
        {
            Console.WriteLine("App");
            //string 배열 변수 선언
            string[] itemNames;
            //배열 인스턴스 생성하고 변수에 할당
            //string[] itemNames = {"장검", "단검" };
            //-빈배열
            //itemNames = new string[3];
            //-요소가 있는 배열
            //itemNames = new string[] {"장검", "단검" };
            itemNames = new string[3] {"장검", "단검", null };

            //배열의 요소는 인덱스 0 ~ n-1
            //배열의 길이 출력
            Console.WriteLine(itemNames.Length);

            //배열의 x인덱스에 값 할당
            itemNames[itemNames.Length - 1] = "활";

            //배열의 x인덱스의 요소 출력
            string lastIndexOfItemName = itemNames[itemNames.Length - 1];
            Console.WriteLine(lastIndexOfItemName);

            //for문을 사용해서 배열의 요소 값 출력
            for(int i = 0; i < itemNames.Length; i++)
            {
                string itemName = itemNames[i];
                Console.WriteLine(itemName);
            }

            //foreach문을 사용해서 배열의 요소 값 출력
            foreach(string itemName in itemNames)
            {
                Console.WriteLine(itemName);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    public class App
    {
        public App()
        {
            Console.WriteLine("App");
            //int 배열 변수 선언
            int[] damages;
            string[] itemNames;
            //배열 인스턴스 생성하고 변수에 할당
            //int[] damages = {20, 32, 55, 12};

            //-빈배열
            //damages = new int[4];

            //-요소가 있는 배열
            itemNames = new string[] {"장검", "단검", "활", "도끼"};
            damages = new int[] {20, 32, 55, 12};


            //배열의 요소는 인덱스 0 ~ n-1
            //배열의 길이 출력
            Console.WriteLine(itemNames.Length);
            Console.WriteLine(damages.Length);

            Enum.GetValues(typeof(0));
            //배열의 x인덱스에 값 할당
            //itemNames[itemNames.Length - 1] = "대검";


            //배열의 x인덱스의 요소 출력
            //string indexOfItemName = itemNames[itemNames.Length - 1];

            //for문을 사용해서 배열의 요소 값 출력
            for(int i = 0; i < itemNames.Length; i++)
            {
                Console.WriteLine("{0}, {1}", itemNames[i], damages[i]);
            }
            Console.WriteLine();

            //foreach문을 사용해서 배열의 요소 값 출력
            int index = 0;
            foreach(string itemName in itemNames)
            {
                Console.WriteLine("{0}, {1}", itemName, damages[index]);
                index++;
            }


        }
    }
}

 

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

namespace Study00
{
    public class App
    {
        public enum ItemGrade
        {
            NORMAL,
            MAGIC,
            LEGEND
        }
        public App()
        {
            Console.WriteLine("App");
            //int 배열 변수 선언
            int[] damages;
            string[] itemNames;
            int[] itemGrade;
            ItemGrade itemGrade1;
            //배열 인스턴스 생성하고 변수에 할당
            //int[] damages = {20, 32, 55, 12};

            //-빈배열
            //damages = new int[4];

            //-요소가 있는 배열
            itemNames = new string[] {"장검", "단검", "활", "도끼"};
            damages = new int[] {20, 32, 55, 12};
            itemGrade = new int[] {0, 1, 2, 0};

            //배열의 요소는 인덱스 0 ~ n-1
            //배열의 길이 출력
            Console.WriteLine(itemNames.Length);
            Console.WriteLine(damages.Length);
            Console.WriteLine(itemGrade.Length);
            
            //배열의 x인덱스에 값 할당
            //itemNames[itemNames.Length - 1] = "대검";


            //배열의 x인덱스의 요소 출력
            //string indexOfItemName = itemNames[itemNames.Length - 1];

            //for문을 사용해서 배열의 요소 값 출력
            for(int i = 0; i < itemNames.Length; i++)
            {
                ItemGrade itemGradeToString = (ItemGrade)itemGrade[i];
                Console.WriteLine("{0}, {1}, {2}", itemNames[i], damages[i], itemGradeToString);
            }
            Console.WriteLine();

    }
}

 

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

namespace Study00
{
    public class App
    {
        public App()
        {
            //string 배열 선언
            string[] itemName = new string[4] {"장검", "단검", "활", "도끼"};
            string findItem = Console.ReadLine();
            for(int i = 0; i < itemName.Length; i++)
            {
                if (itemName[i].Equals(findItem))
                {
                    Console.WriteLine("단검을 찾았습니다. index : {0}", i);
                    break;
                }
            }
        }
    }
}

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

namespace Study00
{
    public class App
    {
        public App()
        {
            //string 배열 선언
            string[] itemName = new string[4] {"장검", "단검", "활", "도끼"};
            string findItem = Console.ReadLine();
            for(int i = 0; i < itemName.Length; i++)
            {
                if (itemName[i].Equals(findItem))
                {
                    Console.WriteLine("{0}을 찾았습니다. index : {1}", findItem, i);
                    break;
                } 
            }
            Console.WriteLine("{0}을 찾을 수 없습니다.", findItem);
        }
    }
}

 

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

namespace Study00
{
    public class App
    {
        public App()
        {
            Item item = new Item();
            item.ItemInfo();

            string itemName = Console.ReadLine();
            Console.WriteLine(item.FindItem(itemName));
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    public class Item
    {
        public enum ItemGrade
        {
            NORMAL,
            MAGIC,
            LEGEND
        }

        private int[] damages = new int[] { 20, 32, 55, 12 };
        private string[] itemNames = new string[] { "장검", "단검", "활", "도끼" };
        private int[] itemGrade = new int[] { 0, 1, 2, 0 };

	//생성자
        public Item()
        {
            Console.WriteLine("Item");
        }

        public void ItemInfo()
        {
            for (int i = 0; i < itemNames.Length; i++)
            {
                ItemGrade itemGradeToString = (ItemGrade)itemGrade[i];
                Console.WriteLine("{0}, {1}, {2}", itemNames[i], damages[i], itemGradeToString);
            }
        }

        public string FindItem(string findItem)
        {
            for (int i = 0; i < itemNames.Length; i++)
            {
                if (itemNames[i].Equals(findItem))
                {
                    Console.WriteLine();
                    return findItem + "을/를 찾았습니다. index : " + i;
                }
            }
            return findItem+"을/를 찾을 수 없습니다.";
        }
    }
}

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

namespace Study00
{
    public class App
    {
        public App()
        {
            Item item = new Item();
            item.ItemInfo();

            Console.WriteLine("찾을 아이템을 입력하세요.");
            string itemName = Console.ReadLine(); 
            Console.WriteLine(item.FindItem(itemName));

            //아이템 추가
            Console.WriteLine("표창 아이템을 추가합니다.");
            int damages = 10;
            string itemNames = "표창";
            int itemGrade = 0;

            item = item.AddItemInfo(item, damages, itemNames, itemGrade, 0);
            item.ItemInfo();
            Console.WriteLine();
            ItemReinforce itemReinforce = new ItemReinforce();
            Console.WriteLine("아이템을 합성합니다.");
            item = itemReinforce.Systhesis(item, 3, 0);
            item.ItemInfo();
            Console.WriteLine();
            Console.WriteLine("아이템을 강화합니다.");
            itemReinforce.Reinforce(item);
            Console.WriteLine("강화한 아이템 단계 : {0}", item.upgrade[0]);
        }
    }
}

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

namespace Study00
{
    public class Item
    {
        public enum ItemGrade
        {
            NORMAL,
            MAGIC,
            RARE,
            LEGEND
        }

        public int[] damages = new int[] { 20, 32, 55, 12 };
        public string[] itemNames = new string[] { "장검", "단검", "활", "도끼" };
        public int[] itemGrade = new int[] { 0, 1, 3, 0 };
        public int[] upgrade = new int[] { 0, 0, 0, 0 };

        //생성자
        public Item()
        {
            Console.WriteLine("Item");
        }

        public void ItemInfo()
        {
            for (int i = 0; i < itemNames.Length; i++)
            {
                ItemGrade itemGradeToString = (ItemGrade)itemGrade[i];
                Console.WriteLine("{0}, {1}, {2}, 아이템 강화 단계 : {3}", itemNames[i], damages[i], itemGradeToString, upgrade[i]);
            }
        }

        public string FindItem(string findItem)
        {
            for (int i = 0; i < itemNames.Length; i++)
            {
                if (itemNames[i].Equals(findItem))
                {
                    Console.WriteLine();
                    return findItem + "을/를 찾았습니다. index : " + i;
                }
            }
            return findItem+"을/를 찾을 수 없습니다.";
        }

        public void GetItemInfo(int index)
        {
            ItemGrade itemGradeToString = (ItemGrade)itemGrade[index];
            Console.WriteLine("{0}, {1}, {2}", itemNames[index], damages[index], itemGradeToString);
        }

        public Item AddItemInfo(Item item, int damages, string itemNames, int itemGrade, int upgrade)
        {
            Array.Resize<int>(ref item.damages, item.damages.Length +1);
            Array.Resize<string>(ref item.itemNames, item.itemNames.Length + 1);
            Array.Resize<int>(ref item.itemGrade, item.itemGrade.Length + 1);
            Array.Resize<int>(ref item.upgrade, item.upgrade.Length + 1);
            item.damages[item.damages.Length - 1] = damages;
            item.itemNames[item.itemNames.Length - 1] = itemNames;
            item.itemGrade[item.itemGrade.Length - 1] = itemGrade;
            item.upgrade[item.itemGrade.Length - 1] = 0;
            return item;
        }

        public Item SetItemInfo(Item item, int damages, string itemNames, int itemGrade, int upgrade, int index)
        {
            item.damages[index] = damages;
            item.itemNames[index] = itemNames;
            item.itemGrade[index] = itemGrade;
            item.upgrade[index] = upgrade;
            return item;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    class ItemReinforce : Item
    {
        public int iron = 10;
        public int wood = 10;
        //생성자
        public ItemReinforce()
        {
            Console.WriteLine("ItemReinforce");
        }

        public Item Reinforce(Item item)
        {
            Console.WriteLine("강화할 아이템을 선택하세요.");
            string itemName = Console.ReadLine();

            Random rand = new Random();
            int itemUpgradePer;
            int index = 0;
            for(int i = 0; i < item.itemNames.Length; i++)
            {
                if(item.itemNames[i].Equals(itemName))
                {
                    Console.WriteLine("강화할 아이템을 선택하셨습니다. 현재 강화 : {0}", item.upgrade[i]);
                    index = i;
                    while(true)
                    {
                        Console.WriteLine("강화를 시도하시겠습니까?");
                        string exitUpgrad = Console.ReadLine();
                        if (item.upgrade[index] == 0)
                        {
                            Console.WriteLine("현재 강화가 +0 이므로 강화 확률 : 100%");
                            Console.WriteLine("강화에 성공하셨습니다.");
                            item.damages[index] += 1;
                            item = SetItemInfo(item, item.damages[index], item.itemNames[index], item.itemGrade[index], 1, index);
                        }
                        else if (item.upgrade[index] == 1)
                        {
                            Console.WriteLine("현재 강화가 +1 이므로 강화 확률 : 90%");
                            itemUpgradePer = rand.Next(1, 101);
                            if (itemUpgradePer >= 10)
                            {
                                Console.WriteLine("강화에 성공하셨습니다.");
                                item.damages[index] += 1;
                                item = SetItemInfo(item, item.damages[index], item.itemNames[index], item.itemGrade[index], 2, index);
                            }
                            else
                            {
                                Console.WriteLine("강화에 실패하셨습니다.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("최대 강화입니다.");
                            break;
                        }
                        Console.WriteLine("다시 시도하시려면 Y, 아니면 N를 입력하세요. ");
                        if (exitUpgrad == "Y")
                        {
                            continue;
                        }
                        else
                        {
                            Console.WriteLine("강화를 종료합니다.");
                            break;
                        }
                    }
                    break;
                }
            }
            Console.WriteLine("강화할 아이템이 없습니다.");
            return item;
        }

        public Item Systhesis(Item item, int iron, int wood)
        {
            if(this.iron >= 3 && iron == 3 && this.wood >= 0 && wood == 0)
            {
                item = AddItemInfo(item, 0, "강철신발", 1, 0);
                this.iron -= iron;
                this.wood -= wood;
            }
            else if(this.iron >= 1 && iron == 1 && this.wood >= 3 && wood == 3)
            {
                item = AddItemInfo(item, 20, "강철로 덧댄 활", 1, 0);
                this.iron -= iron;
                this.wood -= wood;
            }
            else
            {
                Console.WriteLine("자원이 부족합니다.");
            }

            return item;
        }
    }
}

 

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

namespace Study00
{
    public class App
    {
        public App()
        {
            Console.WriteLine("App");
            Inventory inven = new Inventory();
            Item item = new Item("활", Item.eItemType.Weapon);
            Item item1 = new Item("흉갑", Item.eItemType.Armor);
            Item item2 = new Item("쌍검", Item.eItemType.Weapon);

            Console.WriteLine("활을 인벤토리에 넣습니다.");
            inven.AddItem(item);
            inven.AddItem(item1);
            inven.AddItem(item2);
            inven.Print();

            Console.WriteLine();

            item2 = inven.GetItem("흉갑");
            inven.Print();

            Console.WriteLine();

            inven.AddItem(item2);
            inven.Print();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    public class Item
    {
        public enum eItemType
        {
            Weapon,
            Armor,
            Accessories
        }

        public string name;
        public eItemType itemType;

        //생성자
        public Item(string name, eItemType itemType)
        {
            this.name = name;
            this.itemType = itemType;
        }

    }
}

 

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

namespace Study00
{
    class Inventory
    {
        Item[] items;
        int capacity = 100;
        //생성자
        public Inventory()
        {
            Console.WriteLine("Inventory");
            this.items = new Item[capacity];
        }

        public void AddItem(Item item)
        {
            for(int i = 0; i < items.Length; i++)
            {
                if(items[i] == null)
                {
                    items[i] = item;
                    Console.WriteLine("{0} 아이템을 넣었습니다.", item.name);
                    break;
                }
            }
        }

        public Item GetItem(string itemName)
        {
            for(int i = 0; i < items.Length; i++)
            {
                if (items[i].name == itemName)
                {
                    Item item = items[i];
                    items[i] = null;
                    return item;
                }
            }
            Console.WriteLine("없는 아이템 입니다.");
            return null;
        }

        public bool FindItem(string itemName)
        {
            for (int i = 0; i < items.Length; i++)
            {
                if (items[i].name == itemName)
                {
                    return true;
                }
            }
            return false;
        }

        public void Print()
        {
            int count = 1;
            foreach(Item item in items)
            {
                if(item != null)
                {
                    Console.WriteLine("{0}. {1}({2})", count, item.name, item.itemType);
                }
                count++;
            }
        }
    }
}

Study00.exe
0.01MB