게임 알고리즘

고블린이 홍길동에게 피해(1)을 받았습니다.

101won 2024. 8. 12. 18:09
  • APP (문제, 출력부)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Media;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace HelloWorld
{
    public class App
    {
      //생성자
      public App()
        {

            Player player = new Player("홍길동", 10, 1);
            //홍길동이 생성되었습니다.
            //체력: 10/10
            //공격력:1


            player.Move(1, 3);
            ////홍길동님이 1,3 이동하였습니다.


            Monster monster = new Monster("고블린", 10, 2);
            ////고블린이 생성되었습니다.
            ////체력: 10/10
            ////공격력: 2


            player.Attack(monster);
            ////고블린이 홍길동에게 피해(1)을 받았습니다. 남은 체력: 9/10

        }

    }
}

 

 

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

namespace HelloWorld
{
    internal class Player
    {
        //맴버 변수
        public string Name;
        public int MaxHp;
        public int Damage;

        //생성자
        public Player(string Name, int MaxHp, int Damage) 
        {
            this.Name = Name;
            this.MaxHp = MaxHp;
            this.Damage = Damage;
            //홍길동이 생성되었습니다.
            Console.WriteLine($"{Name}이 생성되었습니다.");

              //체력: 10/10
            Console.WriteLine($"체력 : {MaxHp}/{MaxHp}");

            //공격력:1
            Console.WriteLine($"공격력 : {Damage}");
            Console.WriteLine();

        }

        public void Move(int x, int y)
        {
            ////홍길동님이 1,3 이동하였습니다.
            Console.WriteLine($"{Name}님이 {x}, {y}으로 이동하였습니다.");
            Console.WriteLine();
        }

       
        public void Attack(Monster Monster)
        {
            ////고블린이 홍길동에게 피해(1)을 받았습니다. 남은 체력: 9/10
            Console.WriteLine($"{Monster.MMonster}이 {Name}에게 피해({Damage})을 받았습니다. 남은 체력{Monster.MMaxHp-Damage}/{MaxHp}");
        }

    }
}

- this를 사용해 해당 매서드가 종료되어도 사용한 변수가 남아 있도록 함. >> Attack매서드에서 사용

- Monster 클래스에서 this를 사용해 저장한 이름{Monster.MMonster}, 체력{Monster.MMaxHp-...} 값을 .(닷 연산자)로 호출

 

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

namespace HelloWorld
{
    internal class Monster
    {
        public string MMonster;
        public int MMaxHp;
        public int MDamage;

        //생성자
        public Monster(string MMonster, int MMaxHp, int MDamage)
        {
            this.MMonster = MMonster;
            this.MMaxHp = MMaxHp;
            this.MDamage = MDamage;

            ////고블린이 생성되었습니다.
            Console.WriteLine($"{MMonster}이 생성되었습니다.");

            //체력: 10/10
            Console.WriteLine($"체력 : {MMaxHp}/{MMaxHp}");

            ////공격력: 2
            Console.WriteLine($"공격력 : {MDamage}");
            Console.WriteLine();

        }

    }
}

- this를 사용해 해당 매서드가 종료되어도 사용한 변수가 남아 있도록 함. >> Attack매서드에서 사용

 

  • 출력

 

? 서로 다른 클래스에 각기 선언한 변수는 이름이 같아도 상관없다!

하지만~ 햇갈리니까 따로 만드는게 나을 것 같다.