유니티3D 프로그래밍

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

C#/수업내용

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

tjdgus9955 2021. 3. 16. 09:41

데이터 참조

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[] items;
            //배열 인스턴스화(생성)
            items = new Item[3];

            //Item 객체 생성
            //ItemData
            ItemData data = new ItemData("장검", 20, ItemData.eItemType.WEAPON);
            Item item = new Item(data);

            //배열에 요소에 값 할당
            items[0] = item;

            //배열의 요소 출력
            foreach(Item item1 in items)
            {
                if(item1 != null)
                {
                    Console.WriteLine("{0}", item1.data.name);
                }
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    public class ItemData
    {
        public enum eItemType
        {
            WEAPON,
            ARMOR,
            ACCESSORY,
            POTION
        }

        public string name;
        public eItemType itemType;
        public int damage;
        public int sellGold;
        public int duplicateCount;
        
        //기본 생성자
        public ItemData()
        {

        }

        public ItemData(string name, int damage, eItemType itemType)
        {
            this.name = name;
            this.damage = damage;
            this.itemType = itemType;
            this.duplicateCount = 0;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    public class Item
    {

        public ItemData data;

        //생성자
        public Item(ItemData data)
        {
            this.data = data;
        }

        public string GetName()
        {
            return this.data.name;
        }

        public ItemData.eItemType GetItemType()
        {
            return this.data.itemType;
        }

    }
}

 

야채 리스트

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

namespace Study00
{
    public class App
    {
        //생성자
        public App()
        {
            // Fruits배열변수 선언
            Fruits[] fruits;
            // 배열 인스턴스화
            fruits = new Fruits[3];

            // Fruits 객체 생성
            FruitsData data = new FruitsData("사과");
            FruitsData data1 = new FruitsData("복숭아");
            FruitsData data2 = new FruitsData("수박");

            Fruits fruits1 = new Fruits(data);
            Fruits fruits2 = new Fruits(data1);
            Fruits fruits3 = new Fruits(data2);

            // 배열 요소에 추가
            fruits[0] = fruits1;
            fruits[1] = fruits2;
            fruits[2] = fruits3;

            // 배열 요소를 출력
            foreach(Fruits fruits4 in fruits)
            {
                if(fruits4 != null)
                {
                    Console.WriteLine("{0}", fruits4.data.GetName());
                }
            }
            Console.WriteLine();

            // 배열요소에서 이름이 "사과"인 Fruits객체를 검색
            string name = null;
            for(int i = 0; i < fruits.Length; i++)
            {
                if(fruits[i] != null && fruits[i].GetName()=="사과")
                {
                    name = fruits[i].GetName();
                    break;
                }
            }

            if (name != null)
            {
                Console.WriteLine("{0}을 찾았습니다.", name);
            }
            else
            {
                Console.WriteLine("{0}이/가 없습니다", name);
            }
            Console.WriteLine();

            // 배열요소에서 이름이 "복숭아"인 Fruits객체를 삭제
            for (int i = 0; i < fruits.Length; i++)
            {
                if (fruits[i] != null && fruits[i].GetName() == "복숭아")
                {
                    Console.WriteLine("{0}을 삭제했습니다.", fruits[i].GetName());
                    fruits[i] = null;
                }
            }
            Console.WriteLine();

            foreach (Fruits fruits4 in fruits)
            {
                if (fruits4 != null)
                {
                    Console.WriteLine("{0}", fruits4.data.GetName());
                }
                else
                {
                    Console.WriteLine("[Enpty]");
                }
            }
        }
    }
}

 

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

namespace Study00
{
    public class Fruits
    {
        public FruitsData data;
        //생성자
        public Fruits(FruitsData data)
        {
            this.data = data;
        }

        public string GetName()
        {
            return data.GetName();
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study00
{
    public class FruitsData
    {
        private string name;
        //기본 생성자
        public FruitsData()
        {

        }

        //Override
        public FruitsData(string name)
        {
            this.name = name;
        }

        public string GetName()
        {
            return this.name;
        }
    }
}
using System;
using System.Collections;

namespace Study01
{
    class App
    {
        //생성자
        public App()
        {
            Console.WriteLine("App");
            //ArrayList 변수 선언
            ArrayList list;

            //ArrayList 객체 생성
            list = new ArrayList();
            list.Add("사과");
            list.Add(2000);
            list.Add(new Item());
            list.Add(1.4f);
            list.Add(null);
            list.Add(true);
            list.Add('홍');


            PrintCountAndAllElements(list);
            //ArrayList의 모든 요소 제거
            list.Clear();
            PrintCountAndAllElements(list);
        }


        private void PrintCountAndAllElements(ArrayList list)
        {
            //ArrayList의 길이 출력
            Console.WriteLine("count : {0}", list.Count);

            //ArrayList의 모든 요소 출력
            foreach (Object obj in list)
            {
                Console.WriteLine(obj);
            }
        }

    }
}

 

 

인벤토리 리스트

using System;
using System.Collections;
using System.Collections.Generic;

namespace Study01
{
    class App
    {
        //생성자
        public App()
        {
            //Item
            Item items = new Item("장갑", Item.eItemType.ARMOR);
            //List 변수 선언
            List<Item> listItems;
            //타입 변수형
            //List인스턴스화 + 변수에 할당
            listItems = new List<Item>();

            //요소 추가
            listItems.Add(items);

            //리스트의 요소의 수 출력
            Console.WriteLine("Count : {0}", listItems.Count);

            //요소 출력
            Print(listItems);

            //*******************************************

            //List를 사용해서 인벤토리 제작
            Inventory inven = new Inventory();
            Item items1 = new Item("철갑옷", Item.eItemType.ARMOR);
            Item items2 = new Item("천갑옷", Item.eItemType.ARMOR);
            Item items3 = new Item("장화", Item.eItemType.ARMOR);

            //아이템 삽입
            inven.AddItem(items);
            inven.AddItem(items1);
            inven.AddItem(items2);
            inven.AddItem(items3);
            inven.Print();
            //아이템 검색
            Console.WriteLine();
            inven.GetItem("철갑옷");
            //아이템 삭제
            Console.WriteLine();
            inven.RemoveItem("철갑옷");
            inven.Print();
            Console.WriteLine();
            //아이템 수정
            Console.Write("바꿀 아이템의 번호를 선택하세요.");
            string input = Console.ReadLine();
            int input1 = Convert.ToInt32(input);
            inven.Revise(input1, "체력포션", Item.eItemType.POTION);
            inven.Print();

           


        }

        public void Print(List<Item> listItems)
        {
            Console.WriteLine("아이템의 정보 출력");
            int count = 1;
            foreach (Item item in listItems)
            {
                if(item != null)
                {
                    Console.WriteLine("{0}. {1}({2})", count, item.GetName(), item.GetItemType());
                }
                else
                {
                    Console.WriteLine("{0}. [Empty]", count);
                }
                count++;

            }
        }

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

namespace Study01
{
    public class Inventory
    {
        List<Item> items = new List<Item>();
        //생성자
        public Inventory()
        {
            Console.WriteLine("Inventory");
        }

        public void AddItem(Item item)
        {
            items.Add(item);
        }

        public void Print()
        {
            int count = 1;
            foreach (Item item in items)
            {
                if (item != null)
                {
                    Console.WriteLine("{0}. {1}({2})", count, item.GetName(), item.GetItemType());
                }
                else
                {
                    Console.WriteLine("{0}. [Empty]", count);
                }
                count++;
            }
        }

        public Item GetItem(string itemName)
        {
            for(int i = 0; i < items.Count; i++)
            {
                if(items[i].GetName() == itemName)
                {
                    Item removeItem = items[i];
                    Console.WriteLine("{0} 아이템을 찾았습니다.", items[i].GetName());
                    return removeItem;
                }    
            }
            Console.WriteLine("찾는 아이템이 없습니다.");
            return null;
        }

        public string RemoveItem(string itemName)
        {
            for (int i = 0; i < items.Count; i++)
            {
                if (items[i].GetName() == itemName)
                {
                    string removeItem = items[i].GetName();
                    Console.WriteLine("제거할 {0} 아이템을 찾았습니다.", items[i].GetName());
                    items.RemoveAt(i);
                    return removeItem;
                }
            }
            Console.WriteLine("찾는 아이템이 없습니다.");
            return null;
        }

        public void Revise(int index, string name, Item.eItemType eItemType)
        {
            Item item = new Item(name, eItemType);
            items[index] = item;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study01
{
    public class Item
    {
        public enum eItemType
        {
            WEAPON,
            ARMOR,
            ACCESSORIES,
            POTION
        }

        public string name;
        public eItemType itemType;
        //생성자
        public Item()
        {
            Console.WriteLine("Item");
        }

        public Item(string name, eItemType itemType)
        {
            this.name = name;
            this.itemType = itemType;
        }
        public string GetName()
        {
            return this.name;
        }

        public eItemType GetItemType()
        {
            return this.itemType;
        }

        
    }
}

Dictionary

 

using System;
using System.Collections;
using System.Collections.Generic;

namespace Study01
{
    class App
    {
        //생성자
        public App()
        {
            //변수 선언
            Dictionary<long, string> dicBooks;

            //컬력션 인스턴스화

            dicBooks = new Dictionary<long, string>();

            //추가

            dicBooks.Add(9788960906662, "그늘까지도 인생이니까");
            dicBooks.Add(9791188194278, "구글 애드센스로 돈벌기");

            //검색
            string bookName = dicBooks[9791188194278];
            Console.WriteLine(bookName);

            //길이
            Console.WriteLine(dicBooks.Count);

            //출력
            foreach(var pair in dicBooks)
            {
                Console.WriteLine("{0}:{1}", pair.Key, pair.Value);
            }
        }
    }
}

책찾기

using System;
using System.Collections;
using System.Collections.Generic;

namespace Study01
{
    class App
    {
        //생성자
        public App()
        {
            //Dictionary 변수 선언
            Dictionary<long, Book> dicBooks;

            // 컬렉션 인스턴스화
            dicBooks = new Dictionary<long, Book>();


            //Book 객체 생성
            Book book = new Book(9791188194278, "구글 애드센스로 돈벌기", 9900, "안동수", new DateTime(2021, 2, 25));

            //추가
            dicBooks.Add(book.GetISBN(), book);

            //키로 요소 가져오기
            Book foundBook = dicBooks[9791188194278];

            //출력
            //Console.WriteLine("{0} {1} {2}", foundBook.GetName(), foundBook.GetAuthorWithSuffix(), foundBook.GetstrPublishingDate());

            foreach(KeyValuePair<long, Book> pair in dicBooks)
            {
                Book element = pair.Value;
                Console.WriteLine("{0} {1} {2}", foundBook.GetName(), foundBook.GetAuthorWithSuffix(), foundBook.GetStrPrice());
            }
        }

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

namespace Study01
{
    class Book
    {
        //이름
        private string name;
        //ISBN (고유)
        private long ISBN;
        //가격
        private int price;
        //저자
        private string author;
        //출간일
        private DateTime publicationDate;

        //생성자
        public Book(long ISBN, string name, int price, string author, DateTime publicationDate)
        {
            this.ISBN = ISBN;
            this.name = name;
            this.price = price;
            this.author = author;
            this.publicationDate = publicationDate;
        }

        public long GetISBN()
        {
            return this.ISBN;
        }
        public string GetName()
        {
            return this.name;
        }
        public int GetPrice()
        {
            return this.price;
        }

        //3자리 콤마 찍어서 price 문자열로 반환
        public string GetStrPrice()
        {
           return String.Format("{0:#,0}", this.price);
        }

        public string GetAuthor()
        {
            return this.author;
        }

        //저자 뒤에 저 붙여서 반환
        public string GetAuthorWithSuffix()
        {
            return string.Format("{0} 저", this.author);
        }

        public DateTime GetPublishingDate()
        {
            return this.publicationDate;
        }

        //날짜형식으로 변환해서 문자열 반환

        public string GetstrPublishingDate()
        {
            return string.Format(this.publicationDate.ToString("yyyy.MM.dd"));
        }
    }
}