Wasm을 사용하여 Cpp에서 Tic Tac Toe 게임 만들기
5388 단어 cppgamedevopensourcewebassembly
시작하겠습니다.
1. 엠스크립튼 설치
Enscrypten은 C/C++ 코드를 JavaScript로 직접 변환하므로 .wasm 파일을 읽기 위해 글루 코드를 작성할 필요조차 없습니다. 이것은 구현보다는 논리에만 집중할 수 있는 충분한 유연성을 제공합니다.
둘째, C++ 파일에 작성된 함수를 JS 파일에 호출하는 측면에서 매우 직관적입니다. 코드를 자세히 살펴보면 이것을 볼 수 있습니다.
# Get the emsdk repo
git clone https://github.com/emscripten-core/emsdk.git
# Enter that directory
cd emsdk
Fetch the latest version of the emsdk (not needed the first time you clone)
git pull
# Download and install the latest SDK tools.
./emsdk install latest
# Make the "latest" SDK "active" for the current user. (writes .emscripten file)
./emsdk activate latest
# Activate PATH and other environment variables in the current terminal
source ./emsdk_env.sh
2. tic tac toe에 대한 로직 작성
우리는 3×3 tic-tac-toe 게임을 만들 것입니다. 당사의 게임 로직에는 다음이 포함됩니다.
ㅏ. 어떤 플레이어가 이겼는지 계산하기
비. 승자가 없는 경우 계산
씨. 보류 중인 이동 표시
프로그램은 다음과 같습니다.
#include <emscripten/bind.h>
#include <emscripten/val.h>
using namespace emscripten;
val tic_tac_toe() {
val board_values = val::global("BoardValues");
val moves_pending_label = val::global("movesPendingLabel");
val no_winner_label = val::global("noWinnerLabel");
val empty_block = val::global("emptyBlock");
bool moves_pending = false;
val solutions[8][3]= {
{ board_values[0][0], board_values[0][1], board_values[0][2]},
{ board_values[1][0], board_values[1][1], board_values[1][2]},
{ board_values[2][0], board_values[2][1], board_values[2][2]},
{ board_values[0][0], board_values[1][0], board_values[2][0]},
{ board_values[0][1], board_values[1][1], board_values[2][1]},
{ board_values[0][2], board_values[1][2], board_values[2][2]},
{ board_values[0][0], board_values[1][1], board_values[2][2]},
{ board_values[0][2], board_values[1][1], board_values[2][0]},
};
for ( int i = 0; i < 8; i++ ){
if((solutions[i][0] != empty_block) && (solutions[i][1] != empty_block) && (solutions[i][2] != empty_block)&& (solutions[i][0] == solutions[i][1]) && ( solutions[i][1] == solutions[i][2] )) {
return solutions[i][1];
} else if((solutions[i][0] == empty_block) || (solutions[i][1] == empty_block) || (solutions[i][2] == empty_block)){
moves_pending = true;
}
}
if (moves_pending) {
return moves_pending_label;
}
return no_winner_label;
}
EMSCRIPTEN_BINDINGS(my_module) {
function("tic_tac_toe", &tic_tac_toe);
}
3. C++ 파일을 .wasm 및 .js 파일로 변환하기 위한 빌드 명령
emcc --bind -o tic_tac_toe.js tic_tac_toe.cpp
이제 index.html, tic_tac_toe.js 및 tic_tac_toe.wasm 파일이 생성됩니다.
Emscripten 모듈 개체에서 사용할 수 있는 Embind에 의해 노출된 tic_tac_toe() C++ 함수를 기억하십시오.
그러나 tic_tac_toe()는 완전히 로드된 후에만 호출할 수 있습니다. 즉, 런타임(.js 글루 코드 및 .wasm 파일)이 초기화됩니다. 이를 위해 런타임이 준비되면 실행되는 onRuntimeInitialized 콜백을 사용합니다.
이제 플레이어가 셀을 클릭할 때마다 C++ 함수를 Module.tic_tac_toe()로 호출하여 적절한 결과를 반환합니다.
4. Live Server를 설치하여 변경 사항을 배포하고 확인합니다.
npm install -g live-server
5. 프로젝트 열기
python3 -m http.server 8080
브라우저로 이동하여 localhost:8080 또는 http://127.0.0.1:8080/을 입력합니다.
따라서 우리의 게임은 브라우저에서 플레이할 준비가 되었습니다. 두 명의 플레이어가 함께 플레이할 수 있습니다.
WebAssembly는 정말 놀랍고 이전에는 불가능했던 일을 가능하게 해주었습니다. 이 게임은 wasm과 함께 작업하는 첫 번째 단계가 될 수 있습니다.
이전에 만든 프로젝트를 확인하십시오.
참조:
블로그와 관련된 아이디어와 제안을 댓글로 남기고 유용하다고 생각되면 공유해 주세요.
의견 섹션에 질문을 작성하면 오류를 해결하는 데 도움이 됩니다.
Reference
이 문제에 관하여(Wasm을 사용하여 Cpp에서 Tic Tac Toe 게임 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aryank21/building-tic-tac-toe-game-in-cpp-using-wasm-43eo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)