학원/경일게임아카데미

2. 두번째 수업

셩잇님 2022. 11. 27. 16:52
반응형

경일게임아카데미 프로그래밍반 28기 2일차 수업 (21. 04. 09)

 


연산자의 종류
1. 산술연산자
더하기 +, 빼기 -, 곱하기 *, 나누기 /, 나머지 %

 


 

Random 함수 출력
하지만, rand()는 프로그램이 생성될때 값이 정해지기 때문에 여러번 실행시켜도 동일한 값이 나온다.

#include <iostream>
using namesapce std;

void main()
{
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl;
	cout << "rand()의 값은? " << rand() << endl << endl;
}

 


#include <iostream>
using namesapce std;

void main()
{
	srand(time(NULL));
	// 이럴 때엔 위와 같이 선언해주면 rand의 값이 계속 바뀌게 된다.

	int num1 = rand();
	int num2 = rand();

	cout << "num1의 값은? " << num1 << endl;
	cout << "num2의 값은? " << num2 << endl << endl;
}

 


 

주사위를 만들어 보자.

#include <iostream>
using namesapce std;

void main()
{
	cout << "랜덤 주사위 범위 출력!" << endl;
    
	int dice = rand() % 6 + 1;
	// 0 ~ 5의 범위가 나온다.
    	// 그렇지만 +1 하면 값의 범위는 1~6으로 설정된다.
    
	cout << "앞으로 " << dice << " 칸 가세요!" << endl << endl;
}

 


 

간단한 실습을 해보자.

#include <iostream>
using namesapce std;

void main()
{
    // 디아블로 활 드랍시 활의 데미지 범위가 2~7으로 설정하시오.
    
    int bow = rand() % 6 + 2;
    // 0 ~ 5의 범위가 나오지만, +2를 하면 값의 범위는 2~7이 된다.
}

 


 

2. 관계연산자와 논리연산자

/* 관계 연산자
A > B		A는 B보다 크다
A >= B		A는 B보다 크거나 같다.
A < B		A는 B보다 작다
A <= B		A는 B보다 작거나 같다.
A == B		A는 B와 같다.
A != B		A와 B는 같지 않다.
*/

/* 논리 연산자
A && B		A and B		A도 참이고 B도 참일때
A || B		A or  B		A랑 B 둘중 하나가 참일 때
!A		not A		A가 거짓일 때
*/

// 이하 예시
#include <iostream>
using namesapce std;

void main()
{
	int A = 5, B = 5;
	bool Reslut;

	Reslut = A == B;
	cout << "A == B가 같니? " << Reslut << endl;

	int C = 5, D = 0;
	Reslut = A || B;
	cout << "A || B의 값은? " << Reslut << endl << endl;
}

 


 

조건문 : 해당 조건이 참일때만 실행이 된다.
if 문과, switch 문이 있다.
사망연산자 X, - 삼항연산자 O.

#include <iostream>
using namesapce std;

void main()
{
	// if문 (만약 ~ 하면)
    	// 예제 1
	int num = rand() % 10;
	cout << "나온 값 : " << num << endl;

	if (num < 2)
	{
		cout << "SSR이 떴다!" << endl << endl;
	}
	else if (num >= 2 && num < 5)
	{
		cout << "SR이 떴다!" << endl << endl;
	}
	else
	{
		cout << "또 속니 흑우야? 음머~" << endl << endl;
	}
    
	// 예제 2
    	int LoveNum;
	cout << "케인 아저씨가 좋아하는 숫자를 입력하세요 : ";
	cin >> LoveNum;
	cout << "결과는 ? " << LoveNum << endl;

	if (LoveNum == 5)
	{
		cout << "아이고난1 아이고난2 어떻게 안거야?" << endl << endl;
	}
	else
	{
		cout << "틀렸답니다 뽈롱~" << endl << endl;
	}
}

 


switch 문

#include <iostream>
using namesapce std;

