본문 바로가기

정리 카테고리/실습_과제

실습_출석 + 빵보상 소스코드

1.1요구사항


1일차 : 출석함, 빵(소보루) 1개 받음, 빵 1개 먹음, 남은 빵 : 0개
2일차 : 출석함, 빵(단밭빵) 1개 받음, 빵 안먹음, 남은 빵 : 1개 (단밭빵)
3일차 : 출석함, 빵(소라빵) 안받음, 빵 안먹음, 남은 빵 1개 (단밭빵)
4일차 : 출석함, 빵(소보루) 1개 받음, 빵 안먹음, 남은 빵 2개  (단밭빵, 소보루)
5일차 : 출석함, 빵(단밭빵) 1개 받음, 빵 1개 먹음(소보루), 남은 빵 2개 (단밭빵2개)
6일차 : 출석함, 빵(소보루) 1개 받음, 빵 안먹음, 남은 빵 3개 (단밭빵2, 소보루1)
7일차 : 출석함, 빵(소보루랑 단팥빵) 2개 받음, 빵 안먹음, 남은 빵 5개 (소보루2개, 단밭빵 3개)

빵 1개당 20원원으로 교환 해줌 
가지고 있는 빵은 5개 
빵을 교환 해서 받은 금액은 : 100원 


1.2.결과 화면




1.3.소스 코드



  
    void Start()
    {
        System.Text.StringBuilder tPrint = new System.Text.StringBuilder();


        int soraBread = 0;//가지고 있는 소라빵 수
        int soboBread = 0;//가지고 있는 소보루 수
        int redbBread = 0;//가지고 있는 단팥빵 수
        bool isAttendent = true;//출석 여부
        bool isGetreward = true;//보상 받을지 여부
        int breadChe = 0;//보상빵 선택
        int saveAttendent = 0;//누적한 출석한 횟수
        int saveGetreward = 0;//누적한 보상받은 횟수
        int totalGetreward = 0;//누적한 현재 보유 빵

        //7일간 출석 및 보상
        for (int day = 1; day < 8; day++)
        {
            //출석으로 보상 받기
            if (isAttendent)
            {
                saveAttendent++;//누적 출석

                tPrint.Append("\n" + day + "일차 출석하였습니다.");
                //보상 받을지 여부
                if (!(day == 3))
                {
                    isGetreward = true;
                }
                else
                {
                    isGetreward = !isGetreward;
                }
                //보상 받기
                if (isGetreward)
                {
                    if(breadChe%2 == 0)
                    {
                        tPrint.Append("\n++보상으로 소보루를 받았습니다.");
                        soboBread++;
                        totalGetreward++;
                        saveGetreward++;
                        breadChe++;
                    }
                    else
                    {
                        tPrint.Append("\n++보상으로 단팥빵을 받았습니다.");
                        redbBread++;
                        totalGetreward++;
                        saveGetreward++;
                        breadChe++;
                    }

                }
                else
                {
                    tPrint.Append("\n오늘 보상으로 빵을 받지 않았습니다.");
                }
            }
            else
            {
                tPrint.Append("\n출석 하지않아 보상을 못받습니다.");
            }

            //배고파서 빵먹기
            if (day == 1 || day == 5)
            {
                tPrint.Append("\n--배고파서 소보루를 먹었습니다.");
                soboBread--;
                totalGetreward--;
            }

             tPrint.Append("\n**지금 보유한 빵은 소라빵 " + soraBread + "개 소보루 " + soboBread + "개 단팥빵 " + redbBread + "개 입니다.");
        }
    
        //못받은 빵이 있는지 확인
        if (!(saveAttendent == saveGetreward))
        {
            tPrint.Append("\n++못받았던 빵 " + (saveAttendent - saveGetreward) + "개를 추가로 받았습니다.");
            //못받은빵 랜덤으로 1가지 주기
            for (int i = 0; i < (saveAttendent - saveGetreward); i++)
            {

                        tPrint.Append("\n++보상으로 소보루를 받았습니다.");
                        soboBread++;
                        totalGetreward++;
                        saveGetreward++;

                
            }
            saveGetreward = saveGetreward + (saveAttendent - saveGetreward);
            tPrint.Append("\n>>총 출석으로 받은 빵이 " + totalGetreward + "개 있습니다.");
        }
        //받은 빵 판매
        if (!(totalGetreward == 0))
        {
            tPrint.Append("\n))최종 보유한 빵은 소라빵 " + soraBread + "개 소보루 " + soboBread + "개 단팥빵 " + redbBread + "개 입니다.");
            tPrint.Append("\n$$남아있던 빵을 개당 20원씩 하여 " + (totalGetreward * 20) + "골드 받았습니다");
        }
        Debug.Log(tPrint.ToString());

    }





2.1.요구 사항

 -출석을 1일차부터 7일차까지 7일동안

 -출석 보상으로 3가지 빵 중 하나를 준다.

 -3일차는 무조건 출석후 빵을 안받는다.

 -1일차와 5일차에 가지고 있는 빵을 먹는다.

 -7일차(마지막 날)에 못받은 빵을 받는다.

 -남은 빵은 모두 개당 20골드로 바꾼다.


