Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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
31
Archives
Today
Total
관리 메뉴

행복한 개구리

C# 21.03.09.과제 2 본문

C#/수업과제

C# 21.03.09.과제 2

HappyFrog 2021. 3. 9. 21:25

2-1 드라군 건물파괴

드라군 12마리(1부대)가 에볼루션 체임버를 깨는 과정을 출력. 에볼루션 체임버의 체력재생은 배제함.

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

namespace Homework000
{
    class Program
    {



        static void Main(string[] args)
        {
            string unitName = "드라군";
            float dmg = 20;
            string bdName = "에볼루션 체임버";
            float bdMaxHp = 750;
            float bdHp = bdMaxHp;
            float bdArm = 1;
            ;

            Console.WriteLine("{0}이 12개(1부대)가 있습니다.", unitName);
            Console.WriteLine("{0}의 공격력은 {1}입니다.", unitName, dmg);
            Console.WriteLine("{0}의 체력은 {1}입니다.", bdName, bdHp);
            Console.WriteLine("{0}의 방어력은 {1}입니다.", bdName, bdArm);
            Console.WriteLine("{0} 1부대가 {1}를 공격합니다.", unitName, bdName);

            int i = 0;
            while (i < 10)
            {
                bdHp -= (dmg - bdArm) * 12;
                float per = (bdHp / bdMaxHp) * 100;
                i++;
                
                if (bdHp <= 0)
                {
                    bdHp = 0;
                    per = 0;
                }
                Console.WriteLine("{0} 체력 : {1} {2}%", bdName, bdHp, per);

                if (bdHp <= 0)
                {
                    break;                    
                }
                




            }
            Console.WriteLine("{0}가 파괴되었습니다.", bdName);
            Console.WriteLine("{0}부대가 {1}회 공격하였습니다.", unitName, i);



            //드라군이 12개(1부대)가 있습니다.
            //드라군의 공격력은 20입니다.
            //에볼루션 체임버의 체력은 750입니다.
            //에볼루션 체임버의 방어력은 1입니다.
            //드라군 1부대가 에볼루션 체임버를 공격합니다.
            //에볼루션 체임버 체력 : 522
            //....
            //에볼루션 체임버 체력 : 0
            //에볼루션 체임버가 파괴되었습니다.
            //드라군부대가 n회 공격하였습니다.
        }


    }
}

 

출력값

 

============================================================================

2-2 질럿 커맨드 파괴 & SCV 건물 수리

질럿 20마리가 커맨드를 공격하고 SCV 4마리가 커맨드를 수리하는 식을 출력.

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

namespace Homework000
{
    class Program
    {
        enum attackStyle
        {
            Single,
            Double
        }


        static void Main(string[] args)
        {
            string unitName1 = "질럿";
            attackStyle atkType = attackStyle.Double;
            float singleDmg = 8;
            float doubleDmg = (singleDmg * 2);            
            string bdName = "커맨드 센터";
            float bdMaxHp = 1500;
            float bdTime = 120;
            float bdArm = 1;
            string unitName2 = "SCV";
            float repair = bdMaxHp * 0.9f / bdTime;
            float bdHp = bdMaxHp;
            
            

            Console.WriteLine("{0}이 20마리 있습니다.", unitName1);
            Console.WriteLine("{0} 공격 타입 : {1}", unitName1, atkType);
            Console.WriteLine("{0}의 공격력 : {1}", unitName1, doubleDmg);
            Console.WriteLine("{0}가 4마리 있습니다.", unitName2);
            Console.WriteLine("{0} 수리속도 : {1}", unitName2, repair);
            Console.WriteLine("{0}가 있습니다.", bdName);
            Console.WriteLine("{0} 건설시간 : {1}", bdName, bdTime);
            Console.WriteLine("{0} 체력 : {1}", bdName, bdHp);
            Console.WriteLine("{0} 방어력 : {1}", bdName, bdArm);
            Console.WriteLine("{0} 20마리가 {1}를 공격합니다.", unitName1, bdName);
            Console.WriteLine("{0} 4마리가 {1} 수리를 시작합니다.", unitName2, bdName);
            int i = 0;
            while (i < 50)
            {                
                i++;
                Console.WriteLine("{0}들이 {1}번째 공격을 합니다. (-{2})", unitName1, i, (singleDmg - bdArm) * 2 * 12);
                bdHp -= (singleDmg - bdArm) * 2 * 20;
                float per = bdHp / bdMaxHp;
                if (bdHp > 0)
                {
                    Console.WriteLine("{0}들이 {1}를 수리했습니다. ({2})", unitName2, bdName, repair * 4);
                    bdHp += repair * 4;
                }
                               
               
                else if (bdHp <=0)
                {
                    bdHp = 0;
                    per = 0;
                }

                Console.WriteLine("{0} 체력이 {1} 남았습니다. ({2}%)", bdName, bdHp, per);
                if (bdHp == 0)
                {
                    break;
                }                
            }
            Console.WriteLine("{0}가 파괴되었습니다.", bdName);
            Console.WriteLine("남아있는 건물이 없습니다.");
            Console.WriteLine("패배");
            

            
            //질럿이 7마리 있습니다.
            //질럿 공격 타입 : 
            //질럿 공격력 : 8*2
            //SCV가 4마리 있습니다.
            //SCV 수리속도 : (건물체력*0.9)/건설시간
            //커맨드 센터가 있습니다.
            //커맨드 센터 건설시간 : 120초
            //커맨드 센터 체력 : 1500
            //커맨드 센터 방어력 : 1
            //질럿 7마리가 커맨드 센터를 공격합니다.
            //SCV 4마리가 커맨드 센터 수리를 시작합니다.
            //질럿들이 i번째 공격을 합니다.
            //커맨드 센터 체력이 n 남았습니다. (x%)
            //....
            //커맨드 센터 체력이 0 남았습니다. (0%)
            //커맨드 센터가 파괴되었습니다.
            //남아있는 건물이 없습니다.
            //패배
            
                       
        }


    }
}