void main()
{
	int Select_Champion;

	cout << "챔프를 고르시오" << endl;
	cout << "1. 아칼리 2. 제드 3. 베인 4. 람머스" << endl;
	cin >> Select_Champion;

	// switch 문은 정수만 입력 가능 하다.
	// 정수 외 문자열, 실수 등은 입력이 되지 않는다.
	switch (Select_Champion)
	{
		case 1:
			cout << "아칼리를 골랐군요" << endl;
		break;

		case 2:		
			cout << "제드를 골랐군요" << endl;
		break;

		case 3:
			cout << "베인을 골랐군요" << endl;
		break;

		case 4:
			cout << "람머스를 골랐군요" << endl;
		break;

		default:
			cout << "지정된 범위 외 숫자를 입력했습니다. " << endl;
		break;
	}
    
	cout << endl;
}

 


 

switch문을 이용한 가위바위보 게임

#include <iostream>
using namesapce std;

void main()
{
	/*
	컴퓨터는 랜덤하게 0 ~ 2까지의 숫자를 받는다.
	0 바위, 1 가위, 2 보자기 라고 칩시다.
	나도 어떤 수를 입력(0~2) 받아서 승패를 출력해보자.
	*/
    
	// 변수 선언 & 사용자 입력
	int Computer_Random_Vlaue = rand() % 3;
	int User_Ball;
	cout << "어떤 수를 입력하시겠습니까?" << endl;
	cout << "1. 바위 2. 가위 3. 보" << endl;
	cin >> User_Ball;

	// switch 문을 이용한 결과 출력 :)
	switch (Computer_Random_Vlaue)
	{
	case 0:
		cout << "컴퓨터는 바위를 냈습니다" << endl;
		if (User_Ball == 1)
			cout << "비겼습니다." << endl;
		else if (User_Ball == 2)
			cout << "당신이 졌습니다" << endl;
		else
			cout << "당신이 이겼습니다" << endl;
		break;
        
	case 1:
		cout << "컴퓨터는 가위를 냈습니다" << endl;
		if (User_Ball == 1)
			cout << "당신이 이겼습니다." << endl;
		else if (User_Ball == 2)
			cout << "비겼습니다" << endl;
		else
			cout << "당신이 졌습니다" << endl;
		break;
        
	case 2:
		cout << "컴퓨터는 보를 냈습니다" << endl;
		if (User_Ball == 1)
			cout << "당신이 졌습니다." << endl;
		else if (User_Ball == 2)
			cout << "당신이 이겼습니다" << endl;
		else
			cout << "비겼습니다." << endl;
		break;
        
	default:
		cout << "범위 외 숫자를 입력했습니다." << endl;
	}
}

 


 

반복문

#include <iostream>
using namesapce std;

