SRPG == simulation +  role-playing game 합성어

여기서 simulation은 전략 시뮬레이션을 뜻한다.

 

- 격자로 된 타일 위에서 캐릭터들을 전략적으로 움직여 승리하는 게임들이 SRPG에 속한다.

- 캐릭터의 움직임에 관여

- 전투에는 플레이어가 관여하지 못하는 것이 주요 특징

- 턴제로 진행

- 전술 시스템 + RPG 캐릭터 육성 시스템

 

장점

- 기물의 배치를 다채롭게 할수 있다.

- 리소스, 핑, 지연시간문제가 경감된다.

단점

- 변수창출이 안된다. 실력에 의존한 게임 그래서 확률적 요소를 변수로 둔다

낮은 난이도 일수록 플레이어에게 유리한 확률 보정을 준다.

 

대표적으로 체스나 장기 같은 보드게임이 있고 

국내에서는 파랜드 택틱스, 영걸전 시리즈, 랑그릿사 시리즈가 있다.

 

요약

SRPG는 성장 & 전략을 기반으로 타일을 사용하여 턴제 자동 전투 확률 게임

(요즘에는 턴제 대신 스피드 턴을 사용한다)

'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

c++ map 과 hash_map 의 차이  (0) 2022.03.01
용어 정리  (0) 2022.02.17
if(!) if문 안에 !의 의미  (0) 2022.02.14
C++ 구조체와 클래스 차이  (0) 2022.02.04
문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04

map 은 정렬된 상태로 자료를 저장할 때 사용하고

hash_map 은 정렬이 필요하지않고 많은 자료를 저장하고 빠른 검색을 원할 때 사용한다.

 

map

- 자료를 정렬하여 저장

- 데이터를 순회 할때 넣은 순서가 아닌 정렬된 순서로 순회

- 이진탐색트리 탐색 속도 O(log n) 보장

hash_map

- 자료를 정렬하지 않고 저장

- 배열로 접근 탐색 속도 O(1) 이상

- 많은 자료를 저장하고 있어도 검색이 빠르다.

- 적은 자료를 저장하고 있을 때는 메모리 낭비와 검색 시 오버헤드가 발생한다.

 

컨테이너 추가 삭제

list, vector, deque > hash_map 보다 빠르다

적은 요소를 저장하고 검색

list, vector > hash_map 훨씬 빠르다

 

hash_map은 표준 STL은 아니다.

- STL의 공식 컨테이너에 속하지 않는다.

- 해쉬키가 충돌이 나게 되면 계속 충돌이 발생하여 탐색 성능의 안정성을 보장 못한다.

- c++에서 지원을 하긴 한다.

 

 

 

'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

SRPG 란?  (0) 2022.03.03
용어 정리  (0) 2022.02.17
if(!) if문 안에 !의 의미  (0) 2022.02.14
C++ 구조체와 클래스 차이  (0) 2022.02.04
문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04

프로그램 : 문제를 풀기 위한 명령들의 조직적인 집합
프로그래머(Programmer)는 프로그램을 만드는 사람
이진수는 컴퓨터가 이해하는 유일한 언어


■ 저급 언어(Low Level) : 기계의 언어에 가까우며 
사용하기는 어렵지만 성능은 좋다. 대표적으로 어셈블리가 있다.
■ 고급 언어(High Level) : 인간의 언어에 가까우며 배우기 쉽지만 
대신 성능은 떨어진다. 베이직 언어가 대표적인 고급 언어이다.


언어의 문법에 맞게 명령들을 기술한 파일을 원시 파일(Source File)

컴파일이란 소스에 작성된 명령들을 컴퓨터 언어인 기계어로 번역하는 작업
컴파일을 하는 프로그램을 컴파일러(Compiler)
컴파일러는 소스 파일을 목적 파일(Object File)로 바꾸는 프로그램
목적 파일은 소스의 명령들을 번역한 기계어 코드를 가진 파일

 

소스 파일은 컴파일러에 의해 컴파일되어 목적 파일이 되며 
목적 파일은 링커에 의해 링크되어 최종적으로 실행 가능한 실행 파일이 된다


이렇게 컴파일과 링크를 통해 실행 파일을 만드는 과정을 빌드(Build)라고 한다. 

 