추가내용 

 -보상으로 빵을 3가지중 1개를 랜덤으로 준다

 -빵을 먹을때 가지고 있는것중 랜덤으로 먹는다. 






2.2.결과 화면







2.3.소스 코드



  
	void Start () {
        System.Text.StringBuilder tPrint = new System.Text.StringBuilder();


            int soraBread = 0;//가지고 있는 소라빵 수
            int soboBread = 0;//가지고 있는 소보루 수
            int redbBread = 0;//가지고 있는 단팥빵 수
            bool isAttendent = true;//출석 여부
            bool isGetreward = true;//보상 받을지 여부
            int breadPer = 0;//빵 나올 확률
            int saveAttendent = 0;//누적한 출석한 횟수
            int saveGetreward = 0;//누적한 보상받은 횟수
            int totalGetreward = 0;//누적한 현재 보유 빵

            //7일간 출석 및 보상
            for (int day = 1; day < 8; day++)
            {
                //출석으로 보상 받기
                if (isAttendent)
                {
                    saveAttendent++;//누적 출석

                    tPrint.Append("\n"+day + "일차 출석하였습니다.");
                    //보상 받을지 여부
                    if (!(day == 3))
                    {
                        isGetreward = true;
                    }
                    else
                    {
                        isGetreward = !isGetreward;
                    }
                    //보상 받기
                    if (isGetreward)
                    {
                        breadPer = Random.Range(1, 4);
                        if (breadPer == 1)
                        {
                            tPrint.Append("\n++보상으로 소라빵을 받았습니다.");
                            soraBread++;
                            totalGetreward++;
                            saveGetreward++;
                        }
                        else if (breadPer == 2)
                        {
                            tPrint.Append("\n++보상으로 소보루를 받았습니다.");
                            soboBread++;
                            totalGetreward++;
                            saveGetreward++;
                        }
                        else if (breadPer == 3)
                        {
                            tPrint.Append("\n++보상으로 단팥빵을 받았습니다.");
                            redbBread++;
                            totalGetreward++;
                            saveGetreward++;
                        }
                        else { tPrint.Append("ERORR 코드 작성 오류"); }


                    }
                    else
                    {
                        tPrint.Append("\n오늘 보상으로 빵을 받지 않았습니다.");
                    }
                }
                else
                {
                    tPrint.Append("\n출석 하지않아 보상을 못받습니다.");
                }

                //배고파서 빵먹기
                if (day == 1 || day == 5)
                {
                    for (int check = 0; check <= 0; check++)
                    {
                        breadPer = Random.Range(1, 4);
                        if ((breadPer % 3) == 1 && soraBread > 0)
                        {
                            tPrint.Append("\n--배고파서 소라빵을 먹었습니다.");
                            soraBread--;
                            totalGetreward--;
                        }
                        else if ((breadPer % 3) == 2 && soboBread > 0)
                        {
                            tPrint.Append("\n--배고파서 소보루를 먹었습니다.");
                            soboBread--;
                            totalGetreward--;
                        }
                        else if ((breadPer % 3) == 0 && redbBread > 0)
                        {
                            tPrint.Append("\n--배고파서 단팥빵을 먹었습니다.");
                            redbBread--;
                            totalGetreward--;
                        }
                        else { check--; }

                    }

                }

                tPrint.Append("\n**지금 보유한 빵은 소라빵 " + soraBread + "개 소보루 " + soboBread + "개 단팥빵 " + redbBread + "개 입니다.");
            
            }
        //못받은 빵이 있는지 확인
        if (!(saveAttendent == saveGetreward))
            {
                tPrint.Append("\n++못받았던 빵 " + (saveAttendent - saveGetreward) + "개를 추가로 받았습니다.");
            //못받은빵 랜덤으로 1가지 주기
            for (int i = 0; i < (saveAttendent - saveGetreward); i++)
            {
                if (isGetreward)
                {
                    breadPer = Random.Range(1, 4);
                    if (breadPer == 1)
                    {
                        tPrint.Append("\n++보상으로 소라빵을 받았습니다.");
                        soraBread++;
                        totalGetreward++;
                    }
                    else if (breadPer == 2)
                    {
                        tPrint.Append("\n++보상으로 소보루를 받았습니다.");
                        soboBread++;
                        totalGetreward++;
                    }
                    else if (breadPer == 3)
                    {
                        tPrint.Append("\n++보상으로 단팥빵을 받았습니다.");
                        redbBread++;
                        totalGetreward++;
                    }
                    else { tPrint.Append("ERORR 코드 작성 오류"); }
                }
            }
                saveGetreward = saveGetreward + (saveAttendent - saveGetreward);
                tPrint.Append("\n>>총 출석으로 받은 빵이 " + totalGetreward + "개 있습니다.");
        }
            //받은 빵 판매
            if (!(totalGetreward == 0))
            {
                tPrint.Append("\n))최종 보유한 빵은 소라빵 " + soraBread + "개 소보루 " + soboBread + "개 단팥빵 " + redbBread + "개 입니다.");
                tPrint.Append("\n$$남아있던 빵을 개당 20원씩 하여 " + (totalGetreward * 20) + "골드 받았습니다");
            }
            Debug.Log(tPrint.ToString());

    }