출력값

============================================================================

2-3 마린 스팀팩사용 & 메딕 힐 사용

스팀팩을 쓰고 체력이 떨어진 마린을 메딕이 치료하는 과정을 출력.

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

namespace Homework000
{
    class Program
    {
        enum attackStyle
        {
            Single,
            Double
        }


        static void Main(string[] args)
        {
            string unitName1 = "마린";
            float skillCost1 = 10;
            float unitMaxHp1 = 40;
            float unitHp1 = unitMaxHp1;


            string unitName2 = "메딕";
            int maxMana = 20;
            int mana = maxMana;
            int skillCost2 = 4;
            float heal = 5;
            
            int i = 0;
            while (i < 4)
            {                             
                unitHp1 -= skillCost1;                
                float per1 = unitHp1 / unitMaxHp1;
                i++;
                Console.WriteLine("{0}은 스팀팩을 사용하였다. 현재 체력 : {1}/{2} ({3}%)", unitName1, unitHp1, unitMaxHp1, per1);
                if(unitHp1 <= 10)
                {
                    break;
                }            
            }
            Console.WriteLine("{0}은 {1}에게 힐을 주려고 합니다.", unitName2, unitName1);

            int x = 0;
            while (x < 5)
            {
                x++;
                string result = mana > skillCost2 ? "힐을 사용합니다." : "마나가 부족합니다.";
                mana -= skillCost2;
                unitHp1 += heal;
                float per1 = unitHp1 / unitMaxHp1;
                Console.WriteLine(result);
                               
                
                if (mana < 4)
                {
                    break;
                }
                
                Console.WriteLine("{0}의 체력 : {1}/{2} ({3}%)", unitName1, unitHp1, unitMaxHp1, per1);

                
            }
            




        }


    }
}

출력값

============================================================================

2-4 직업선택

디아블로 직업 선택창 출력.

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

namespace Homework000
{
    class Program
    {


        static void Main(string[] args)
        {
            
            string class1 = "아마존";
            string class2 = "어쌔신";
            string class3 = "네크로맨서";
            string class4 = "바바리안";
            string class5 = "팔라딘";
            string class6 = "소서리스";
            string class7 = "드루이드";

            for (int i = 1; i < 9; i++)
            {
                if (i == 1)
                {
                    Console.WriteLine("{0}을 선택하셨습니다.", class1);
                }
                else if (i == 2)
                {
                    Console.WriteLine("{0}을 선택하셨습니다.", class2);
                }
                else if (i == 3)
                {
                    Console.WriteLine("{0}를 선택하셨습니다.", class3);
                }
                else if (i == 4)
                {
                    Console.WriteLine("{0}을 선택하셨습니다.", class4);
                }
                else if (i == 5)
                {
                    Console.WriteLine("{0}을 선택하셨습니다.", class5);
                }
                else if (i == 6)
                {
                    Console.WriteLine("{0}를 선택하셨습니다.", class6);
                }
                else if (i == 7)
                {
                    Console.WriteLine("{0}를 선택하셨습니다.", class7);
                }
                else
                {
                    Console.WriteLine("당신의 선택을 기다리고 있습니다.");
                }

            }

            

        }
    }
}

 

