게임 알고리즘
enum으로 과일 관리 배열 만들기
101won
2024. 8. 15. 23:41
![]() | ![]() |
타입, 상태는 90%정도 enum으로 만든다.
- Main
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Enum_Fruits
{
internal class Program
{
static void Main(string[] args)
{
App app = new App();
//과일 추가
app.Add();
// 과일 리스트 확인
app.ShowList();
// 과일 가격 합산
app.Sum();
//인자 가격 보다 비싼 과일 리스트
app.Compare(4000);
// 과일의 타입, 수량을 받아 삭제
app.Remove(Fruit.FruitType.Strawberry, 4);
// 삭제 확인용 과일 리스트 확인
app.ShowList();
// 삭제 확인용 과일 가격 합산
app.Sum();
}
}
}
- FruitType
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Enum_Fruits
{
internal class Fruit
{
public enum FruitType
{
Watermelon,
Orange,
Apple,
Strawberry
}
// 맴버 변수
public FruitType type;
public int price;
public string name;
public int num; // 과일 개수
//생성자
public Fruit(FruitType type, string name, int num, int price)
{
Console.WriteLine("Fruit 생성자 실행");
this.type = type;
this.price = price;
this.name = name;
this.num = num;
}
}
}
- App
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Enum_Fruits
{
internal class App
{
// 맴버 변수
Fruit[] fruits;
int idx;
//생성자
public App()
{
Console.WriteLine("App 생성자 실행");
fruits = new Fruit[4];
}
public void Add()
{
Console.WriteLine("===========과일 추가 시작==========");
Fruit Watermelon = new Fruit(Fruit.FruitType.Watermelon, "수박", 1, 5000);
fruits[0] = Watermelon;
Fruit Orange = new Fruit(Fruit.FruitType.Orange, "오렌지", 2, 3000);
fruits[1] = Orange;
Fruit Apple = new Fruit(Fruit.FruitType.Apple, "사과", 1, 4500);
fruits[2] = Apple;
Fruit Strawberry = new Fruit(Fruit.FruitType.Strawberry, "딸기", 5, 6000);
fruits[3] = Strawberry;
Console.WriteLine("===================================\n");
}
public void ShowList()
{
Console.WriteLine("===========ShowList 실행===========");
for (int i = 0; i < fruits.Length; i++)
{
Console.WriteLine($"{fruits[i].name} X {fruits[i].num}, {fruits[i].price}won");
}
Console.WriteLine("===================================\n");
}
public void Sum()
{
Console.WriteLine("=======과일 가격 더하기 실행=======");
int a = 0;
for(int i = 0;i < fruits.Length;i++)
{
a += fruits[i].price* fruits[i].num;
}
Console.WriteLine($"모든 과일 합산 가격: {a}won");
Console.WriteLine("===================================\n");
}
public void Compare(int price)
{
int a = 0;
Console.WriteLine($"==={price}won 보다 비싼 과일 리스트===");
for (int i = 0; i < fruits.Length; i++)
{
if( fruits[i].price > price )
{
Console.WriteLine($"{fruits[i].name}이(가) {fruits[i].price -price}won 비싸다.");
a++;
}
}
Console.WriteLine();
Console.WriteLine($"비싼 과일은 총 {a}종");
Console.WriteLine("===================================\n");
}
public void Remove(Fruit.FruitType type, int num)
{
Console.WriteLine("===========과일 삭제 실행==========");
string delName;
for (int i = 0; i < fruits.Length; i++)
{
if(fruits[i].type == type && fruits[i].num >= num)
{
fruits[i].num -= num;
delName = fruits[i].name;
Console.WriteLine($"{delName}를 {num}개 삭제했습니다.");
}
}
Console.WriteLine("===================================\n");
}
}
}