62
게임 프로그래밍 입문 기연아

게임프로그래밍입문 3주차

Embed Size (px)

Citation preview

Page 1: 게임프로그래밍입문 3주차

게임프로그래밍입문

기연아

Page 2: 게임프로그래밍입문 3주차

printf()의 활용

게임프로그래밍

Page 3: 게임프로그래밍입문 3주차

printf()의 활용

printf()는 화면(모니터)에 무언가를 보여주는 역할을 함

printf(“hello world!”); hello world!

printf(“100”);printf(“%d”, 100);

10090

숫자?문자?숫자?문자?

Page 4: 게임프로그래밍입문 3주차

printf()의 기본 활용

결과 확인해보기

#include <stdio.h>

int main(){

printf(“%d %d \n”, 100, 10);printf(“%d \n”, 100, 10);printf(“%d %d \n”, 100);printf(“%d - %d = %d \n”, 100, 10, 90);

}

Page 5: 게임프로그래밍입문 3주차

printf()의 활용

궁금증 하나! 에서, 괄호 안의 %d는 그대로

나오지 않는 것일까? 프로그램에 미리 정의된 서식이기 때문이다!

printf(“%d - %d = %d \n”, 100, 10, 90)

서식 예시 설명

%d 10, 100 정수

%f or %lf 0.5, 3.14 실수(소수점이 포함된 수)

%c ‘a’, ‘b’, ‘A’, ‘B’ 한 글자로 된 문자

%s “hello”, “안녕” 문자열

서식의종류

Page 6: 게임프로그래밍입문 3주차

printf()의 기본 활용

결과 확인해보기

#include <stdio.h>

int main(){

printf(“%d \n”, 100);printf(“%f \n”, 3.14);printf(“%c \n”, ‘a’);printf(“%s \n”, “hello”);

}

Page 7: 게임프로그래밍입문 3주차

printf()의 기본 활용

값이 정상적으로 출력되는가?

#include <stdio.h>

int main(){

printf(“%d \n”, 0.5);printf(“%f \n”, 100);printf(“%c \n”, “hello”);printf(“%s \n”, ‘a’);

}

Page 8: 게임프로그래밍입문 3주차

printf()의 활용

궁금증 둘! 에서, \n이 의미하는 것은? 프로그램에 미리 정의된 서식으로, 줄 바꿈을 의미한다

printf(“%d - %d = %d \n”, 100, 10, 90)

서식 설명

\n 새로운 줄로 이동한다

\t 다음 탭(tab)으로 이동한다

\b 뒤로 한 칸 이동한다

\r 줄의 맨 앞으로 이동한다

\a beep 소리를 낸다

\\ \를 출력한다

\’ ‘를 출력한다

\” “를 출력한다

서식의종류

Page 9: 게임프로그래밍입문 3주차

printf()의 기본 활용

결과 확인해보기

#include <stdio.h>

int main(){

printf(“\n 줄바꾸기 \n 한 번 더 \n”);printf(“\t 탭 연습하기 \n”);printf(“글씨쓰기\r덮어쓰기\n”);printf(“\a beep 소리내기 \n”);printf(“\\\\ 쌍 슬래시 출력하기 \n”);printf(“안녕하세요 \”hello\” \n”);

}

Page 10: 게임프로그래밍입문 3주차

변수의 이해

게임프로그래밍

Page 11: 게임프로그래밍입문 3주차

변수란?

프로그램이 실행되는 동안 데이터의 값을 저장해두는 박스 변수 각각은 다른 박스에 담는다.

int num;char name;

num을 담는 박스 name을 담는 박스

Page 12: 게임프로그래밍입문 3주차

변수의 구성

int num;

변수의 자료형 변수의 이름

int num = 100;

변수 num을 담는 상자

100

변수 num을 담는 상자

?

Page 13: 게임프로그래밍입문 3주차

변수의 선언

변수 이름의 규칙

알파벳 대문자, 소문자, 밑줄(_), 숫자로 표현할 수 있음

명칭의 첫 글자는 반드시 대문자 또는 소문자 또는 밑줄이어야 함

알파벳 대문자와 소문자는 서로 다른 문자로 인식함

C언어의 문법을 위한 예약어는 변수명으로 사용할 수 없음

auto break case char const continue default do

double else enum extern float for goto if

int long register return short signed sizeof static

struct switch typedef union unsigned void volatile while

Page 14: 게임프로그래밍입문 3주차

변수의 선언

변수 별로 선언하기

int num;int age;char name;float grade;

