지금까지 까만 화면에 하얀 글자만 보느라 지루하셨죠?
이제부터는 간단한 키보드 입력을 받아서 가지고 놀수 있는 프로그램을 만들어 볼거에요
바로 가위 바위 보!
먼저 프로그램을 볼까요?
플레이어는 (0)가위 (1)바위 (2)보 중에 하나를 내고 컴퓨터도 임의로 하나를 내어서 승패를 결정하는 게임입니다. 입력시 -1 을 입력하면 게임을 종료합니다.
게임이 종료되면 총 게임횟수와 이긴횟수 진횟수 비긴횟수 및 승률을 출력해 줍니다.
1.키보드 입력 받기
출력은 Console.WriteLine(); 이었는데 직관적으로 입력은 Console.ReadLine 이 아닐까요?
네 맞습니다. 이런 클래스와 이런 매서드 다 사람들이 만들어서 직관적으로 만듭니다!
Console.ReadLine()은 키보드의 입력은 모두 문자열로 인식합니다. 만약 문자를 쓴다면 그냥 써도 되지만
숫자를 쓴다면? 내 앞에배웠던 캐스팅으로 바꾸어 주어야 합니다. 자 한번 해볼까요?
int a; 숫자로 변환할 변수
String msg; 입력 받을 변수
a= 0; 초기화
msg = " "; 초기화
msg = Console.ReadLine(); 값 입력 받기
a = int.Parse(msg); String 값을 int 값으로 전환하기(문자를 숫자로)
Console.Writeline(a); 입력받은 숫자 a 출력하기
2.한 프로젝트에서 두개 이상의 클래스를 사용하기
C#으로 프로그램을 작성하다보면 한 파일에 모든 클래스와 매서드를 입력하게 된다면 나중에 알아보기도 힘들고 뭐가 뭔지도 모르게 됩니다.
그래서 한 클래스당 하나의 cs파일(C# 파일)을 만들어서 사용합니다. 두 파일이 하나의 프로젝트 안에 있으면 서로의 클래스를 선언하고 사용할 수 있습니다.
이제 새 cs파일을 추가해 보겠습니다
비주얼 스튜디오에서 Solution Explorer에서 프로젝트를 오른쪽 클릭 ADD->New Item 을 클릭해주세요!
맨위에 C#초록색 Class 파일이 보이시죠? 클릭하고 원하는 클래스명을 적어줍니다.저는 플레이어라고 했어요 하고 Add를 누르면?
네 생성되었습니다. 이제 새로운 클래스는 여기서 적어주시면 됩니다!
3.while()문을 통해서 계속하기
반복을 할때 우리가 전에 배웠던 for문이 있습니다 for문은 반복할 횟수가 정해져 있을때 유용하지만 특정조건을 만족할때는 무한정 할때는 까다롭습니다.
이럴때 쓰는 반복문이 While문 입니다. 무한이 반복하다가 일정 조건이 되면 나오는 While문 을 사용해 볼까요?
While(조건)
{
//조건이 맞으면 계속 실행
}
While(true)
{
if(종료 조건)
{
break;
}
}
4.Switch case
이럴때는 이렇게 저럴때는 저렇게 할때 우리는 if문과 else를 배웠습니다. 하지만 조건이 많으면?
if(0==a)
{
}
else if(1==a)
{
}
else if(3==a)
{
}
else
{
}...
너무 많게 되고 가독성이 좀 떨어지게 되죠? 이럴 때 쓸수 있는 것이 Switch- case 문입니다
저 코드와 똑같은 기능을 하는것을 switch-case문으로 써보겠습니다.
switch(a) //a가
{
case 0: //0일때 콤마 꼭 붙여주어야 합니다
//하는일
break; //일만 하고 나오기
case 1: //1일때 콤마 꼭 붙여주어야 합니다
//하는일
break; //일만 하고 나오기
....
default: //콤마 꼭 붙여주어야 합니다
위 조건중 아무것도 만족 하지 않을때 else만 쓰는 것과 같습니다.
break;
}
5.논리 연산자
어떤 일을 두개 일어날때는 어떻게 쓰면 좋을까요? 아니면 둘중 하나만 일때는? 이럴때 쓰는 기호가 있습니다. 예를 들어 볼게요
and 연산자
a가 1보다 크고 8보다 작을때
if(a>1 && a<8)
{
그때만 일어나는 일
}
OR 연산자
a와 b와 c중 하나라도 1과 같을때
if(a == 1 || b== || c== 1)
{
그때만 일어나는 일
}
그럼 반대로 a가 1이 아닐때? 는 어떻게 표현 할까요? 이럴대 Not 연산자를 사용할수 있습니다.
Not 연산자는 !을 이용해 if(a=! 1) 이렇게 표현 할 수 있습니다. 또 만약 변수가 Boolean형 이라면
Boolean a;
a = true;
c = !a //이렇게 앞에 느낌표를 붙임으로 반대를 표현할수 있습니다. 그래서 이 값은 false입니다.
Tip Tip
변수 이름 짓기
변수이름은 매우매우매우 중요합니다. 코드와 변수를 읽을수 있고 그만큼 유지 보수가 쉬워집니다.
작은 프로그램은 덜해도 규모가 커지면 며칠전에 짠 코드도 기억이 안납니다. 더해서 만약 다른사람이 짠코드를 보게 된다면 ㅜㅜ
하지만 변수를 가독성 잇게 써 놓는다면 이 변수가 무슨역할을 하는지 어떻게 되는지 볼수 있습니다. 꼭 변수 를 가독성 있게 이름을 지으세요!
과거에는 헝가리안 표기법이라는 이름을 많이 사용했지만
이제 MS에서 공식적으로 권장하지 않네요 MS에서 권장하는 변수명명법!
https://msdn.microsoft.com/ko-kr/library/ms229002(v=vs.100).aspx
MSDN을 링크합니다.
요약을 해보자면 파스칼식(단어의 시작은 대문자로 BlockColor)과 첫단어만 소문자인 카멜식을(blockColor) 주로 사용합니다.
저도 헝가리안을 주로 사용했지만 이렇게 혼자 강좌해보면서 알게 되었네요 저도 MSDN에서 권장하는 대로 사용해야 겠습니다.
가위바위보 승패 로직
가위를 0 바위를 1 보를 2 라고 하고 com은 컴퓨터 player는 플레이어라고 해보자 ab 값에 따라 승자를 경정하는 방법은?
일단 같으면 비기기로 하고 (0,1)(0,2)(1,0)(1,2)(2,0)(2,1) 이렇게 6가지만 조사하면 됩니다.
if(com==player)
{
비기기
}
else if( 0 == a && 1== b)
{
b가 승자
}
else if(0==a&& 2==b)
{
a가 승자
}
...
이런식으로 하면 됩니다
'Visual C# > Universal App' 카테고리의 다른 글
10. C# 강좌 숫자 야구(1) 알아야 할 것들 Call by refence,Call by Value (0) | 2015.10.20 |
---|---|
9. C# 강좌 가위 바위 보 (2) (2) | 2015.10.20 |
7. C# 강좌 로또번호 만들기!(2) (0) | 2015.10.20 |
6. C# 강좌 로또번호 만들기!(1) 알아야 할 것들 (2) | 2015.10.20 |
5. C# 강좌 성적 처리 프로그램 (2) (2) | 2015.10.19 |