C#/수업과제

클래스 생성 및 맴버 호출

minquu 2021. 3. 12. 00:27
반응형

1. 클래스 생성 후 app에 호출

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

namespace study03
{
    public class App
    {
        //생성자
        public App() {
            Console.WriteLine("app 생성자");


            Mutalisk mutalisk;
            mutalisk = new Mutalisk();
            Console.WriteLine(mutalisk);

            Hydralisk hydralisk;
            hydralisk = new Hydralisk();
            Console.WriteLine(hydralisk);

            Dragon dragon;
            dragon = new Dragon();
            Console.WriteLine(dragon);

            Drone drone;
            drone = new Drone();
            Console.WriteLine(drone);

            Probe probe;
            probe = new Probe();
            Console.WriteLine(probe);

            SCV scv = new SCV();
            Console.WriteLine(scv);

            Tank tank = new Tank();
            Console.WriteLine(tank);

            Larva larva = new Larva();
            Console.WriteLine(larva);

            Marine marine = new Marine();
            Console.WriteLine(marine);

            Commandcenter commandcenter = new Commandcenter();
            Console.WriteLine(commandcenter);


        }
        
    }
}

 

2. 맴버 변수 및 맴버 메서드 생성 연습

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

namespace study03
{
    public class Commandcenter
    {
        //맴버 변수
        public string name;
        public float Hp;
        public float damage;

        public Commandcenter() {
           
        }

        //맴버 메서드
        private void Hit(float damage) {
            this.Hp -= damage;
            Console.WriteLine("{0}가 {1} 만큼 피해를 입었습니다.",this.name, damage);
        }
        private void Die() {
            Console.WriteLine("{0}가 터졌습니다.", this.name);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    public class Dragon
    {
        //맴버 변수
        int shield;
        float hp;
        string unitName;

        public Dragon() { 
        
        }
        //맴버 메서드
        private void Die() {
            Console.WriteLine("{0}이/가 죽었습니다.", this.unitName);
        }
           
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    class Drone
    {
        //맴버 변수
        float hp;
        string unitName;
        public Drone() { 
        
        }
        //맴버 메서드
        private void GetherMineral(int amount) {
            Console.WriteLine("{0}이/가 {1}의 미네랄을 모읍니다.",this.unitName,amount);
        }

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

namespace study03
{
    public class Hydralisk
    {
        //맴버 변수
        string unitName;
        float hp;

        public Hydralisk() { 
        
        }

        //맴버 메서드
        private void Hit(float damage) {
            Console.WriteLine("{0}가 피해 {1} 받았습니다", this.unitName, damage);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    public class Larva
    {
        //맴버변수
        string unitName;
        float hp;
        public Larva() { 
        
        }
        //맴버 메서드
        private void Eolved(string evolvedName) {
            Console.WriteLine("{0}이 {1}으로 변태합니다.", this.unitName, evolvedName);
        }

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

namespace study03
{
    public class Mutalisk
    {
        //맴버변수
        string unitName;
        float hp;

        //생성자
        public Mutalisk() {
           
        }
        //맴버 메서드
        private void Attack(Mutalisk target) {
            Console.WriteLine("{0}가 {1}를/을 공격합니다",this.unitName,target);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    public  class Probe
    {
        //맴버 변수
        string unitName;
        float nowPositionX;
        float nowPositionY;

        public Probe() { 
        
        }

        //맴버 메서드
        private void Move(float positionX, float positionY) {
            Console.WriteLine("{0} 가 X축으로 {1} 만큼, Y축으로 {2} 만큼 움직입니다.", this.unitName, positionX, positionY);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    public class SCV
    {
        //맴버 변수
        string unitName;
        float hp;

        public SCV() { 
        }
        //맴버 메서드
        private void Repair(SCV target) {
            Console.WriteLine("{0} 가 {1} 을/를 수리합니다.", this.unitName, target.unitName);
        }

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

namespace study03
{
    public class Tank
    {
        enum eTankMode
        {
            TankMdoe,
            SiegeMode,
        }
        public Tank() { 
        
        }

        //맴버 메서드
        private void ChangeMode() { 
        }
    }
}

 

----- 

클래스 생성 -> 호출

클래스 내부에서 맴버 변수, 메서드 정의까지는 조금 알겠지만,

실제로 메서드를 만들고,  App.cs 에서 클래스의 맴버 메서드, 변수를 자유롭게 사용하는 단계는 아직 어려움...

그 부분을 조금 더 연습을 해야겠다고 판단 

// 따라서 선생님과 함께 한 예제를 천천히 파악하면서 만들어봄 (클래스 구조를 파악하는데 도움이 많이 됐음)

-----

 

마린 2마리 생성 -> 한 마리가 공격(체력까지 표시)

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

namespace study03
{
    public class App
    {
        //생성자
        public App() {
            Console.WriteLine("app 생성자");


            Marine marine1 = new Marine();
            marine1.unitName = "마린A";
            marine1.damage = 20;
            marine1.hp = 100;
            Console.WriteLine(marine1.unitName);

            Marine marine2 = new Marine();
            marine2.unitName = "마린B";
            marine2.damage = 20;
            marine2.hp = 100;
            Console.WriteLine(marine2.unitName);

            for (int i = 0; i < 10; i++)
            {

                marine1.Attack(marine2);
                if (marine2.hp <= 0)
                {
                    break;
                }
            }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    public class Marine
    {
        //맴버 변수 // 맴버변수도 접근하려면 public를 사용해야한다.
        public string unitName;
        public float hp;
        public float damage;
          
        public Marine() 
        { 

        }

        //맴버 메서드
        public void Attack(Marine target)
        {
            Console.WriteLine("{0}이(가) {1}을(를) 공격합니다.", this.unitName, target.unitName);
            target.Hit(this.damage);
        }
        public void Hit(float damage)
        {
            this.hp -= damage;
            Console.WriteLine("{0}이(가) 피해({1})를 받았습니다.", this.unitName, damage);
            Console.WriteLine("{0}의 체력이 {1} 남았습니다.",this.unitName,this.hp);
        }

        public void CheckHp(float hp) {
            Console.WriteLine("현재 체력은 : ({0})입니다",this.hp);
        }

    }
}

 

target.Hit(this.damage);

메서드 -> 메서드로 들어가는 부분이 처음에는 어려웠다가 차근차근 만들면서 이해가 됐습니다.

 

----

 

-미네랄 덩어리 생성

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

namespace study03
{
    public class App
    {
        //생성자
        public App() {
            Console.WriteLine("app 생성자");

            Mineral mineral = new Mineral();
            mineral.amount = 5000;
            int amount = mineral.GetAmount();
            Console.WriteLine("현재 미네랄 덩어리 양 : {0}", amount);
            
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study03
{
    public class Mineral
    {
        //맴버 변수
        public int amount;

        public Mineral() { 
        
        }

        //맴버 메서드
        public int GetAmount()
        {
            return amount;
        }
        

    }
}

 

간단한 예제지만,

return 변환 하는 것을 이해하지 못해서 조금 해맸음.

 

 

반응형