동일한 자료형끼리 묶어서 선언하기

int num, age;char name;float grade;

Page 15: 게임프로그래밍입문 3주차

변수 초기화하기

선언 후 초기화하기

int num;int age;num = 100;age = 20;

선언과 동시에 초기화하기

int num = 100;int age = 20;

int num = 100, age = 20;

Page 16: 게임프로그래밍입문 3주차

변수의 기본

결과 확인해보기

#include <stdio.h>

int main(){int num;double pi;

num = 100;pi = 3.14;

printf(“num is %d \n”, num);printf(“pi is %f \n”, pi);}

Page 17: 게임프로그래밍입문 3주차

변수의 기본

결과 확인해보기

#include <stdio.h>

int main(){int num;double pi;

num = 3.14;pi = 100;

printf(“num is %d \n”, num);printf(“pi is %f \n”, pi);}

Page 18: 게임프로그래밍입문 3주차

변수의 크기

변수에 따라 다른 크기의 박스가 할당됨

종류 서식 자료형 크기 값의범위

작은 정수

%d

short 2바이트 -215 ~ 215 -1

부호 없는 작은 정수 unsigned short 2바이트 0 ~ 216 -1

정수 int 4바이트 -232 ~ 231 -1

부호 없는 정수 unsinged int 4바이트 0~ 232-1

큰 정수 long (int) 4바이트 -231 ~ 231 -1

부호 없는 큰 정수 unsinged long 4바이트 0 ~ 232 -1

실수 %f float 4바이트 약 -3.4x1038 ~ 3.4x1038

큰 실수 %lf double 8바이트 약 -1.79x10308 ~ 1.79x10308

문자 하나 %c char 1바이트 -27 ~ 27 -1

문자열 %s char* 4바이트

Page 19: 게임프로그래밍입문 3주차

변수의 크기

실제로 확인해보기

#include <stdio.h>

int main(){printf("%dbyte \n", sizeof(int));printf("%dbyte \n", sizeof(float));printf("%dbyte \n", sizeof(double));printf("%dbyte \n", sizeof(char));printf("%dbyte \n", sizeof(char*));}

할당된 크기를 알 수 있는 연산자

Page 20: 게임프로그래밍입문 3주차

변수의 함정!

‘A’와 65는 같다?

#include <stdio.h>

int main(){

int num1, num2;char alpha1, alpha2;

num1 = 65;num2 = ‘A’;alpha1 = 65;alpha2 = ‘A’;

printf(“num1 is %d num2 is %d \n”, num1, num2);printf(“alpha1 is %c alpha2 is %d \n”, alpha1, alpha2);

}

Page 21: 게임프로그래밍입문 3주차

변수의 함정!

‘A’와 65는 같다? 어떤 출력을 사용하느냐에 따라 값이 다르다. 아스키 코드를 사용하기 때문이다.

아스키코드 10진수

0 ~ 9 48 ~ 57

A ~ Z 65 ~ 90

a ~ z 97 ~ 122

Page 22: 게임프로그래밍입문 3주차

연산자의 기초

게임프로그래밍

Page 23: 게임프로그래밍입문 3주차

산술 연산자

기본 산술 연산자

연산자 설명 사용예

= 대입 연산자 a = 3

+ 더하기 a = 3 + 10

- 빼기 a = 4 – 10

* 곱하기 a = 3 * 10

/ 나누기 a = 10 / 3

% 나머지 a = 10 % 3

Page 24: 게임프로그래밍입문 3주차

산술 연산자 실제로 해보자#include <stdio.h>

int main(){

int a, b = 10, c = 3;

a = b + c;printf(“10 + 3 = %d \n”, a);

a = b - c;printf(“10 - 3 = %d \n”, a);

a = 10 * 3;printf(“10 * 3 = %d \n”, a);

a = 10 / 3;printf(“10 / 3 = %d \n”, a);

a = 10 % 3;printf(“10 % 3 = %d \n”, a);

}

Page 25: 게임프로그래밍입문 3주차

산술 연산자

대입 연산자와 증감 연산자

연산자 설명 사용예 결과

+= 대입 연산자 a += 3 a = a + 3

-= 대입 연산자 a -=3 a = a – 3

*= 대입 연산자 a *=3 a = a * 3

/= 대입 연산자 a /=3 a = a / 3

%= 대입 연산자 a %=3 a = a % 3

++ 증감 연산자 a++, ++a a = a + 1 , a += 1

-- 증감 연산자 a--, --a a = a - 1, a -=1

Page 26: 게임프로그래밍입문 3주차