void main()
{
	for (int i = 0; i < 5; i++)
	{
		cout << "콩나물 팍팍 무쳤니? " << i + 1 << endl;
	}
	cout << endl;

	// 구구단 (2단 출력)
	int GUGU = 2;
	
	for (int i = 1; i <= 9; i++)
	{
		cout << GUGU << " X " << i << " = " << GUGU * i << endl;
	}
	cout << endl;
	
	// 구구단 (2단 꺼꾸로 출력)
	for (int i = 9; i > 0; i--)
	{
		cout << GUGU << " X " << i << " = " << GUGU * i << endl;
	}
	cout << endl;
	
	// 구구단 (입력 출력)
	cout << "몇 단을 순서대로 출력할까요?  " << endl;
	int User_Dan = 0;
	cin >> User_Dan;
	
	for (int i = 1; i < 10; i++)
	{
		cout << User_Dan << " X " << i << " = " << User_Dan * i << endl;
	}
	cout << endl;
	
	// 구구단 (입력 꺼꾸로 출력)
	cout << "몇 단을 꺼꾸로 출력할까요? " << endl;
	int User_Dan2 = 0;
	cin >> User_Dan2;
	
	for (int i = 9; i >= 1; i--)
	{
		cout << User_Dan2 << " X " << i << " = " << User_Dan2 * i << endl;
	}
	cout << endl;
	
	// 구구단 (1~9단, 이중포문)
	cout << "1단부터 9단까지의 구구단 출력" << endl;
	for (int i = 2; i < 10; i++)
	{
		for (int j = 1; j < 10; j++)
		{
			cout << i << " X " << j << " = " << i * j << endl;
		}
		cout << endl;
	}
	cout << endl;
	
	// 구구단 (9~1단, 이중포문, 역순)
	cout << "9단부터 1단까지의 구구단 출력" << endl;
	for (int i = 9; i > 0; i--)
	{
		for (int j = 9; j > 1; j--)
		{
			cout << i << " X " << j << " = " << i * j << endl;
		}
		cout << endl;
	}
	
	// 별찍기
	// *
	// **
	// ***
	// ****
	// *****
	cout << "별찍기!" << endl;
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < i + 1; j++)
		{
			cout << "*";
		}
		cout << endl;
	}
	cout << endl;
	
	// *****
	// ****
	// ***
	// **
	// *
	for (int i = 5; i > 0; i--)
	{
		for (int j = 0; j < i; j++)
	{
			cout << "*";
		}
		cout << endl;
	}
	cout << endl;
	
	//     *
	//    **
	//   ***
	//  ****
	// *****
	for (int i = 0; i < 5; i++)
	{
		for (int j = 4; j > i; j--)
		{
			cout << " ";
		}
	
		for (int k = 0; k < i + 1; k++)
		{
			cout << "*";
		}
		cout << endl;
	}
	cout << endl;
	
	// *****
	//  ****
	//   ***
	//    **
	//     *
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < i; j++)
		{
			cout << " ";
		}
	
		for (int k = 5; k > i; k--)
		{
			cout << "*";
		}
		cout << endl;
	}
	
	//    *
	//   ***
	//  *****
	// *******
	//*********
	for (int i = 0; i < 5; i++)
	{
		for (int j = i; j < 4; j++)
		{
			cout << " ";
		}
		for (int k = 0; k < i * 2 + 1; k++)
		{
			cout << "*";
		}
		cout << endl;
	}
	cout << endl;
	
	// *********
	//  *******
	//   *****
	//    ***
	//     *
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < i; j++)
		{
			cout << " ";
		}
		for (int k = i * 2; k < 4 * 2 + 1; k++)
		{
			cout << "*";
		}
		cout << endl;
	}
}

 


 

제어문
1. return - 값을 반환하고 종료한다
2. break - 연산을 중단하고 종료한다
3. continue - 연산을 건너 뛴다.

#include <iostream>
using namesapce std;

void main()
{
	cout << "Continue, break 연습!" << endl;
	for (int i = 0; i < 10; i++)
	{
		if (i == 3) continue;
		if (i == 5) break;
		cout << i;
	}
	cout << endl << endl;
	
	int me;
	int count = 9;
	
	while (true)
	{
		cout << "0. 바위, 1. 가위, 2. 보 골라라. " << endl;
		cin >> me;
	
		if (me < 0 || me > 2)
		{
			cout << "재 입력하세요 " << endl;
			continue;
		}
	
		cout << count << " 번의 기회가 남았습니다" << endl;
		count--;
	
		if (count < 0)
		{
			break;
		}
	}
}

 


 

스무고개

#include <iostream>
using namesapce std;

void main()
{
	cout << "스무고개 연습!" << endl;
	srand(time(NULL));
	int Computer_Random_Value = rand() % 1000;
	int Conut = 10;
	int User_Input_Value = 0;
	
	while (true)
	{
		cout << "기회는 " << Conut << "번 있습니다.";
		cout << "숫자를 입력하세요. " << endl;
		cin >> User_Input_Value;
	
		if (User_Input_Value < Computer_Random_Value)
		{
			cout << "컴퓨터의 숫자가 큽니다." << endl;
		}
		else if (User_Input_Value > Computer_Random_Value)
		{
			cout << "사용자의 숫자가 큽니다" << endl;
		}
		else
		{
			cout << "정답!" << endl;
			break;
		}
	
		Conut--;
	
		if (Conut == 0)
		{
			cout << "게임 종료" << endl;
			cout << "답은 : " << Computer_Random_Value << "입니다. ";
			break;
		}
	}
}
반응형

'학원 > 경일게임아카데미' 카테고리의 다른 글

5. 네번째 수업 과제 [1인 빙고게임 제작]  (0) 2022.11.30
4. 네번째 수업  (0) 2022.11.29
3. 세번째 수업  (0) 2022.11.28
1. 첫번째 수업  (0) 2022.11.26
0. 소개  (0) 2022.11.26