[C#] DeepCopy
·
Language/C#
using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace TeamProejct_Dungeon{ public enum ItemType { Armour, Weapon, Consumable } public class IItem { public virtual string name { get; set; } public virtual double buyPrice { get; set; } // 구매 가격 public..
[C#] List
·
Language/C#
namespace Collection{ internal class Program { public class Weapon { string name; int hp; int mp; public Weapon(string name, int hp, int mp) { this.name = name; this.hp = hp; this.mp = mp; } public void PrintInfo() { Console.Wri..
[C#] Convert.ToInt32() vs int.Parse()
·
Language/C#
Convert.ToInt32() vs int.Parse()뭐가 다를까? string a = "5"; // Convert.ToInt32() vs int.Parse() 를 비교해보자! int b = Convert.ToInt32(a); Console.WriteLine("Convert.ToInt32(a) 사용! "+b); // 5 int c = int.Parse(a); Console.WriteLine("int.Parse(a) 사용! " + c); // -출력- //Convert.ToInt32(a) 사용! 5 //..
[C#] 상속
·
Language/C#
상속이란? 기존의 클래스를 확장하거나 재사용할 때 사용기존의 클래스의  필드, 메서드, 프로퍼티등을 부여받을 수 있다물려주는 클래스를 부모 클래스 물려받는 클래스를 자식클래스라고 한다. 장점코드의 재사용성: 코드 반복을 줄일 수 있다.계층 구조 표현유지보수성 향상 C#에서는 다중 상속이 불가, 단일 상속만 가능하다 계층적인 상속 구조를 가질 수 있으며부모클래스의 접근 제한자에 따라 자식클래스의 접근을 정할 수 있습니다. virtual가상메서드virtual 키워드로 자식 클래스에서 필요에 따라 재정의 할 수 있다.
[C#] Text RPG
·
Language/C#
내가 만든 text RPG의 문제점을 살펴보자오늘은 [상태보기] 정리 Program.cs파일Main. 번호를 누르면 각 항목으로 이동using System;using System.Collections.Specialized;using System.ComponentModel.Design;using System.Runtime.CompilerServices;namespace TextRPG{ // [구현한 것] // 1. 모든 필수 기능 // 2. 도전 기능 // 1)아이템 정보를 클래스/ 구조체로 활용해보기 (o) - Knight 클래스 생성후 행위로 메소드로 아이템이나 상태를 필드로 관리 // 2)아이템 정보를 배열로 관리 (o) // 3)아이템 ..
[C#] partial
·
Language/C#
스크립트 분할Text RPG를 만들다가 하나의 스크립트에 모든 기능을 다 넣었더니 헷갈리기 시작했다.어떻게 나누지? 하다가 C++처럼 선언부 구현부를 둬서 기능별로 나누고싶었기 때문에 C#에서는 없나 하고 찾아보기 시작했다. 내가 찾은 방법은 partial 클래스였다. class앞에 partial을 적어 분할이 가능하게 만들고내가 원하는 기능별로 스크립트를 나눌 수 있게 된다 간단한 예시를 만들었다.## 사용예시먼저 Knight.cs 파일using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace TextRPG{ public partial cla..
[C#] Array.Resize() 배열 크기 변경하는 방법
·
Language/C#
사건 개요진짜 초대형 사고 날 뻔했다..Text Rpg 만들고있던 중.. 배열로 만든 상점 구매 아이템을 인벤토리 아이템으로 집어 넣는 코드를 구현했다. private string[] equipment = { "무쇠갑옷", "스파르타의 창", "낡은 검" }; private string[] marketProduct = { "수련자 갑옷", "무쇠갑옷", "스파르타의 갑옷", "낡은 검", "청동 도끼", "스파르타의 창" }; //상점 상품equipment[equipment.Length] = marketProduct[num-1]; 당연히 되겠지 하고 컴파일 돌렸는데 ㅋㅋ Unhandled exception. System.IndexOutOfRangeException: Index was outside the..
[C#] 클래스 객체 그리고 프로퍼티
·
Language/C#
클래스?클래스는  객체를 만들 때 사용하는 설계도 같은 개념붕어빵 만들기에서 붕어빵 틀과 비슷함 객체?클래스의 인스턴스이다. 실체화된 형태라고 할 수 있다.객체는 클래스로부터 생성되며, 각 객체는 독립적인 상태를 가지고 있다. 즉, 객체마다 고유한 데이터를 가질 수 있다.붕어빵 만들기에서 붕어빵 역할 ## 사용법namespace ConsoleApp3{ internal class Program { public class Knight { private int hp; private int mp; public Knight(int hp, int mp) { this.hp = ..
[C#] 객체지향 프로그래밍
·
Language/C#
OOP (Object-Oriented Programming) 특징1. 캡슐화연관 데이터를 하나로 묶음정보를 은닉하고 외부로부터 안전함2. 상속 기존의 클래스를 확장하여 새로운 의미의 클래스 생성 부모-자식 관계로 구분 지을 수 있음 포괄하는 의미의 부모 클래스를 상속 받아 자식클래스에 사용 비슷하지만 다른 의미의 메서드를 재사용하여 재정의 할 수 있음 코드의 중복을 줄임3. 다형성하나의 인터페이스나 기능을 다양한 방식으로 구현오버로딩, 오버라이딩확장 가능한 코드 작성, 코드의 재사용성을 높임4. 추상화느슨한 코드 구조개념 단순화, 필요한 기능 집중 구현세부 구현 내용을 감추고 핵심 개념에 집중함, 코드의 이해와 유지보수를 용이하게 함5. 객체객체는 클래스로부터 생성된 실체로, 데이터와 해당 데이터를 조작..
[C#] TicTacToe 게임
·
Language/C#
namespace TicTac{ internal class Program { static void Main(string[] args) { char [,] arr = { { '0', '1', '2' } // 3 * 3 board 만들기 ,{'3','4','5' } ,{'6','7','8' } }; Console.WriteLine("O가 선공입니다."); Console.WriteLine("X가 후공입니다."); char a = 'O'; string input; ..