산술 연산자 실제로 해보자#include <stdio.h>

int main(){

int a = 10;

a += 5;printf(“a+= %d \n”, a);

a -= 5;printf(“a -= %d \n”, a);

a *= 5;printf(“a *= %d \n”, a);

a /= 5;printf(“a /= %d \n”, a);

a %= 5;printf(“a %%= %d \n”, a);

}

Page 27: 게임프로그래밍입문 3주차

산술 연산자 그럼 다음 결과는?

#include <stdio.h>

int main(){

int a = 10;

a++;printf(“a++ %d \n”, a);

++a;printf(“++a \d \n”, a);

a--;printf(“a-- \d \n”, a);

--a;printf(“--a %d \n”, a);

}

Page 28: 게임프로그래밍입문 3주차

산술 연산자

b = a++;

b = ++a;

①②

① a를 b에 대입시킨다

② a의 값을 1 증가시킨다

① a의 값을 1 증가시킨다

② a를 b에 대입시킨다

Page 29: 게임프로그래밍입문 3주차

관계 연산자

양쪽을 비교하여 참 또는 거짓을 판별할 수 있음

같으면 참(true, 1), 같지 않으면 거짓(false, 0) 주로 조건식에 많이 사용

연산자 설명 사용예 결과

== 같다 a == 10 a와 10은 같다

!= 같지 않다 a != b a와 b는 같지 않다

> 크다 a > 3 a는 3보다 크다

< 작다 a < 100 a는 100보다 작다

>= 크거나 같다 a >= 50 a는 50보다 크거나 같다

<= 작거나 같다 a <= 1 a는 1보다 작거나 같다

Page 30: 게임프로그래밍입문 3주차

관계 연산자 실제로 해보자

#include <stdio.h>

int main(){

int a = 100, b = 200;

… ….아래의 결과가 나오도록 직접 짜보자

}

Page 31: 게임프로그래밍입문 3주차

논리 연산자

그리고, 또는, 부정

같으면 참(true, 1), 같지 않으면 거짓(false, 0) 주로 조건식에 많이 사용

연산자 설명 사용예 결과

&& 그리고 (a > 10) && (b <100) (a > 10)이고 (b<100)

|| 또는 (a > 10) || (b < 100) (a > 10) 또는 (b<100)

! 부정(아니다) !(a> 10) (a>10)이 아니다

Page 32: 게임프로그래밍입문 3주차

논리 연산자 실제로 해보자

#include <stdio.h>

int main(){

int a = 100;

… ….아래 내용이 참인지 거짓인지 직접 짜보도록 하자.

}

연산자 설명 사용예 결과

&& 그리고 (a > 10) && (b <100) (a > 10)이고 (b<100)

|| 또는 (a > 10) || (b < 100) (a > 10) 또는 (b<100)

! 부정(아니다) !(a> 10) (a>10)이 아니다

Page 33: 게임프로그래밍입문 3주차

비트 연산자

정수나 문자 등을 2진수로 변환한 후에 각 자리의 비트끼리연산을 수행하는 것

연산자 설명 결과

& 비트 논리곱 둘다 1이면 1이다

| 비트 논리합 둘 중 하나만 1이면 1이다

^ 비트 배타적 논리합 둘이 같으면 0, 둘이 다르면 1이다

~ 비트 부정 1은 0으로, 0은 1로 변경한다

<< 비트 왼쪽 시프트 비트를 왼쪽으로 shift한다

>> 비트 오른쪽 시프트 비트를 오른쪽으로 shift 한다

Page 34: 게임프로그래밍입문 3주차

실습 1

printf()와 다양한자료형을 활용한 학점 계산기 만들기 5개의 과목을 변수로 만든다 각각의 학점을 변수에 담는다 5과목의 총점을 출력한다 5과목의 평균을 출력한다

실행결과

Page 35: 게임프로그래밍입문 3주차

실습 2

printf()와 다양한자료형을 활용한 학점 계산기 만들기 실습 1의 결과를 소수점 한 자리까지 출력되도록 만든다

실행결과

Page 36: 게임프로그래밍입문 3주차

변수의 크기

변수의 자료형에 따라 변수에 할당되는 크기가 달라짐 예를 들어, 실수는 기본적으로 소수점 6자리까지 출력이 되는

데 수정하여 소수점 자리수를 변경할 수 있음

Page 37: 게임프로그래밍입문 3주차

변수의 크기

출처 : C언어 for Beginner

Page 38: 게임프로그래밍입문 3주차

scanf()의 이해

