학원/경일게임아카데미

3. 세번째 수업

셩잇님 2022. 11. 28. 16:53
반응형

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

 


 

배열이란?
같은 변수, 자료형의 연속적인 나열

#include <iostream>
using namesapce std;

void main()
{
	int num1[5];	// sizeof(int) == 4
	num1[0] = 1;	// 1000 + 4 * 0
	num1[1] = 2;	// 1000 + 4 * 1
	num1[2] = 3;	// 1000 + 4 * 2
	num1[3] = 4;	// 1000 + 4 * 3
	num1[4] = 5;	// 1000 + 4 * 4

	int num2[30];
    
	for (int i = 0; i < 30; i++)
	{
		num2[i] = i + 1;
	}
	
	for (int i = 0; i < 30; i++)
	{
		cout << num2[i] << endl;
	}
}

 


 

2차원 배열 선언은 다음과 같다

#include <iostream>
using namesapce std;

void main()
{
	int number1[3][3];
	number1[0][0];
	number1[0][1];
	number1[0][2];
	number1[1][0];
	number1[1][1];
	number1[1][2];
	number1[2][0];
	number1[2][1];
	number1[2][2];
}

 


 

숫자야구 구현를 구현해보자.

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	// 변수 선언부
	srand(time(NULL));
	int Computer_Ball[3], User_Ball[3];
	int Count = 1, Strike = 0, Ball = 0;

	// 컴퓨터 범위 설정 (중복 제거)
	for (int i = 0; i < 3; i++)
	{
		Computer_Ball[i] = rand() % 9 + 1;
		for (int j = 0; j < i; j++)
		{
			if (Computer_Ball[i] == Computer_Ball[j] && i != j)
			{
				i--;
			}
		}
	}

	cout << "컴퓨터의 숫자는 : ";
	for (int i = 0; i < 3; i++)
	{
		cout << Computer_Ball[i] << ' ';
	}
	cout << "입니다. " << endl;

	while (true)
	{
		// 카운트 출력
		cout << Count << "번째 기회입니다 : ";
        
		// 사용자 숫자 입력
		for (int i = 0; i < 3; i++)
		{
			cin >> User_Ball[i];
		}

		for (int i = 0; i < 3; i++)
		{
			cout << User_Ball[i] << ' ';
		}

		// S, B 체크
		for (int i = 0; i < 3; i++)
		{
			for (int j = 0; j < 3; j++)
			{
				if (Computer_Ball[i] == User_Ball[j])
				{
					if (i == j)
					{
						Strike++;
					}
					else
					{
						Ball++;
					}
				}
			}
		}

		// 결과 출력
		if (Strike || Ball)
		{
			cout << "스트라이크는 : " << Strike << " 볼은 : " << Ball << endl;
		}
		else
		{
			cout << "일치하는 것이 없습니다." << endl;
		}

		// 승리조건
		if (Strike == 3)
		{
			cout << "승리 !" << endl;
			break;
		}
        
		// 패배 조건
		if (Count == 10)
		{
			cout << "아웃 !" << endl;
			break;
		}
        
		Count++, Strike = 0, Ball = 0;
	}
    
	return 0;
}

 


 

두 개의 변수 내의 값을 Swap 하기 위해서는 아래와 같은 방법으로 진행해야 한다.

#include <iostream>
using namesapce std;

void main()
{
	int a = 3;
	int b = 7;
	int c;
	
	c = a;
	a = b;
	b = c;
}

 


 

카드와 같이 값을 섞는 셔플 알고리즘은 아래와 같은 방법으로 진행된다.

#include <iostream>
using namesapce std;

void main()
{
	int number2[10];
	for (int i = 0; i < 10; i++)
	{
		number2[i] = i + 1;
	}

	// 셔플
	int dest, sour, temp;
	for (int i = 0; i < 100; i++)
	{
		dest = rand() % 10; 
		sour = rand() % 10; 

		temp = number2[dest];
		number2[dest] = number2[sour];
		number2[sour] = temp;
	}

	for (int i = 0; i < 10; i++)
	{
		cout << number2[i] << endl;
	}
}

 


 

구조체 == 객체라고 한다.
서로 다른 변수의 집합체
구조체 = struct

#include <iostream>
using namesapce std;

struct tagUnit
{	
    int hp, mp;
    float speed, criPer;
    bool isDead;
};

void main()
{
	tagUnit corona;

	corona.hp = 400000;
	corona.mp = 0;
	corona.criPer = 50.0f;
	corona.speed = 32000.f;
	corona.isDead = true;

	tagUnit rabbit[3];

	for (int i = 0; i < 3; i++)
	{		
		rabbit[i].hp = rand() % 50 + 20;
	}
}
반응형

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

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