티스토리 뷰
#매게변수가 있는 클래스를 만들어보자
#메서드 안에 매게변수를 넣어보자
#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("이동 하였습니다");
}
}
}
}
'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 |