게임프로그래밍

Page 39: 게임프로그래밍입문 3주차

scanf()란?

키보드로부터 값을 입력 받을 수 있는 표준 입력 예시

여러 개의 값을 한 번에 받을 수 있으며, 다양한 자료형에 대해 입력 받을 수 있음

예시

printf(“%d \n”, 100);

scanf(“%d”, &num);

특정한 변수에 입력 받은 값을 담는다

scanf(“%d %d %d”, &num1, &num2, &num3);

scanf(“%lf %d”, &sosu, &jungsu);

Page 40: 게임프로그래밍입문 3주차

scanf()에러 수정하기

scanf()사용하기

다음과 같은 에러 발생

#include <stdio.h>

int main(){

int num;scanf(“%d ”, &num);

}

Page 41: 게임프로그래밍입문 3주차

scanf()에러 수정하기

에러 수정하기

Page 42: 게임프로그래밍입문 3주차

scanf()에러 수정하기

_CRT_SECURE_NO_WARNINGS 추가

Page 43: 게임프로그래밍입문 3주차

scanf()에러 수정하기

scanf()를 그냥 사용하면 다음과 같은 오류 발생

Page 44: 게임프로그래밍입문 3주차

실습 3

printf()와 scanf(), 다양한자료형을 활용한 학점 계산기 만들기 5개의 과목을 변수로 만든다 각각의 학점을 키보드로부터 입력 받는다 5과목의 총점을 출력한다 5과목의 평균을 출력한다

실행결과

Page 45: 게임프로그래밍입문 3주차

추가. Visual Studio 2015 설치하기

게임프로그래밍

Page 46: 게임프로그래밍입문 3주차

Community 2015 다운로드https://www.visualstudio.com/ko-kr

Page 47: 게임프로그래밍입문 3주차

Community 2015 다운로드저장하고 싶은 위치에 .exe 파일 저장

Page 48: 게임프로그래밍입문 3주차

Community 2015 설치다운로드한 .exe 파일 실행

Page 49: 게임프로그래밍입문 3주차

Community 2015 설치여유공간이 8G가 안되어도 설치는 가능

Page 50: 게임프로그래밍입문 3주차

Community 2015 설치다운로드한 .exe 파일 실행

Blend for Visual Studio 2015 아님!!!!!

Page 51: 게임프로그래밍입문 3주차

Community 2015 시작하기개발환경 설정하기

본인이 원하는 스타일의레이아웃으로 변경 가능

Page 52: 게임프로그래밍입문 3주차

Community 2015 시작하기추가 도구 설치하기

새 프로젝트 생성, 콘솔 설정

Page 53: 게임프로그래밍입문 3주차

Community 2015 시작하기추가 도구 설치하기

.exe 파일 생성(Win32 콘솔 응용프로그램)을위한 추가 도구 설치

Page 54: 게임프로그래밍입문 3주차

Community 2015 시작하기추가 도구 설치하기

윈도우 PC에서 사용 시 필요한 추가 도구 설치,사용 중이던 비주얼 스튜디오를 종료하고 작업을 진행할 것

Page 55: 게임프로그래밍입문 3주차

Community 2015 시작하기추가 도구 설치하기

Page 56: 게임프로그래밍입문 3주차

Community 2015 시작하기추가 도구 설치하기

프로그램 다시 시작

Page 57: 게임프로그래밍입문 3주차

Community 2015 시작하기“Win32 콘솔 응용프로그램”이 제대로 생성되었는지 확인

이렇게 보이면 정상적으로 생성된 것!

Page 58: 게임프로그래밍입문 3주차

Community 2015 프로젝트 생성하기새 프로젝트 생성하기

프로젝트명은 프로젝트명으로 어떤 프로젝트인지 이해할 수 있는 것으로 생성할 것

Page 59: 게임프로그래밍입문 3주차

Community 2015 프로젝트 생성하기설정을 위해 ‘다음’선택

Page 60: 게임프로그래밍입문 3주차

Community 2015 프로젝트 생성하기개발환경 설정하기

미리 컴파일된 헤더를 선택할 경우, 불필요한 내용이소스코드에 기본으로 추가됨

Page 61: 게임프로그래밍입문 3주차

Community 2015 프로젝트 생성하기소스코드 작성을 위한 .c/.cpp 파일 추가하기

Page 62: 게임프로그래밍입문 3주차

Community 2015 프로젝트 생성하기.c파일 추가하기

파일 명도 프로젝트 명과 동일하게이름으로 내용을 파악할 수 있도록 생성