출력값

============================================================================

2-5 열쇠로 포탈소환

지옥문 장치를 사용하여 지옥문 개방

 

 

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

namespace Homework000
{
    class Program
    {


        static void Main(string[] args)
        {
            string dgName = "업화지옥";
            

            int i = 0;
            while (i < 4)
            {
                
                if (i == 0)
                {
                    string itemName = "깨진 물약병";
                    switch (itemName)
                    {                        
                        case "지옥문 장치":
                            Console.WriteLine("지옥문이 열렸습니다.");
                            break;
                        default:
                            Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
                            break;

                    }
                }
                else if (i == 1)
                {
                    string itemName = "악마의 꼬리";
                    switch (itemName)
                    {
                        case "지옥문 장치":
                            Console.WriteLine("지옥문이 열렸습니다.");
                            break;
                        default:
                            Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
                            break;

                    }

                }
                else if (i == 2)
                {
                    string itemName = "헝겊 조각";
                    switch (itemName)
                    {
                        case "지옥문 장치":
                            Console.WriteLine("지옥문이 열렸습니다.");
                            break;
                        default:
                            Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
                            break;

                    }
                }
                else if (i == 3)
                {
                    string itemName = "지옥문 장치";
                    switch (itemName)
                    {
                        case "지옥문 장치":
                            Console.WriteLine("지옥문이 열렸습니다.");
                            break;
                        default:
                            Console.WriteLine("올바르지 않은 아이템입니다. {0}을 사용하여 지옥문을 여십시오.", itemName);
                            break;

                    }
                }
                else;
                i++;
               
               



            }
                  
        }
    }
}

출력값

 

============================================================================

2-6 드랍등급에 따른 반응

랜덤으로 지정한 확률에 따라 나온 아이템 등급에 따른 반응을 출력.

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

namespace Homework000
{
    class Program
    {enum itemGrade
        {
            Legendary,
            Rare,
            Magical,
            Normal
        }


        static void Main(string[] args)
        {
            string itemName = "드랍템";
            Random probab = new Random();
            int num = probab.Next(0, 101);
            bool isDrop = true;
            bool isNormal = (num > 30) && isDrop;
            bool isMagical = (num <= 30) && (num > 15) && isDrop;
            bool isRare = (num <= 15) && (num > 2) && isDrop;
            bool isLegendary = (num <= 2) && isDrop;

            if(isNormal == true)
            {
                Console.WriteLine("Better than nothing.");
            }
            else if(isMagical == true)
            {
                Console.WriteLine("Not bad though.");
            }
            else if(isRare = true)
            {
                Console.WriteLine("Looks quite nice. It must be useful.");
            }
            else if(isLegendary = true)
            {
                Console.WriteLine("Finally! Yes! We made it!");
            }
            else
            {
                Console.WriteLine("Keep working.");
            }
        }
    }
}

이런식으로 확률에 따라 나온다.

============================================================================

2-7 신지드로 티모를 때릴 수 있을까

신지드(좌)의 좌표와 티모(우)의 좌표를 가정하여 공격 가능여부를 출력.

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

namespace Homework000
{
    class Program
    {
        


        static void Main(string[] args)
        {
            string unitName = "신지드";
            float attackRange = 1.25f;
            float sight = 9;
            float heroX = 0;
            float heroY = 0;

            string enemyName = "티모";
            float enemyX = 12;
            float enemyY = 6;

            double a = Math.Pow(enemyX - heroX, 2);
            double b = Math.Pow(enemyY - heroY, 2);
            double distance = Math.Sqrt(a + b);
            bool isAttackAvailable = (distance <= sight) && (distance <= attackRange);


            if (isAttackAvailable == false)
            {
                Console.WriteLine("춤을 춘다.");
            }
            else if (isAttackAvailable == true)
            {
                Console.WriteLine("공격한다.");
            }
            else;


        }
    }
}

춤이나 추자.

============================================================================

'C# > 수업과제' 카테고리의 다른 글

C#21.03.15.과제 6  (0) 2021.03.15
C# 21.03.12~14.과제 5  (0) 2021.03.12
C# 21.03.11.과제 4  (0) 2021.03.12
C# 21.03.10.과제 3  (0) 2021.03.10
C# 과제 21.08.20. 기본 데이터 형식 연습  (0) 2021.03.08