통합 개발 환경(IDE, Integrated Development Environment)

헤더 파일에는 C 컴파일러가 제공하는 표준 함수들에 대한 선언이 작성
키워드(Keyword)
C언어 자체가 의미를 미리 정해 놓은 단어들이며 
예약어(Reserved word)라고도 한다

 

명칭(Identifier)
명칭은 사용자가 직접 만들어서 사용하는 것이다. 
변수나 함수같은 것들은 다른 것들과 구분(Identify)되어야 하므로 
자기만의 고유한 이름을 가져야 한다
상수(Constant)
변수의 반대되는 개념이며 고정된 값을 가지는 식이다
연산자(Operator)
계산을 지시하는 기호들을 연산자라고 한다. 

'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

SRPG 란?  (0) 2022.03.03
c++ map 과 hash_map 의 차이  (0) 2022.03.01
if(!) if문 안에 !의 의미  (0) 2022.02.14
C++ 구조체와 클래스 차이  (0) 2022.02.04
문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04

if(!)는

if문 안의 내용을 부정했을 때 (반대로 했을 때) 참 값이면 실행된다

bool 변수 TF 가 false 일때

if(!TF) 실행

bool 변수 TF 가 true 일때

if(TF) 실행

 

if(num ==4)  -> num이 4 일때 출력

if(!(num==4)) -> num이 4가 아닐 때 출력 

if(!(num==5)) -> num이 5가 아닐 때 출력

고로 

if(!)는

if문 안의 내용을 부정했을 때 (반대로 했을 때) 참 값이면 실행된다

*true == 1

 false == 0

if()문은 내부가 true면 실행한다

if(!)문은 내부가 false면 실행한다

#include <iostream>
using namespace std;

int main()
{
	bool TF = false;


	if (TF)
		cout << "TF->false 일때 if(TF)" << endl;
	if (!TF)
		cout << "TF->false 일때 if(!TF)" << endl;

	TF = true;

	if (TF)
		cout << "TF->true 일때 if(TF)" << endl;
	
	if (!TF)
		cout << "TF->true 일때 if(TF)" << endl;

	int num = 4;

	if (num == 4)
		cout << "num 이 4면 출력" << endl;

	if (!(num == 4))
		cout << "num 이 4가 아니면 출력" << endl;

	if (!(num == 5))
		cout << "num 이 5가 아니면 출력" << endl;

}

'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

c++ map 과 hash_map 의 차이  (0) 2022.03.01
용어 정리  (0) 2022.02.17
C++ 구조체와 클래스 차이  (0) 2022.02.04
문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04
가변인자 함수  (0) 2018.01.03

C++ 에서 구조체와 클래스의 차이

 

접근 지시자의 차이

구조체 (struct) 의 경우

기본적인 접근 지정자가 public 이고

 

클래스 (class) 의 경우

기본적인 접근 지정자가 private 이다.

 

그 이외의 기능들은 c++에서는 동일하게 사용가능하다.

(함수선언 정의, 생성자 소멸자, 상속 등등)

 

C# 에서 구조체와 클래스의 차이

 

타입의 차이

구조체(struct)의 경우

스택 메모리에 생성 되고

 

클래스(class)의 경우

힙 메모리에 생성된다.

 

구조체는 스택에 할당되어 가비지컬렉션이 발생하지않고

클래스는 힙에 할당되어 가비지지컬렉션이 발생하므로 속도면에서 구조체가 유리하며

크기가 클 경우 클래스는 주소 값만 저장하는 반면 

구조체는 스택에 모두 저장하기 때문에 스택 오버플로우가 발생할 수 있다.

'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

용어 정리  (0) 2022.02.17
if(!) if문 안에 !의 의미  (0) 2022.02.14
문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04
가변인자 함수  (0) 2018.01.03
동적 메모리 할당  (0) 2016.02.18

_T 매크로


사용 방법

_T("문자열"); 

 

의미

_UNICODE가 define 되어 있으면 L"문자열" 리턴

_UNICODE가 define 되어 있지 않으면 "문자열" 리턴


참고

- 문자열 앞에 L 이 있으면 유니코드 형태로 인식

- _T 대신 _TEXT 사용 가능



C++ 리터럴 (Literal)


의미

