Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- rendermonkey
- 공부
- 다중상속
- 화살피하기
- 이득우
- uidesign
- 게임만들기
- visualstudio2022
- 배열문제
- Unity
- 표창던지기
- c++class
- 화살표 메서드
- 화살표 함수
- 파이썬
- 가변배열
- 유니티
- python
- 렌더몽키
- 언리얼
- 그림자 효과
- premake5
- C++
- 3차원배열
- IMGUI
- 셰이더
- 이득우언리얼
- swipe
- 비주얼스튜디오
- c#
Archives
- Today
- Total
신입 개발자 공부 과정
1월3일 인벤3 본문
Q1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Inventory3
{
class Program
{
static void Main(string[] args)
{
Inventory inventory = new Inventory();
//Item item0 = new Item("장검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
inventory.AddItem(new Item("단검"));
inventory.AddItem(new Item("장검"));
inventory.AddItem(new Item("대검"));
inventory.AddItem(new Item("이도류"));
inventory.AddItem(new Item("삼도류"));
inventory.AddItem(new Item("총검"));
inventory.AddItem(new Item("창"));
int count = inventory.GetItemCount();
Console.WriteLine(count); //2
inventory.PrintItems();
//단검
//등등
Console.WriteLine();
Item foundItem = inventory.GetItemByName("장검");
Console.WriteLine(foundItem.name);//장검
count = inventory.GetItemCount();
Console.WriteLine(count); //1
Console.WriteLine();
foundItem = inventory.GetItemByName("활");
if (foundItem != null)
{
Console.WriteLine(foundItem.name);
}
else
{
Console.WriteLine("활을 찾지 못했습니다.");
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Inventory3
{
class Inventory
{
List<Item> items;
//생성자 생성
public Inventory()
{
this.items = new List<Item>();
}
public void AddItem(Item item)
{
this.items.Add(item);
}
public int GetItemCount()
{
return this.items.Count;
}
public void PrintItems() //리스트에 있는 아이템들을 하나하나씩 이름을 출력한다
{
foreach (var item in this.items)
{
Console.WriteLine(item.name);//왜 name이 접근이 안되지? = private이였다
}
}
public Item GetItemByName(string searchName)//아이템 타입의 '이름으로 아이템찾기' 메서드를 생성
{
Item findItem = null;
foreach(var item in this.items)//아이템 리스트에 있는 아이템들을 각각
{
if(item.name == searchName)//검색한 이름이 리스트에있을때
{
findItem = item;//그 리스트에 있는 아이템을 findItem이라 하고
this.items.Remove(findItem);//findItem을 지운다
break;
}
}
return findItem;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Inventory3
{
class Item
{
public string name;//맴버변수 string 생성
//생성자 생성
public Item(string name)
{
this.name = name;
}
}
}
Q2.
아이템 중복되면 x? 으로 표시되는 부분을 표시를 하지 못하고있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Inventory3
{
class Program
{
static void Main(string[] args)
{
Inventory inventory = new Inventory();
//Item item0 = new Item("장검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
//Item item1 = new Item("단검");
inventory.AddItem(new Item("장검"));
inventory.AddItem(new Item("장검"));
inventory.AddItem(new Item("장검"));
int count = inventory.GetItemCount();
Console.WriteLine(count); //3
inventory.PrintItems();//장검x3
Console.WriteLine();
var item = inventory.GetItemByName("장검");//장검 검색
if(item != null)//아이템 값이 비어있지 않다면
{
Console.WriteLine("{0}x{1}", item.name, item.count); //장검x1
}
count = inventory.GetItemCount();
Console.WriteLine(count); //2
Console.WriteLine();
inventory.PrintItems(); //장검 x2
inventory.GetItemByName("장검");
inventory.GetItemByName("장검");
count = inventory.GetItemCount();
Console.WriteLine(count); //0
inventory.PrintItems(); //인벤토리가 비어 있습니다
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Inventory3
{
class Inventory
{
List<Item> items;
//생성자 생성
public Inventory()
{
this.items = new List<Item>();
}
//아이템 추가
public void AddItem(Item item)
{
var foundItem = this.SearchItem(item.name);//추가한 아이템이 아이템리스트에 있다면 foundItem 변수에 추가
this.items.Add(item);//아이템 리스트에 추가
}
//아이템 찾기
private Item SearchItem(string name)
{
Item foundItem = null;
foreach (var item in this.items)
{
if(item.name == name)
{
foundItem = item;
break;
}
}
return foundItem;
}
//아이템 카운트
public int GetItemCount()
{
int total = 0;//변수를 초기화하고
foreach(var item in this.items)//각 아이템을 보면서
{
total += item.count;//수를 하나하나 카운트한다
}
return total;//총 합을 출력
}
public void PrintItems() //리스트에 있는 중복된 아이템을 x? 형식으로 나타나게한다
{
if(this.items.Count<=0)
{
Console.WriteLine("인벤토리가 비어 있습니다.");
}
else
{
foreach (var item in items)
{
//같은 아이템이 있다면 아이템을 x? 형식으로 나타나게한다
Console.WriteLine("{0}x{1}", item.name, item.count);
}
}
}
//아이템 이름으로 검색
public Item GetItemByName(string searchName)//아이템 타입의 '이름으로 아이템찾기' 메서드를 생성
{
var item = this.SearchItem(searchName);
Item rtnItem = null;
if(item != null)//검색한 아이템이 값이 있다면
{
rtnItem = new Item(item.name);//rtnItem에 아이템 객체로 만들어서 적용한다
item.count -= 1; //아이템 카운트에 1을 뺴고
if(item.count<=0)//아이템 카운트가 0보다 작거나 같으면
{
this.items.Remove(item);//아이템배열에서 해당 아이템을 제거한다
}
}
return rtnItem;//출력
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Inventory3
{
class Item
{
public string name;//맴버변수 string 생성
public int count;
//생성자 생성
public Item(string name, int count=1)
{
this.name = name;
this.count = count;
}
}
}
Q3.
'C# > 수업 내용' 카테고리의 다른 글
Delegate 대리자 2 + Lamda 람다 (0) | 2022.01.05 |
---|---|
Delegate 대리자1 (0) | 2022.01.04 |
12/30 수업 스타크래프트 부대지정 (0) | 2021.12.30 |
12/29수업 item + inventory (0) | 2021.12.29 |
모르는 부분들 다차원 배열 과 가변배열, 제네릭 리스트 List<T>, 컬렉션Collection (0) | 2021.12.29 |