오늘의 코딩

C# delegate pizza

용성 2022. 1. 24. 12:24
public partial class Form1 : Form
    {
        int TotalPrice = 0;
        public delegate int delFuncDow_Edge(int i);
        public delegate int delFuncTopping(string strOrder, int Ea);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            delFuncDow_Edge delDow = new delFuncDow_Edge(fDow);
            delFuncDow_Edge delEdge = new delFuncDow_Edge(fEdge);
            delFuncTopping delTopping = null;

            int iDowOrder = 0;
            int iEdgeOrder = 0;

            //도우 선택
            if (checkBox1.Checked)
            {
                iDowOrder = 1;
            }
            else if (checkBox2.Checked)
            {
                iDowOrder = 2;
            }

            //delDow(iDowOrder);
            
            //엣지 선택
            if (checkBox4.Checked)
            {
                iEdgeOrder = 1;
            }
            else if (checkBox3.Checked)
            {
                iEdgeOrder = 2;
            }

            //delEdge(iEdgeOrder);
            fCallBackDelegate(iDowOrder, delDow);
            fCallBackDelegate(iEdgeOrder, delEdge);

            if (checkBox6.Checked) delTopping += fTopping1;
            if (checkBox5.Checked) delTopping += fTopping2;
            if (checkBox7.Checked) delTopping += fTopping3;

            delTopping("토핑", (int)numericUpDown1.Value);

            fboxOrder("-----------------------");
            fboxOrder(string.Format("전체 주문 가격은 {0}원 입니다", TotalPrice));
        }
        //도우
        private int fDow(int iDowOrder)
        {
            string strOrder = string.Empty;
            int iPrice = 0;
            if (iDowOrder == 1)
            {
                iPrice = 10000;
                strOrder = string.Format("도우는 오리지널을 선택 하셨습니다. ({0}원)", iPrice.ToString());
            }
              else if(iDowOrder == 2)
            {
                iPrice = 11000;
                strOrder = string.Format("도우는 씬을 선택 하셨습니다. ({0}원)", iPrice.ToString());
            } 
              else
            {
                strOrder = "도우를 선택하지 않았습니다.";
            }
             
            listBox1.Items.Add(strOrder);

            return TotalPrice = TotalPrice + iPrice;
        }

        //엣지
        private int fEdge(int iEdgeOrder)
        {
            string strOrder = string.Empty;
            int iPrice = 0;

            if (iEdgeOrder == 1)
            {
                iPrice = 1000;
                strOrder = string.Format("엣지는 리치골드을 선택 하셨습니다. ({0}원)", iPrice.ToString());
            }
            else if (iEdgeOrder == 2)
            {
                iPrice = 2000;
                strOrder = string.Format("엣지는 치즈크러스트을 선택 하셨습니다. ({0}원)", iPrice.ToString());
            }
            else
            {
                strOrder = "엣지를 선택하지 않았습니다.";
            }

            listBox1.Items.Add(strOrder);

            return TotalPrice = TotalPrice + iPrice;
        }

        public int fCallBackDelegate(int i, delFuncDow_Edge delFunc)
        {
            return delFunc(i);
        }

        private int fTopping1(string Order, int iEa)
        {
            string strOrder = string.Empty;
            int iPrice = iEa * 500;

            strOrder = string.Format("소세지 {0} {1} 개를 선택 하였습니다. : ({2}원 (1ea 500원)", Order, iEa, iPrice);

            fboxOrder(strOrder);

            return TotalPrice = TotalPrice + iPrice;
        }

        private int fTopping2(string Order, int iEa)
        {
            string strOrder = string.Empty;
            int iPrice = iEa * 200;

            strOrder = string.Format("감자 {0} {1} 개를 선택 하였습니다. : ({2}원 (1ea 200원)", Order, iEa, iPrice);

            fboxOrder(strOrder);

            return TotalPrice = TotalPrice + iPrice;
        }

        private int fTopping3(string Order, int iEa)
        {
            string strOrder = string.Empty;
            int iPrice = iEa * 300;

            strOrder = string.Format("치즈 {0} {1} 개를 선택 하였습니다. : ({2}원 (1ea 300원)", Order, iEa, iPrice);

            fboxOrder(strOrder);

            return TotalPrice = TotalPrice + iPrice;
        }

        private void fboxOrder(string strOrder)
        {
            listBox1.Items.Add(strOrder);
        }
    }

728x90

'오늘의 코딩' 카테고리의 다른 글

C# Linq  (0) 2022.01.25
C# Thread  (0) 2022.01.24
C# listView  (0) 2022.01.23
C# httpClient  (0) 2022.01.21
1.21 C# Class  (0) 2022.01.21