- 특정한 메모리공간에 이름 없이 임시적으로 저장되어있는 값을 의미

- 상수

예시

#include<iostream>

using namespace std;

int main()

{

char chresult       = 0;

int   intresult       = 0;

char arrresult[12] = "Hello World";


chresult      "H" ;  

intresult      1 + 2 ;


return 0;

}

예시에서 리터럴 상수

문자 리터럴 상수    : H

정수 리터럴 상수    : 1, 2

문자열 리터럴 상수 : Hello World




'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

if(!) if문 안에 !의 의미  (0) 2022.02.14
C++ 구조체와 클래스 차이  (0) 2022.02.04
가변인자 함수  (0) 2018.01.03
동적 메모리 할당  (0) 2016.02.18
포인터 (pointer)  (0) 2015.07.25

1. 가변 인자 함수

- 함수에 들어가는 인자의 개수가 변하는 것

- 함수를 호출 할때 인수의 개수나 타입의 변경을 할 수 있다.


2. 자료형 함수이름 (자료형, 고정매개변수, ...)

- 가변 인자를 정의할 때는 고정 매개변수가 한 개 이상 필요

- "..." 생략 표시를 통하여 가변인자 표시


bool WriteLog(LPTSTR data, ...)

{


}



3. va_list, va_start(), va_arg(), va_end()


va_list 

- char* 로 정의 되어 있으며 이 포인터가 각 인자의 시작주소를 가르킨다.


va_start() 

- va_list로 만들어진 포인터에게 가변인자의 첫 번째 주소를 가르켜주는 매크로

- va_start(ap, v);  ap : va_list로 만든 포인터, v : 마지막 고정인수 


va_arg()

- va_list의 포인터를 다음가변인자로 이동시켜주는 매크로

- va_arg(ap, t);  ap : va_list로 만든 포인터, t : 타입 형태 (char, int, long ...)


va_end() 

- 가변인자를 NULL 포인터로 만드는 매크로, 가변인자 종료역할 

- va_end(ap);  ap : va_list로 만든 포인터


4. 가변인자함수 출력 함수 vsprintf()

vsprintf() : Dest 변수에 형식에 따라 만들어진 문자열 저장 

int vsprintf (char* Dest, const char* Format, va_list Args)

- Dest : Format에 따라 만들어진 내용이 담길 버퍼

- Format : 고정인수

- Args :  va_list로 만든 포인터, 가변 파라미터

- 리턴 값 : 문자열의 길이


5. 예제


#include <stdio.h>

#include <stdarg.h>

#include <string.h>


void VariableFun(int arg, ...)

{



//가변인자 목록 포인터

va_list ap;

//가변인자 목록 포인터에 가변인자 첫 번째 주소 가르킴

va_start(ap, arg);

//가변인자 만큼 반복

for (int i = 0; i < arg; i++)

{

//int 크기만큼 포인터를 이동

int result = va_arg(ap, int);

printf("%d ", result);

}

//가변인자 목록 포인터에 NULL 초기화

va_end(ap);


printf("\n");

}



int main()

{

VariableFun(1, 2);

VariableFun(2, 2, 0);

VariableFun(3, 2, 0, 8);

VariableFun(4, 2, 0, 8, 0);

VariableFun(5, 2, 0, 8, 0, 2);

}


결과











'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

C++ 구조체와 클래스 차이  (0) 2022.02.04
문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04
동적 메모리 할당  (0) 2016.02.18
포인터 (pointer)  (0) 2015.07.25
배열(array)  (0) 2015.07.25

동적 메모리 할당


malloc 함수

- 동적으로 메모리를 할당하는 함수 (힙 영역에 메모리를 할당)

#include <stdlib.h>

void* malloc(size_t size) //malloc 함수의 원형

- 할당한 메모리의 주소(첫 번째 바이트의 주소)를 리턴, 실패시 NULL 리턴

void* 인 이유

- malloc은 메모리 할당 함수이기 때문에 

  개발자가 어떠한 데이터 형(float, int, double 등)을 저장할지 예측 불가

  따라사 알맞은 용도로 변환하여 사용 할 수 있도록 void 사용

ex)

int *i = (int *) malloc (sizeof(int));

- malloc(sizeof(int)) == 힙 영역에 4바이트 할당 받는다.

