티스토리 뷰

C#/복습

여러가지 클래스 연습

Game Client Lee Hwanguk 2023. 1. 9. 00:22

#매게변수가 있는 클래스를 만들어보자

#메서드 안에 매게변수를 넣어보자

#for문과 if문을 이용하여 응용해보자

#this.name과 target.name 값에 주목

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

namespace review01
{

    internal class Marine
    {
        public enum Type
        {
            ATTACK,
            Build
        }

        string name;
        int hp;
        int maxHp;
        int damage;

        public Marine(string name, int hp, int damage)
        {
            this.name = name;
            this.hp = hp;
            maxHp = hp;
            this.damage = damage;
            Console.WriteLine("마린 {0}이 생성되었다.공격력 :{1} 체력:{2}/{3},{4}타입", name, damage, hp,maxHp,Type.ATTACK);
        }

        public void Hit(Marine target)
        {
            for(int i=0; i<10; i++)
            {
                Console.WriteLine("{0}이(가) {1}를 공격 했습니다.", this.name, target.name);
                target.Hurt();
                isDie();
                Console.WriteLine();

            }

        }

        public void Hurt()
        {
            hp=this.hp - this.damage;
            Console.WriteLine("{0}의 체력은 {1}",this.name,hp);
        }

        public void isDie()
        {
            if(this.hp>0)
            {
                Console.WriteLine("{0}의 체력은 {1}/{2}다",this.name,this.hp,this.maxHp);
            }

            else
            {
                hp = 0;
                Console.WriteLine("{0}은 죽었다");
                return;
            }
        }


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

namespace review01
{
    internal class App
    {
       

        public App()
        {
            Marine marine1=new Marine("이환국",50,6); //매게변수를 넣은 인스턴스 생성
            Marine marine2=new Marine("김동준",50,6);
            marine1.Hit(marine2); //marine1의 인스턴스에 Hit메서드 호출, 매게변수를 생성해보자
            marine2.Hit(marine1); //marine2는 맴버변수를 가지고있는 인스턴스
        }



    }
}

#시즈탱크를 만들자

#생성 될때 탱크모드로 생성된다 (이동가능,공격 30)

#ChangeMode를 하면 시즈모드로 전환된다(이동불가, 공격70)

#열거형식을 만들어 메서드 호출할때 넣어보자

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

namespace review01
{
    internal class App
    {
       

        public App()
        {
            //시즈모드, 탱크보드 (열거형식을 사용해보자)
            //시즈모드 -공격력 70, 이동불가
            //탱크모드 -공격력 30, 이동가능
            SiegeTank siegeTank =new SiegeTank();
            siegeTank.ChangeMode(SiegeTank.Mode.SIEGEMODE);
            
            siegeTank.ChangeMode(SiegeTank.Mode.TANKMODE);


        }



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

namespace review01
{
    internal class SiegeTank
    {
        public enum Mode
        {
            SIEGEMODE,
            TANKMODE
        }
        public Mode mode;

        int damage;
        public SiegeTank()
        {
            mode = Mode.TANKMODE;
           this.damage = 30;
            Console.WriteLine("시즈탱크가 생성되었습니다. 공격력{0}",this.damage);
            Move();
            Console.WriteLine();
        }

        public void ChangeMode(SiegeTank.Mode mode)
        {
            if(mode==Mode.SIEGEMODE)
            {
                this.damage = 70;
                Console.WriteLine("시즈모드로 전환합니다 공격력은{0}",this.damage);
                Move();
                Console.WriteLine();


            }
            else
            {
                this.damage = 30;
                Console.WriteLine("탱크모드로 전환합니다 공격력은{0}",this.damage);
                Move();
                Console.WriteLine();
            }


        }

        public void Move()
        {
            if(mode==Mode.SIEGEMODE)
            {
                Console.WriteLine("이동할수 없습니다");
            }
            else
            {
                Console.WriteLine("이동 하였습니다");
            }
        }
    }
}

#드디어 성공했다. ChangeMode 메서드 안에 if문을 이용하여 시즈모드/탱크모드의 상황을 만들었다. Move메서드를 만들어 ChangeMode메서드 안에 넣었다. ChangeMode가 호출되면 동시에 호출이 된다.

'C# > 복습' 카테고리의 다른 글

프로퍼티  (0) 2023.01.10
배열 연습  (0) 2023.01.09
1월 1주 복습 (클래스)  (0) 2023.01.08
1월 1주 복습 (반복문 for문) (조건문 if , else if, else)  (0) 2023.01.07
메서드 복습  (0) 2023.01.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함