토마스 활기찬 : 좋아.
안녕하세요, 여러분.
나는 토마스 활기찬입니다.
이 세미나는 될 것입니다 SDL을 사용하여 C에서 2D 게임을 작성.
그래서 나는 당신이 모든 거 알아 그래, 정말, 요구
게임을하고 게임을 만들고 싶어, 하지만이 SDL 사업은 무엇인가?
그래서 SDL은 C 라이브러리입니다.
그것은 단순한 의미 DirectMedia 레이어.
그리고, 크로스 플랫폼의 게임 개발 라이브러리.
그것은, 윈도우, 맥에서 작동 리눅스, 심지어는 아이폰 OS와 안드로이드.
그것은 같은 것들을 처리 오디오 시스템에 대한 액세스
컴퓨터, 키보드, 및 대 마우스, 조이스틱은, 그들은 부착하는 경우.
모바일, 심지어 작업을 수행 할 수 있습니다 입력과 그 모두를 터치합니다.
그리고 물론, 그래픽 처리, 화면에 물건을 그리기.
>> 따라서 매우 광범위에도 사용되는 당신은 이전에 들어 본 않았을 수 있습니다.
그것은 예를 들어,에 내장, 밸브의 소스 엔진,
같은 어떤 권력 게임 포탈과 팀 포트리스 2.
이는 매우 많은 수도있어 나올 인디 게임,
그래서 당신은 무엇을보고 흥분 모든 그것으로 만드는 것입니다.
>> 세미나의 목표는 당신이 얻을 수 있습니다 SDL과 개발로 출발했다.
우리는 방법을 배울거야 게임 창을 만들 수 있습니다.
우리는 스프라이트를 만들거야 이는 게임의 이미지입니다
그 주위를 이동할 수 있습니다.
우리는 방법을 배울거야 와 스프라이트 애니메이션,
그래서 주위로 이동, 확인 그들은 시간이 지남에 변경합니다.
그리고 우리는 방법을 배울거야 키보드와 마우스를 캡처
컴퓨터에서 입력.
우리가 얘기하지 않습니다 약 오늘은 3D 그래픽은,
그것은 매우 복잡하기 때문에 우리는 시간이 없어 될 수 있습니다.
우리는 배울 방법에 우리의 게임에 오디오를 재생할 수 있습니다.
그리고 우리는 구축되지 않습니다 리눅스하지만 아무것도.
>> 이제주의 사항이있다, 희망, 마지막 세미나로,
당신은 편안있을거야 SDL 문서,
그래서 당신은 알아 갈 수있을거야 어떻게 자신을 위해 오디오를 재생합니다.
또한 작업을해야 Mac 또는 PC 용 건물 정확히 리눅스 구축과 같은,
하지만 설치는 것 조금 다를 수.
그래서 당신은 이해할 수 있어야합니다 이 일을 위해 밖으로 방법
오늘의 세미나의 말.
>> 설정에 대한 그래서 우리는거야 가상 컴퓨터를 사용할 수 있습니다.
우리는 때문에, CS50의 IDE를 사용하는 것이 우리는 단지 C로 작성 될거야
그러나 IDE 우리는, 브라우저가 없기 때문에 새 창 또는 디스플레이를 만들 수 없습니다
그것은 그래픽.
그래서 우리는 가상 머신이 필요합니다.
그래서 당신은 지시에 따라 수 여기 manual.CS50.net/appliance/15에서
공식 CS50 어플라이언스를 설치하려면 이는 단지 가상 리눅스이고
기계.
>> 그리고 당신은 일단 그 모든 것이 up-- 설정
때문에, 조금 시간이 걸릴 수 있습니다 당신이 가고있어 매우 큰 download--
VM sudo는 APT-GET 업데이트에서 실행합니다.
그리고 정말이야 모든 소프트웨어를 업데이트하기
가상 머신에 패키지.
>> 그 후, 당신은 실행하는거야 sudo는은, 설치 libsdl2-2.0-0있는 apt-get
libsdl2-DBG, libsdl2-DEV, 및 추가 libsdl2 이미지-2.0-0,
libsdl2 이미지-DBG, 및 libsdl2 이미지-DEV.
그래서 그 기능은 무엇입니까?
즉, 단순히 디버그를 설치 정보, 문서, 헤더,
두 개의 라이브러리에 대한 바이너리.
SDL 2.0, 오래된 일반, 다른 도서관
라는 SDL 이미지, 어떤 우리가 사용하게 될거야
우리의 게임에 이미지 파일을로드합니다.
>> 당신이 또한 일단 그래서 그것은 묻는 바로 그 때, 그
그냥, yes를 입력 Enter 키를 누르십시오 패키지를 설치하려면
그리고 당신은 갈 수 있어야한다.
그래서, 배포 코드를 얻을 수 있습니다 오 이런 주는거,이 업데이트되지 않습니다.
당신이하지 않는 GitHub의에 account--이 당신은 GitHub의 계정이있는 경우,
이 망할 놈의 작업을 수행 할 수 있습니다 REPO에 복제 명령
그리고 그 망할 놈을 다운로드합니다 거기에 모든 코드와 REPO,
그래서 당신은 코드를해야합니다.
>> 당신은 GitHub의가없는 경우 계정은, 당신이해야하는 유형입니다
wgithttps : //github.com/tlively/sdl seminar-- 여기 그것은 different--의
/archive/master.zip.
그래서 다시, 그 동일한의 URL, 그것은 될 것 제외
tlively / SDL_seminar / master.zip과 당신은 다운로드 wgit을 사용하고 있습니다.
그리고 당신은 단지 수 그 압축 파일을 압축 해제
다음 당신은 할 수 있습니다 모든 소스 코드.
그것에 대해 정말 죄송.
그리고 코드도에서 호스팅됩니다 몇 CS50 세미나의 웹 페이지
일.
>> 괜찮아.
그래서 우리는 어떻게 시작합니까 우리 자신의 게임을 작성?
음, 먼저 우리가하고 싶은거야
SDL 문서를 볼 수 있습니다.
그래서 여기에 VM입니다.
그리고 여기에 웹 페이지입니다.
나는 libsdl.org 살고 탐색했습니다.
내가 여기서 할거야 것은 가서입니다 사이드에, 문서에서,
위키 클릭합니다.
이 위키에 저를 가져올 것 SDL에 대한 문서의 대부분을 보유하고 있습니다.
여기에 사이드에 걸쳐, 우리는있어 카테고리 별 API를 클릭 것,
때문에이 제공하는 것입니다 우리 좋은 범주보기
SDL을위한 전체 API의.
>> 그래서 예를 들어, 우리가 기본 초기화
그리고, 아래의 모든 종류의 종료 SDL을 사용하기위한 관리 물건,
그리고, 우리는 섹션을 화면에 물건을 표시.
즉 비디오입니다.
입력 이벤트, 그 점점 키보드로 입력,
마우스의 입력을 받고,과 조이스틱, 당신도 그것을 가지고있는 경우.
것들에 대한 포스 피드백이있다 게임 컨트롤러와 같은 어떤
우리에 대해 얘기하지 않을거야.
그리고 여기에 오디오입니다.
그리고 다른 한 무리의 존재 SDL은 당신을 위해 할 수있는 물건.
>> 그러나 오늘 우리가 초점을 맞출거야 여기에 초기화에,
비디오 이미지들을 디스플레이 섹션 및 입력 이벤트 처리.
그래서이 주이다 문서의 섹션
당신이 걱정해야한다고.
그냥 재미를 위해, 우리는 가서 경우 여기 이름으로 API를 클릭,
우리는 모든의 목록을 볼 수 있습니다 SDL 라이브러리의 한 가지.
그래서 이러한 모든 기능을, 열거, 구조, 재료의 미친 양,
알파벳 순서.
그리고 분명히까지 당신은 당신이 일을하는지 알고,
이 역시 도움이 될 수 없습니다 저희는 범주별로 API를하는 이유입니다.
>> 그래서 시작하자.
희망 당신은 이미했습니다 배포 코드를 다운로드했습니다.
그래서 당신이 할 수있는 권리이다 여기 CS50 어플라이언스에,
단순히 터미널을 엽니 다.
여기에서 우리는 간다.
그래서 이미 다운로드 한 .ZIP를 사용하여 분배 코드
방법.
그리고 나는 그것을 압축 해제했습니다.
그래서 여기가 SDL 세미나 마스터입니다.
그래서 그 디렉토리에 들어갈거야.
그리고 우리가 여기에서 보는 것은 것을 우리는 일곱 C 파일이 있습니다.
그리고이 코드 것입니다 우리는 오늘보고 될 것입니다.
우리는 메이크 있습니다.
그리고 우리는 자원 디렉토리를 가지고, 이는 단순히 이미지를 갖는다
것을 당신은 곧 볼 수있을 것입니다.
>> 그럼이 파일을 열 수 있습니다 G-편집 편집기를 사용하여.
그래서 나는 모든 파일을 열려면 그 안녕하세요로 시작하고이 .c로 끝납니다.
여기에서 우리는 간다.
그래서 작은 창이다, 그래서 우리는있어 더 큰 것을 만들려고 노력하는 것.
아니, 멀리 갔다.
>> 괜찮아.
그래서 여기에 처음이다 파일은 우리가 보는 것입니다.
그것은 hello1_sdl.c라고.
그리고이 모든 수행은 SDL을 초기화입니다 라이브러리 우리는 그것을 사용할 수 있도록.
당신이 와서 알게 될 것입니다 방법 이 코드를 직접 최대?
음, 우리는 이상의 보면 문서에서
우리는 초기화로 이동 및 섹션 종료
그것은 우리 모두에게 것 SDL을 초기화하는 방법에 대한.
그래서 확실히이 재차 읽어 보시기 바랍니다.
그것은 당신에게 모든 것을 말할 것 여기에 무슨 일이 일어나고 있는지에 대해.
그러나 문제의 주요 요점이다 우리는이 함수의 SDL를 호출해야
그것을 통과 어떤 물건 종류 우리는 라이브러리를 초기화 할 수 있습니다.
우리의 경우 그래서, 우리는 단지거야 지금은 비디오를 초기화하고,
그래서 우리는 이미지를 표시 시작할 수 있습니다.
>> 여기, 당신이 경우에 볼 수 있습니다 우리는 거기에 SDL을 클릭, 우리
더 많은 정보를 얻을 수 있습니다, 리턴 값을 포함.
그래서 우리는 여기에서 볼 returnes 성공에 제로.
우리의 코드에 그래서, 우리는 갈거야 그것은 0을 반환하지 않는 경우 참조
그리고 복귀하지 않는다면 제로는, 그래서, 성공하지 못한
우리는 단순히 인쇄에가는거야 이 기능을 이용하여 다른 에러,
문자열을 반환 SDL get 및 오류, 발생한 오류를 설명.
우리는 인쇄거야 오류가 다음 우리는 그냥있어
프로그램을 종료 예정 오류 코드와.
>> 우리가 필요로하는 그런 다음 다른 일 할 일은, 프로그램이 종료하기 전에,
우리가 성공적으로 SDL을 초기화하는 경우, 우리는 단지 SDL 종료를 호출해야합니다.
그리고 그것은 청소를 처리 할 것 우리 SDL의 내부 자원의 모든.
그래서 문서는, 다시 ... 이렇게 여기에 우리가 초기화에
절을 종료 문서.
당신은 클릭 할 수 있습니다 여기에 기능, SDL은 종료
당신은뿐만 아니라 그것에 대해 모두를 읽을 수 있습니다.
그리고이 기능을 많이 문서 페이지
예제 코드를, 그래서이 아주 좋은 자원이다.
확실히 시간을 보내고 이 위키의 일부를 읽고
당신은 할 거라면 프로젝트의이.
>> 괜찮아.
그래서 우리의 전체 프로그램입니다.
우리는 이제 난 일은 .. 수있는 일 여기에 메이크 파일을 열 것,
그래서 나는이 걸릴거야 그 작동 방법을 살펴 보자.
그리고 그것은 매우 간단한 메이크입니다 이전에 보았던 것과 유사한.
주요 차이점 중 하나 즉, 여기,이입니다
실행의 결과를 삽입하는 것입니다 당신은 이미했습니다이 명령,
당신이 SDL 설치 한 경우 설치.
그리고 이것은 명령입니다 그 생성하는거야
컴파일러에 대한 몇 가지 여분의 플래그.
>> 그 외에, 우리는 그것을주는 거 모든 일반적인 명령뿐만 아니라
이 두 명령.
그래서 -lsdl2 이미지 핸들 SDL 이미지 라이브러리에 연결.
그리고 -lm 실제로 연결을 처리 표준 C 수학 라이브러리.
그래서 우리는 필요하지 않을 수 있습니다 우리의 C 파일의 모든 사람들,
우리가 할 수 있도록하지만, 우리는 단지에 넣어 모두에 대해 동일한 makefile을 사용하여
수정없이.
>> 여기 소스에, 이 어디 좋겠입니다
당신이 가고 있었다 파일을 넣어 프로젝트에 컴파일합니다.
하지만 내 C의 모든 일부터 여기에 파일의 주요 기능을 가지고있다
그것은 혼란 것 우리는 그들 모두를 넣어 경우.
그래서, 그냥 말을하려고 해요 지금, hello1_sdl.c,
이는 우리가 보았던 하나입니다.
난 다시 가서한다면 여기에, 걸 할 수 있습니다.
그리고 무엇을했던 것은 단지입니다 그 첫 번째 파일을 컴파일.
그리고 우리는 때문에, ./game 입력 할 수 있습니다 그것이 생산 실행이다.
그리고 그것은 한 모든 인쇄했다 초기화 성공.
그래서 우리는 바로 일을했다.
그러나 그것은, 가지 지루했다 우리는 창이 표시되지 않았기 때문에,
아무것도 주위에 이동되지 않았다.
>> 그래서 좋은, 우리는 SDL이 초기화되었다.
자, 이제 뭔가로 이동하자 좀 더 흥미 롭군요.
그래서 여기에 우리가 hello2_window.c 있고, 이 약간 더 될 것입니다
복잡한 C 프로그램이 SDL 그냥 예전처럼 초기화
지금을 제외하고 우리는거야 SDL 타이머를 초기화합니다.
그리고 이것은 우리가 할 것입니다 내부 타이머에 액세스
사용 기능은 시간에 관한.
>> 그리고 이제 여기로 살펴 보자.
우리가 할 것은 우리가이 포인터를 가지고있다 SDL 윈도우 구조체에있는
이 호출에 의해 생성 될 것입니다 함수에, SDL은 창을 만들 수 있습니다.
자,이 인수 많이 걸립니다, 그래서이 문서를보고 가자.
그래서 다시, 내가 갈거야 카테고리 별 API, 내가 해요
먼저 여기 비디오에 추락하고, 섹션, 윈도우 관리를 표시.
그래서이 부분은있다 거기에 물건의 톤,
하지만 당신은을 통해 보면 이러한 기능, 당신은거야
그 아마 하나 우리를 참조하십시오 SDL은 창을 만들라고합니다,
이는 상단에서 우측으로 발생합니다.
>> 그리고 이것이 이 기능에 대한 설명서를 참조하십시오.
창은 제목이 것, 화면의 X 및 Y 위치,
이 폭이 것, 높이, 다음은 몇 가지 플래그를 취할 것입니다.
이제, 우리는 실제로 걱정하지 않는다 지금 이러한 플래그의,
하지만 당신은 뭔가를 원하는 경우 같은 전체 화면 창을,
당신은 좀 걸릴 수 있습니다.
지금, 우리는 단지거야 이러한 특수 값을 사용하고,
SDL 윈도우 플러스를 중심으로 순서대로 x와 y에 대한
그냥 창을 만들 수 있습니다 우리의 화면 중심.
>> 그래서 그 무엇을하는지입니다.
그리고 창으로 발생하는 경우 null의 경우, 오류가있는 의미,
다시 우리는 단지에가는거야 SDL 가져 오기 오류를 사용하여 오류를 인쇄 할 수 있습니다.
그리고 우리는 초기화 때문에 SDL은, 우리는 지금 닫아야합니다.
그래서 우리는 SDL 전에 종료 전화 메인 하나를 반환.
>> 그래서 우리는이 창을 희망 열고있다.
그리고 우리는 무엇을거야 우리는거야 할 일은
5,000 밀리 초 동안 SDL을 호출, 5 가지 초로 동일하다.
그리고 우리는 그와 함께 할 때, 이 창을 파괴하는 것,
, SDL 라이브러리를 정리 프로그램을 종료합니다.
그럼 가서 촬영 것을 제공 할 수 있습니다.
>> 그래서 지금 대신은 변경 메이크 때마다,
나는 단순히 확인하고 할 수있는 다음 명령 줄에서,
소스는 일치 한 다음 말 우리가 컴파일하고있는 파일입니다.
그래서 hello2_window.c입니다.
환상적인.
아니 erros 없습니다.
이제, 우리는 우리의 실행 파일을 실행하면, 우리는이 창을 참조하십시오.
이제 몇 가지가있다 창 문제.
우리가 주위를 이동할 수 있지만 갖는다 그 안에이 배경 정크.
그래서 우리는 그려지지 않은 아무것도, 그리고 그것은이다
쓰레기 가득한하는 거의 우리가 기대하는 것입니다.
>> 또한, 우리는 창을 닫을 수 없습니다.
나는이 X를 눌러 해요 코너 아무것도 일어나고.
그래서 우리는 해결하는 방법을 볼 수 있습니다 약간의 그.
그래서이 부분을 해결 할 곳 창 먼저 쓰레기로 가득하다.
그래서 우리는 hello3_image.c까지 가면, 무엇을 우리는 우리가 몇 가지를 추가 한 것을 볼 수 있습니다
여기에 더 많은 것.
우리는이 새로운 헤더를 추가했습니다 타이머 기능을 얻을 파일.
나는 우리가 마지막에 그했다 추측 하나, 너무, 나는 그것을 언급하지 않았다.
하지만 지금 우리는이기 때문에 이미지 작업,
우리는 SDL을 포함 할 필요 이미지 헤더 파일뿐만 아니라.
그래서 같은 일이 같은입니다 전에, 여기에 SDL을 초기화,
창을 만드는 같은 거래.
우리는 지금 전에 봤어요.
>> 이제 우리는라는 것을 작성해야 일종의 함께가는 렌더러,
창.
그러나의 일종 의 추상 개체
이 모든 일을 담당 창에 드로잉 작업.
그리고 실제로 해당 로드 프로그램
에서 그래픽 하드웨어로 당신의 컴퓨터 나 휴대 전화 또는 무엇이든.
그래서 우리가 원하는 플래그 그건 ... 합격 당신은 문서를 볼 수 있습니다
here--가는 자세한 내용을 얻을 수 있습니다 SDL은, 가속 렌더링 할 수있는
가 될 것 의미 그래픽 하드웨어를 사용하여
그냥 소프트웨어 에뮬레이션하지.
>> 그리고 우리가 사용하는거야 SDL 렌더러 PRESENTVSYNC.
VSYNC 간단하게 만드는 것입니다 그래픽은 더 방지를 봐
이 일이라고 화면 테러, 여기서 반
다음의 한 프레임 절반의 프레임이 동시에 인출 얻을
그것은 끔찍한 보인다.
그러나 다시, 당신은 읽어 갈 수있다 자신에 그것에 대해.
>> 그래서 우리는 여기에 몇 가지 플래그를 가지고있다.
그래서 우리는 단지 전화를 겁니다 이 기능 SDL은 렌더러를 만들 수 있습니다.
우리는 그것을 창을 줄거야 그 렌더러에 관련.
음 하나는 우리가 무엇을 걱정하지 않는다 의미 그래픽 드라이버는 우리가 사용하는 것입니다.
그래서 꽤 많이해야 항상 부정적인 하나,
당신은 그래픽 드라이버에 대해 알지 못한다면.
그리고 우리는 단지거야 그것은 우리의 플래그를 전달한다.
즉 null을 반환한다면, 우리는있어 평소와 같이 오류를 인쇄하는 것,
그러나 우리는 또한거야 창을 파괴
전에 그 자원을 청소 SDL 종료 호출하고 반환.
>> 이제, 흥미로운 부분 여기에 우리는 우리의 이미지를로드되는 경우
이 기능 IMG_load를 사용하여.
이것은 우리가 가고있는 전용 기능입니다 SDL 이미지 라이브러리에서 사용할 수 있습니다.
그것은 우리가 필요로하는 단 하나입니다.
그것은 문자열을받는 함수이다 그 모든 이미지 리소스의 경로입니다.
그리고 그것은 .PNG 될 수 있습니다, GIF, 비트 맵, 이러한 것들 중 하나.
이 기능이 너무 좋은 이유입니다.
그것은 거의 모든 포맷을 처리 할 수​​ 있습니다.
메모리 저장을로로드 것은 SDL 표면을 불렀다.
>> 지금 SDL 표면은 단지 구조체입니다 즉, 메모리에 화상 데이터를 나타낸다.
그래서 당신에 대한 자세한 내용을보실 수 있습니다 문서 두에 그.
그리고이 오류가있는 경우, 우리는있어 모든 것은 어디 할 것
우리가 오류를 인쇄, 닫기 우리 자원은 다음 프로그램을 종료합니다.
이제 흥미로운 것은 전에이다 우리는 창에 이미지를 그릴 수 있습니다
우리는 실제로 텍스처를 확인해야합니다.
이제 텍스처 대응 로드 된 이미지 데이터를
그래픽 하드웨어의 메모리에.
>> 그래서 표면 주에 메모리, 일반 메모리
우리는 모든 학기를 사용했던 것을, 과 질감이 별도의 VRAM에
메모리 그래픽 카드 제어하는​​.
그래서 우리는이 함수를 호출 SDL_CreateTextureFromSurface.
우리는 우리의 렌더러 및 우리의 표면을 제공합니다.
그리고 우리가 실제로있어 면 다,
그래서 우리는 그냥 무료로 될 것입니다.
우리는 더 이상 필요하지 않습니다.
그리고이 호출 그렇다면 오류가 발생한 null을 반환
우리는 전체를 할거야 다시 일을보고 오류가 발생했습니다.
>> 괜찮아.
여기, 우리는 몇 가지에 들어갈 실제 렌더링 기능을 제공합니다.
그래서 SDL_RenderClear를 호출 그것을 전달
우리 창과 관련된 렌더러 단순히 화면이 검게 만든다.
그래서 쓰레기는 우리가 본 그 것을 제거 우리의 창은 이전과는 검은한다.
그리고 우리는거야 SDL_RenderCopy를 호출하려면,
그것은 우리의 렌더러, 우리의 질감을 제공합니다.
그리고 우리는 얘기하자 무슨 이 필드는 비트에 있습니다.
하지만 그 것 텍스쳐 데이터를 취할
그것을에 복사 우리 창 이미지를 그립니다.
우리는이 사본을 완료 한 후에 그래서 우리의 윈도우로 데이터
우리는이 여분의 기능을 수행해야 SDL_RenderPresent했다.
>> 그리고 이것은 재미있다 이 가져 때문에
이중 버퍼링라는 주제에.
그래서 더블 버퍼링 기술입니다 그래픽이 훨씬 더 볼 수 있습니다.
다시 말하지만, 그 화면 찢어 방지 나는 여기서 이전에 대해 얘기했다
두 개의 버퍼를 가지고있다.
백 버퍼가있다 메모리와 프론트 버퍼.
전면 버퍼는 그대로입니다 어떤 순간에 화면에 있습니다.
그래서 우리는 이러한 변화를 그리는 모든 수행 SDL처럼 복사 또는 SDL_RenderClear 렌더링
백 버퍼에.
그래서 그들은 일을 수정 백 버퍼에.
여기에서 우리는이 드로잉 될 수 있습니다 백 버퍼에 녹색 사각형.
>> 그래서 우리는 일을 할 때 우리의 렌더링 작업하는
정말 오래 걸릴 수 있습니다 시간, 우리는 무엇을 할 거 야
버퍼를 전환 할 수 있습니다.
그래서 말 그대로 그냥 소요 프론트 버퍼와 백 버퍼
그래서 그들을 전환 즉, 순간적으로,
한 번의 작업으로 대신 어쩌면 수백 또는 수천,
새로 렌더링의 모든 오브젝트가 화면에있다.
그리고이 일을 방지 화면 상쾌한 같은
우리는 그린 한 반 프레임에 대한 우리의 객체.
우리가 호출 할 필요가 왜 그렇게 그건 SDL_RenderPresent뿐만 아니라,
SDL_RenderCopy있다.
>> 다시 말하지만, 우리는 단지거야 5 초 동안 대기.
그럼 우리가 갈거야 우리의 자원을 정리.
우리는 더 적지이 시간이.
그리고 우리는 단지거야 프로그램을 종료합니다.
그럼 그렇게하자.
나는 소스를 메이크업을 입력하려고하고 있어요 hello--이 지금 3image.c입니다 같습니다.
좋아, 그 오류를 컴파일하지 않습니다.
그리고 당신은 여기에서 볼 수 있습니다 지금은했습니다 내 이미지를 그려, 안녕하세요, CS50!
우리의 창에있는 오초 후 사라집니다.
>> 자,이 여전히 오른쪽 문제가있다?
이것은 좋은 응용 프로그램이 아닙니다, 나는 창을 닫으려고 할 때, 때문에
아무 반응이 없습니다.
즉, X는 여전히 응답하지 않습니다.
그럼 살펴 보자 다음 파일, hello4animation.
그래서이 파일은 그 소개 것
우리의 이미지 이동 및 운동.
그래서 우리는 할거야 같은 일 이전과,
SDL을 시작,을 만들 창, 렌더러를 만들
로 이미지를로드 메모리, 텍스처를 만듭니다.
우리는 전에 그 모두를 보았다.
이제이 새로운 기능입니다.
우리는 구조라고 할 겁니다 그냥 사각형 인 SDL RECT.
우리가 여기에 가면, 우리는 할 수 SDL의 RECT에 대한 검색을 수행,
그리고 당신은 A의 볼 수 있습니다 아주 간단한 구조.
그것은 X, Y에 대한이 위치하며
폭과 높이를 가지고 사각형의 크기.
>> 그래서 우리가있어 우리가 할 거 야입니다 이 SDL의 RECT의 DEST를 정의하는 것,
대상.
그리고 이것은 장소입니다 여기서 화면
우리는 드로잉 할거야 우리의 이미지, 바로 그래서
우리는 할 거라면 주위 동화상,
다음 대상 곳 우리는 이미지를 그릴거야
주위를 이동해야합니다.
그래서 우리는이 전화를 겁니다 기능 SDL_QueryTexture.
내가 주소를 전달하고있어 주목 dest.w의 폭이며, 이는
및 dest.h, 높이가된다.
그래서 SDL_QueryTexture는 것입니다 폭 해당 필드에 저장
우리의 질감의 높이.
>> 그리고 나는거야 무슨 내가 갈거야 할 일은
dest.x 될 창을 설정합니다 이다 폭 마이너스 dest.w,
2로 나누어 스프라이트의 폭.
그리고 이것은 그렇게를 설정하는 것입니다 이미지가 완벽하게 중심에 있음
우리의 창에서, 알았지?
그래서 지금은 y 위치를 가지고있다.
그리고이에 가고 있어 가변 될
우리가 될 것하고 있기 때문에, 변경 Y 방향으로 화상을 이동.
그리고 지금 우리는 뭔가를 애니메이션 루프했다.
>> 어떻게 애니메이션이 작동합니까?
음, 인간의 눈 (12)은 별개의 감지 할 수 있습니다 매 순간에 이미지, 알았지?
당신이 날 12 이미지 카드를 플래시한다면 두 번째로, 나는 그 이미지의 각을 보았다
자신의 고유 한 개별 이미지로.
지금, 당신은 더 많은 깜박이는 경우 두 번째의 날에 이미지,
다음 내 눈 시작할 것 그들을 함께 흐리게하기
나는 모션으로 인식 것, 대신에 하나의 고유 한 이미지.
그래서, 예를 들어, 영화, 텔레비전, 그들은 당신이 24 시간에 이미지를 플래시
두 번째.
그래서 초당 24 프레임입니다.
컴퓨터 화면 반면 자주 초당 60 프레임입니다.
즉, 자신의 새로 고침 속도입니다.
즉 그들이 새로 고침 빈도의 화면의 그림.
그래서 우리의 목표는 (60)이 될 것입니다 우리의 게임에 대한 초당 프레임.
>> 그래서 코드에서 것을 볼 수 있습니다.
각 프레임에 대한 그래서, 우리가 처음이야 창을 취소 한 것.
이것은 일반적인 패턴이다.
당신은 항상 취소 윈도우 프레임마다 다음
도면을 모두 수행 작업 후 단부에서,
RenderPresent가 보여 않습니다 프레임의 모든.
그리고 당신은 거 야 마지막에 대기가
다음 때까지 대기 프레임은 시작해야한다.
>> 나는 많은 일을했다 그래서 만약 여기에 복잡한 계산
그 이상 16 밀리 초를했다, 그것은 나를 위해 불가능하다
60의 프레임 속도를 얻기 위해 그 각 프레임이기 때문에 나는 원
계산하는 데 시간이 너무 오래 복용.
또한, 우리는 정말 일을하는지 작품의 무시할 금액의 종류
여기에, 단지 거기 때문에 우리가 그리는 것 한 가지.
그래서 나는 단지의 1/60을 기다립니다 둘째, 길이 인
프레임 사이의 프레임.
그래서 나는 종류의 일을 척 해요 내 모든 작품은 제로 시간이 걸립니다.
하지만 실제 게임에서, 당신은 빼기해야 할 것이다
시간은 그것이 수행했다 당신의 휴식 시간에서이 모든 작업.
>> 어쨌든, 나는 무엇이다 실제로이 루프에서 일을?
나는 창을 취소합니다.
나는에 int이며 dest.y을 설정 내 실제 Y 위치를 int로 캐스팅.
지금, 나는 해상도를 떠 원하는 내 게임 내 y 위치에 대한,
그러나 실제로에 화면에 그립니다,
이 단위이기 때문에 그것은, 정수가 필요합니다 픽셀은, 그래서 캐스트가 무엇인지입니다.
나는 이미지를 그릴거야.
그래서 이것은 소스 사각형이다.
이것은 목적지 직사각형이다.
그래서 null을 전달 원 직사각형
내 전체 질감을 그리려는 대답.
하지만 경우를 많이했다 게임의 텍스처
그들은 하나의 큰 텍스처 맵의 모든 것 그것은 단지 하나 SDL에로드 된
질감, 당신은 할 수 소스 사각형을 사용
작은 텍스처 중 하나를 선택하고, 작은 스프라이트 하나,
그 큰 텍스처 맵 중.
>> 그래서 다시, 내 렌더링 전달하고있어, 내 질감, 현재 대상.
이 곳에서 될 것입니다 창은이 그려 질 것입니다.
그리고, 나는 애니메이션거야 때문에 뭔가, 나는 운동이 필요,
나는를 업데이트 할거야 각 프레임에 스프라이트의 위치.
그래서이 상수라는 스크롤이 초당 픽셀 단위의 속도입니다.
이제, 우리는 이동을 할 때마다, 프레임은 1/60 초이다.
그래서 나는 60 그 분할거야.
그리고, 난, 어디 보자 y 위치에서 그것을 빼서.
왜 뺀 거지?
우리는 두 번째에 해당 얻을 수 있습니다.
그럼 난 내 자원을 정리 프로그램은 끝났어.
>> 그럼 그렇게합시다.
그럼 메이크업 SRCS = hello4로 가자 animation.c, 알았지?
경기.
거기 당신은 간다.
그래서 나는 위로 스크롤해야 멋지다 창.
하지만 차감 된, 잠깐만 y 위치마다에서.
거기에 무슨 일이야?
글쎄, 그 SDL에서 밝혀와 사실, 대부분의 컴퓨터 그래픽,
좌표계의 원점 윈도우의 왼쪽 상단입니다.
>> 그래서 양의 X 방향으로 간다 오른쪽으로 당신의 창에서.
그리고 양의 Y 방향 실제로 내려갑니다.
그래서 다시 원점의에 당신의 창의 왼쪽 상단,
양의 Y 방향은 아래로 및 양의 X는 우측이다.
그래서에서 뺄 때 y 위치, 즉이다
그것은 부정에 갈 수 있도록 진행 창 달려 y 방향.
그래서 거기에 무슨 일이 일어나고 있는지입니다.
시원한.
>> 의 다음 파일을 살펴 보자.
여기의 일부입니다 여기서 마지막으로 보여
윈도우의 모서리에 그 X를 얻을 수 즉 창을 닫습니다하기로했다
일하다.
그래서 무슨 일이야?
우리는 윈도우를 생성, SDL을 초기화 , 렌더러를 만들 이미지를로드,
텍스처를 만들 같은 우리는 전에 본 적이.
우리는 같은 대상 사각형이 이전과 같은 호출은 텍스처를 조회 할 수 있습니다.
하지만이 시간, 우리는 그 다음이야 폭을 분할 예정
4에 의해 우리의 목적지의 높이입니다.
이것 만의 효과를 갖는다 우리의 이미지를 때 확장
우리는 네 가지가 창에 표시됩니다.
그래서 꽤 깔끔한입니다.
우리는 그냥 그런 확장 할 수 있습니다.
우리는 스프라이트를 시작하는거야 화면 중앙.
그리고 지금 우리는 x와 y 속도와가 그들은 모두 제로에서 시작하는 것입니다.
>> 이것은 잘못된 파일입니다.
미안해.
그래서 모든 사실을합니다.
즉,이 파일의 모든 아직.
우리는 4, 모든 의한 분할이있다.
그래서 여기에 우리는 우리의 x와 y 위치를 창의 센터.
그리고 우리는 그것을 초기 속도를 제공 이 등속의 어느
나는 초당 300 픽셀 믿습니다.
이제, 우리는이 INT는 단지뿐만 아니라 수 있습니다 가까운 요구라는 부울합니다.
그리고 대신의 일을 여기에 타이머에 무한 루프,
우리는 다음과 같이 애니메이션 될거야 가까운만큼이 요청되지 않습니다.
>> 그래서 우리는 어떻게 이벤트를 처리합니까?
음, SDL은 이벤트를 큐 무대 뒤에서 문자 큐.
그리고 각 프레임, 우리는 이벤트를 대기열에서 제외 할 수 있습니다
사용하여 해당 대기열에서 이 호출 SDL_PullEvent.
그리고 또, 확실히 읽을 이동 문서에서이 약.
더 많은 디테일이 많이있다 더 많은 기능이 사용하실 수 있습니다.
우리는 주소 통과 이 일의, SDL_Event
것을 우리는 여기에 스택에 있습니다.
>> 이제 SDL_event은 무엇인가?
SDL 때문에, 우리는에 보면 documentation--은하자
분류, 입력에 의해, API를 참조 이벤트, 이벤트 처리,
우리는 숫자를 볼 수 있습니다 여기의 다른 이벤트
우리는 거기에 볼 수 있습니다 이들의 전체 톤.
그래서이 SDL_Event 것은 무엇입니까?
SDL_Event는 노동 조합이다.
와우, 노동 조합은 무엇인가?
당신은 아마 적이 없습니다 그 전에 들어.
그리고 괜찮아요.
>> 노동 조합의 종류처럼 구조체를 제외한 구조체,
모두를위한 공간이 해당 필드와 메모리,
노조는이 반면 충분한 공간이 가장 큰 맞게
그 수단의 필드 중 하나, 오직 하나의 필드를 저장할 수있다
시간에 어떤 종류의 바로, 이벤트에 대한 의미가?
우리는 키보드를 가질 수 있습니다 이벤트 또는 윈도우 이벤트,
하지만 하나의 이벤트는 모두가 될 수 없습니다 키보드 이벤트와 윈도우 이벤트,
그래서 공간을 가지고 어리석은 것 우리의 이벤트 노동 조합 내부의 사람들의 모두.
그래서 당신이 원한다면 자신의 노동 조합을 만들
정확히 동일한 보이는 구조체를 만드는 등,
것을 제외하고 우리는 노동 조합의 키워드를 사용하여 대신 구조체 키워드.
그리고 모두를 위해, 기억 노동 조합 내부의 일,
노조가 실제 변수 단지 이들 값 중 하나를 가질 수있다
시.
>> 그렇다면 우리는 이벤트의 종류를 알 수 있습니다 우리는 단지이 큐 떨어져 튀어?
음, 우리는 event.type을 테스트 할 수 있습니다.
그리고 그와 같은 경우 SDL_Quit, 우리는 알고있다
이 이벤트의 그 때를 생성
윈도우의 모서리에 그 X를했다.
그리고 가까운 요청 설정할 수 있습니다 우리는 1과 같다.
나머지는 그냥 애니메이션입니다 당신은 전에 본 적이있다.
그럼 가서 만들어 보자 이과는 어떻게 작동하는지 잘 참조하십시오.
그래서 화장을 입력거야 및 다음 SRCS = hello5_events.c.
우리는 거기에 갈.
계략.
>> 이제, 우리는 그것이 볼 수 있습니다 참으로 네 가지로 축소.
그리고 지금은 주위에 튀는입니다.
나는 약간의 충돌 감지가 창의면과 일
우리는 한 번 봐 걸릴 수 있습니다.
나는 그것을 닫 갈 때 어떻게됩니까?
그것은 닫습니다.
환상적인.
우리는 그 사건을 받았다.
그리고 우리는 그것을 처리.
>> 그럼 코드를 다시 살펴 보자.
그래서 나는 그것을 어떻게 얻었 는가 그렇게 주위에 튀는?
기억 나는 두 x 및 초기 속도에 Y.
속도는 양수 상수, 그래서 그건
이 것을 시작 얻을 수 아래 오른쪽에 가고.
>> 이제, 처리 이외에 각 프레임, 발생할 수있는 이벤트,
내 스프라이트 여부를 감지하는거야 창 밖으로 이동하려고합니다.
그래서 우리는 단지 확인하여 해당 작업을 수행 할 수 있습니다 0 X_POS, Y_POS 후 0, 및
또한 X_POS 및 Y_POS와 윈도우 폭 및 높이 창.
내가 차감 한 주목 스프라이트의 폭입니다.
내가하지 않았다 경우 때문에이다 스프라이트의 폭을 빼,
그것은 단지 것을 확인 할 스프라이트의 기원
창 밖에 가지 않았다.
그러나 우리는 전체를 원한다 스프라이트의 폭
항상 창 내부에하고 스프라이트의 전체 높이
항상 창 내부합니다.
그래서 빼기가 무엇인지입니다.
여기에 기하학의 많은 수 그것을 밖으로 끌어 도움이 될
좌표 종이에 시스템은 무슨 일이 일어나고 있는지 볼 수 있습니다.
>> 나는 충돌하는 경우에 그래서, 난 그냥 단순히 위치를 재설정
이 가고되지 않도록 화면 밖으로.
이 반사 만약 내가 갈거야 측벽들 중 하나에,
나는 부정거야 X 속도 있도록
다른 방향으로 튀는 시작합니다.
그리고 마찬가지로, 안타 상단 또는 하단,
나는 Y 속도를 설정하는거야 음의 Y 속도와 동일,
있도록 다시 반송됩니다.
그래서 우리가 여기 있다는있어 얼마나이다.
>> 및 위치 갱신 다만, 우리가 전에 본 적이처럼
우리가이기 때문에, (60)에 의해 분할 단지 1/60 초 운반.
그리고 렌더링, 이전과 동일.
그리고 그 모든 것을입니다 즉,이 파일에 가고 있었다.
우리는 이벤트를 어떻게 그래서입니다.
중요한 것은 여기 빼앗아 이 SDL_PullEvent 함수이다.
그리고 당신은 확실히을 읽어야 SDL_Event에 대한 설명서 더
연합,이 데이터 형식이기 때문에 아주 중요한, 우리는 그것을 사용하기 때문에
모든 종류의 이벤트에 대한.
>> 예를 들어, 우리는 키보드에 사용할 이벤트, 이는이 파일을위한 것입니다.
그래서 우리는 무엇을해야합니까?
우리는 이전과 같은 일이 , SDL을 초기화 윈도우를 생성,
이미지를로드, 렌더러를 만들 메모리에 텍스처를 만듭니다.
다시 말하지만, 우리는 갈거야 이 DEST 사각형을 가지고,
우리는 이미지의 크기를 조절하는거야 네함으로써, 조금 작게.
이제, 우리는 시작 예정 화면의 중앙에 스프라이트.
하지만이 시간, 우리는을 설정하는거야 초기 X 0으로 Y 속도,
키보드이기 때문에 이들을 제어하는​​ 것.
그리고 또한, 우리는 갈거야 이러한 변수를 추적
상하 좌우.
그리고는 계속 것 우리가했는지 추적
키보드 버튼을 누르면 그 위, 아래, 왼쪽에 대응
오른쪽.
>> 이제이 멋진 가지입니다 우리는 W, A, S를 사용할 수 있기 때문에,
여기서 D, 또는 실제의 화살표 키.
우리는 두 번째에 해당를 볼 수 있습니다.
그래서 우리는 처리 할거야 직전 같은 이벤트.
우리는 이벤트를 당깁니다.
하지만 지금 우리는 갈거야 이벤트 형으로 전환합니다.
이 SDL_Quit 있다면, 우리는있어 가까운 설정하는 것
직전처럼, 하나에 요청했다.
즉,있는 X를 처리 창의 코너
우리의 윈도우가 실제로 닫도록.
>> 그렇지 않으면, 우리는 SDL 키를 얻는 경우에 아래로 우리는 키 누름 이벤트 수단,
그 다음 우리가 할 거 야 우리가 것입니다 여기에이 일에 전환 할 것,
어느 그래서 event.key means-- 우리의 이벤트 노동 조합을 치료하는 의미,
가서 열쇠를 가져와 거기에 이벤트 구조.
그래서이 밝혀 노동 조합은 키 이벤트 구조입니다.
그리고 키로 이동 이벤트의 구조의 필드
라는 keysym에 다음 스캔 코드.
그리고 또, 확실히 읽기 이에 대한 설명서를 참조하십시오.
키워드 입력 매우 흥미 롭군요.
당신은 스캔 코드 또는 키 코드를 얻을 수 있습니다.
그리고 그것은, 조금 미묘하지만 설명서는 아주 좋은 것입니다.
>> 우리는 스캔 코드를 볼 수 있다면 인 W 또는 최대 우리의 키 누름,
우리는 1과 동일한 설정하는 것입니다.
그리고 우리는 스위치에서 휴식.
그것은 또는 왼쪽의 경우, 우리는 등, 1 왼쪽 세트 시저 나, 등등, 아래로 권리를.
자,이 외부 스위치에 밖으로, 우리는 이벤트를 키를 참조하는 경우,
그것은 우리가 키를 해제 한 의미 우리는 더 이상 눌러 없습니다 것입니다.
그래서 0에 해당까지 말할거야, 왼쪽, 오른쪽, 아래, 0과 동일 0과 동일
0과 동일, 등등.
>> 그리고 우리는 이들 각각에있는 알 두 가지 경우 서로 바로 옆에 넣어
별도의 코드 첫 번째 경우에 대한 어떤
그것의 여부를 의미합니다 S 또는 바로 여기 아래로,
그것은이 코드를 실행하는 것입니다.
그래서 아주 편리합니다.
그것은 우리가 더 많은 일을 할 필요가 없습니다 조건 IFS 물건
그런.
>> 그래서 우리는 갈거야 속도를 결정합니다.
우리는 0으로 속도를 설정합니다.
그리고 최대 누르면 아니라 아래로, 우리
음의 속도로 Y 속도를 설정합니다.
부정적인 기억 때문에 음의 Y 방향은 업입니다.
그리고 양의 Y 방향은 아래입니다.
아래로 누르면 하지까지, 우리는있어
긍정적 인 속도로 설정하는 것, 어떤 화면을 아래로가는 것을 의미한다.
왼쪽과 오른쪽과 같은 것.
>> 그리고 우리는 업데이트 할거야 직전 같은 위치.
우리는 충돌을 할거야 범위와 감지,
그러나 우리는을 다시하지 않을거야 속도, 속도 단지 때문에
키보드로 제어.
그러나 우리는을 재설정하려고 위치는 창에 보관합니다.
그리고 우리를 설정하는거야 구조체에 위치
다음 모든 작업을 수행 앞에서 물건을 렌더링.
그래서 그것이 무엇을 보자.
그래서 SRCS--가 보자 확인 이 hello6_keyboard.c입니다.
>> 아니, 오.
그래서 우리는 여기에 몇 가지 경고를 받았습니다.
그리고 그것은 단순히 우리가하지 않았다 말하는 모든 단일 가능한 종류를 확인
이벤트.
그 때문에, 괜찮아요 그 중 236 정도가있다.
그래서 나는 그 경고를 무시하는거야.
그것은 여전히​​ 잘 컴파일합니다.
그래서 게임을하는거야.
그것은 움직이지 않고있다.
그러나 지금, 나는 내 키보드에 매쉬 때, 나는, 여기에 몇 가지 WASD 이동을 할 수
나뿐만 아니라 내 화살표 키를 사용합니다.
그리고 난에도 불구하고, 통지 바로 지금 누르면,
그것은, 창 밖으로 않을거야 나는 모든 프레임에 재설정 때문이다.
그래서 꽤 깔끔한입니다.
당신과 마리오 주위를 이동 상상할 수 일부 화살표 키 또는 그런 일.
그리고 네, X가 작동 않습니다.
>> 우리는거야 그래서 최종 파일 hellow7_mouse, 보는.
이 마우스 입력을 얻기에 관하여이다.
우리는 이것에 따라서 수학 헤더를 가져,
우리가 할 겁니다 때문에 여기에 수학의 약간.
동일한 오래된, 동일한 오래된 물건, 대상, 전에 알, 이전과 동일합니다.
음,이 흥미 롭다.
그래서 우리는 검사에 돌아온다 SDL에 대한 이벤트를 종료합니다.
그 이유는 무엇입니까?
그래서 당신은 이벤트에서 마우스 입력을받을 수 있습니다.
마우스가 움직일 때처럼, 당신은에 대한 이벤트를 얻을.
마우스 버튼이 눌려지면, 당신은에 대한 이벤트를 얻을 수 있습니다.
>> 그러나, 약간 간단한 다른있다 아마도, 마우스 입력을 얻기를위한 API.
그리고 단순히 SDL GET 마우스 상태입니다.
그래서 x의 지능과 커서 위치에 대한 Y.
나는 SDL_GetMouseState로 전달 어떤이를 설정합니다.
그리고이있는 위치입니다 윈도우의 좌표계.
그래서 질량은 왼쪽 상단에있는 경우 창, 즉 0, 0을 것이다.
>> 자, 내가 할거야 것은 내가 갈거야입니다 벡터 수학의 조금 할 수 있습니다.
난 당신이하지 생각했던 내기 CS50에서 그것을 볼 수 있지만, 여기 있습니다.
나는 약간의 벡터를 할거야 수학은 벡터를 얻을 수 있습니다
커서를 이미지에서.
그래서 내가 왜해야합니까 여기 빼기?
글쎄, 난 그냥 DEST를 사용한 경우 .- 그래서 나는 마우스 X를 번역해야
반 폭으로 y를 화상의 높이
난의 중심을 원하기 때문에 이미지, 마우스 향해 수
화상의 기원하지.
>> 그래서 내가 이야기하고 있는지 확인하기 위해 단지 여기에서 이미지의 중앙에 대한.
그 다음 우리는 델타 x와 y를 얻을 수있는 타겟으로부터의 차이다
이미지의 실제 위치이다.
그리고 우리를 얻을 수 있습니다 여기에 거리있는
피타고라스가 될 것입니다 정리, X의 제곱근
배 X 더하기 Y 시간은 Y.
>> 지금 지터를 방지하기 위해, 내가 표시 할 수 있습니다 당신 내가 이렇게하지 ​​않으면이 무엇을,
경우 커서 사이의 거리 이미지 센터가 5 개 미만이고
난 그냥 이미지를 이동하지 않을거야.
그렇지 않으면, 우리는 속도를 설정합니다.
그리고 우리가 있도록 설정 속도는 항상 일정 할 것이다.
그리고 모든의 최종 결과 이 수학 이미지이다
커서를 향해 이동하는 것입니다.
>> 지금, 그것은 밝혀 SDL_GetMouseState,
설정 이외에 x와 여기에 y를 인수,
또한 해당하는 int를 돌려줍니다 마우스 버튼의 상태.
그래서 우리는 그것을 읽을 수 없습니다 직접, 그러나 우리는 할 수
하나의 이러한 매크로를 사용 비트 연산자, 그 무서운,
단지 비트합니다.
그래서 우리는 결과 인 버튼 말 우리 SDL_GetMouseState의, 그 경우
비트와,이 매크로 여기에, SDL_BUTTON_LEFT.
>> 그래서 간단하게 해결하는 것입니다 해당 비트 맵
마우스 왼쪽 버튼을 누르면된다.
그리고 비트 경우 및 발생 그건
의미하지 제로, 왼쪽 버튼을 누르면했다,
우리는 실제로 부정거야 두 X 및 Y 속도,
이는 단지 이미지 폭주를 만들 것입니다.
업데이트 위치.
충돌 탐지는, 그것을 본 모든 전에, 렌더링, 모든 권리.
현실을 만들어 보자.
그래서 당신은 SRCS = hello7_mouse.c을 얻었다.
큰.
오류가 없습니다.
그리고 게임.
>> 그래서 여기 내 마우스가 있습니다.
그리고 이미지가 참 내 마우스를 쫓는.
이제 게임에서 당신은 아마 만들 이 적의 추격처럼
당신의 작은 문자 또는 무엇이든.
그러나 여기에서 우리는이 이미지는 마우스를 쫓는.
그리고 클릭, 마우스 이미지를 쫓는 시작
화상은 멀리 마우스에서 실행.
그래서 꽤 멋지다.
그리고주의 사항을 다시 거기 여기에 여전히 충돌 감지.
>> 그래서 마지막 작은입니다 데모 여기 설정했습니다.
그리고 이제 한 가지 더 살펴 보자.
그래서 다시 여기에,이 지터를 언급했다.
괜찮아.
거리가 5 개 미만의 픽셀한다면, 나는 0으로 x와 y 속도를 설정했다.
우리가 제거하면 어떻게됩니까?
그래서 난 그냥 이렇게하는거야.
이 끔찍한 스타일을 용서하십시오, 그러나 우리는 올바른 코드를 댓글을 달았습니다.
그래서 그 내용을 저장하고 할거야 그것을 확인하기 전에에서 동일한 명령.
>> 괜찮아.
그리고 지금은 어떻게됩니까?
좋다.
우리는 여전히 다음과 같은 것 직전 같은 마우스,
그러나 우리가 마우스에 도착하면, 우리는이 총 지터를 가지고있다.
거기에 무슨 일이야?
글쎄, 우리의 벡터 수학, 우리가 있었던 기억
사이의 거리를 고려 커서 이미지의 중심?
글쎄, 그건 접근로 0, 우리는 점점 시작
미친 행동의 종류 등 여기서 이미지가 일종의입니다
커서 주위에 진동 등을들 수있다.
그리고이 지터를 생성합니다.
그리고 정말 추한.
그리고 당신은 아마하지 않습니다 당신의 게임이 그 일을 할,
그것을하지 않는 특수 효과의 일종이다.
>> 우리가 왜 그렇게 그건 그냥이 임의
우리가 어디라고, 다섯 픽셀의 차단 이 다섯 픽셀 내에 있다면, 우리는 좋은입니다.
우리는 더 이상 이미지를 이동할 필요가 없습니다.
그래서 거기에 무슨 일이 일어나고 있는지입니다.
>> 그래서 꽤 많이 있습니다.
이제 만드는 방법을 알고 창에서 이미지를로드,
창에 이미지를 그릴 수 키보드 입력, 마우스 입력을 얻을,
다른 한 무리가있다 입력 당신은 않을 것
당신은 단지를 보낼 경우 얻을하는 방법을 알고 설명서를보고 몇 분 거리에 있습니다.
그래서 당신이 실제로이 꽤 지금 귀하의 처분에 몇 가지 도구
본격적인 게임을 작성합니다.
>> 이제 모든 게임은 어떤 오디오를 필요 하지만 오디오 설명서
또한 아주 좋은 것입니다.
그리고 만약 내기 기꺼이 당신은 모든 일을 이해
우리는 오늘에 대해 이야기 이미지, 표면,
다음 창 및 모든, 알아내는 오디오 API는 아니다
가는 나쁜합니다.
그래서 뵙기를 기대합니다 당신은 SDL로 무엇을 만들 수 있습니다.