- (int *) == void * 가 int * 형으로 변환

- int * 가 *i 에 대입 


free 함수

- 힙 영역에 할당된 메모리를 해제하는 함수

#include<stdlib.h>

void* free(void* ptr) //free 함수의 원형


calloc 함수

#include<stdlib.h>

void* calloc(size_t  elt_count, size_t  elt_size) //calloc 함수 원형

- calloc 함수는 elt_size 크기의 변수를 elt_count개 만큼 저장 할 수 있는 메모리 공간을 할당 하라는 의미를 갖는다.


malloc 함수와 calloc함수의 차이점

malloc은 할당된 공간의 값을 바꾸지 않는다.

calloc은 할당된 공간의 값을 모두 0으로 초기화 한다.


realloc함수

-이미 할당한 공간의 크기를 바꿀 때 realloc 함수를 사용한다.

#include<stdlib.h>

void* realloc(void* memblock, size_t size); //realloc 함수의 원형

-realloc은 이미 할당한 포인터 변수를 memblock에 넣고 바꾸고 싶은 공간의 크기를 size에 입력하여 사용한다.


'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

문자열 _T 매크로, C++ 리터럴이란  (0) 2018.01.04
가변인자 함수  (0) 2018.01.03
포인터 (pointer)  (0) 2015.07.25
배열(array)  (0) 2015.07.25
메모리구조(스택, 힙 , 데이터 영역)  (0) 2015.07.21

포인터(pointer) *

-메모리 주소를 가지고 있는 변수


주소 연산자(address-of operator)  &

-변수의 주소를 계산하는 연산자


포인터 선언

int       *p; //정수를 가르키는 포인터

char   *pc; // 문자를 가르키는 포인터

float    *pf; // 실수(float형)를 가르키는 포인터

double *pd; // 실수(double형)를 가르키는 포인터


포인터와 변수의 연결

int  i = 10;  // 정수형 변수 i 선언

int *p = &i; // 변수 i의 주소가 포인터 p로 대입


간접 참조 연산자 *

int i =10;          //정수형 변수 i 선언

int *p=&i;        //변수 i의 주소가 포인터 p로 대입

printf("%d", *p); //*p는 p가 가르키는 위치에 있는 데이터를 가져오라는 의미


주의

포인터의 타입과 변수의 타입은 일치하여야한다.

초기화하지 않고 사용하기 (NULL 포인터 사용)

'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

가변인자 함수  (0) 2018.01.03
동적 메모리 할당  (0) 2016.02.18
배열(array)  (0) 2015.07.25
메모리구조(스택, 힙 , 데이터 영역)  (0) 2015.07.21
함수  (0) 2015.07.16

배열(array)

목적 : 많은 값을 한꺼번에 저장 할 수 있는 저장소가 필요

정의 : 동일한 타입의 데이터가 여러개 저장 되어 있는 데이터 저장 장소

- 대용량의 자료를 저장하는 기복적인 구조

- 대량의 데이터를 효율적이고 간편하게 처리

arr [index]  = 100 ;


첨자(subscript), 인덱스(index)

- 배열의 원소 번호


배열의 원소, 요소(array element)

- 배열에 저장된 데이터들


선언 방법

자료형 배열이름[배열 크기];

 int      arr     [    10    ];

사용

arr[i] = 100;         // i 는 정수 변수

arr[i+2] = 100;       // 수식이 인덱스

arr[index[3]] = 100; // index[]는 정수 배열


초기화

arr[5] = {10,20,30,40,50};

arr[5] = {10,20,30};     //앞에 있는 원소들만 초기화 나머지 0으로 초기화

arr[ ] = {10,20,30,40,50};//컴파일러가 자동으로 초기 값들의 개수만큼 배열의 크기를 잡는다.

배열과 함수

int get_averrage(int score[], int n); //  배열, 베열의 크기를 받는 매개변수


'프로그래밍 공부 > 궁금한 정보들' 카테고리의 다른 글

동적 메모리 할당  (0) 2016.02.18
포인터 (pointer)  (0) 2015.07.25
메모리구조(스택, 힙 , 데이터 영역)  (0) 2015.07.21
함수  (0) 2015.07.16
전처리 지시어(Preprocessing directive)  (0) 2015.07.14

+ Recent posts