커피 스크립트는 JavaScript로 컴파일하는 작은 작은 언어입니다. CoffeeScript를 작성하고 JavaScript로 컴파일하고 앱의 결과 JavaScript 파일을 사용하기 때문에 런타임에 해석이 없습니다. 적절한 커피 스크립트 구문과 함께 기능을 사용하여 CoffeeScript 내에서 JavaScript 라이브러리 (예 : jQuery)를 사용할 수 있습니다. 커피 스크립트는 프론트 엔드에 JavaScript와 백엔드에 JavaScript를 작성하는 데 사용할 수 있습니다.
키 테이크 아웃
커피 스크립트 효율성 : CoffeeScript는 JavaScript와 비교하여 문자가 36% 감소함으로써 필요한 코드의 양을 크게 줄여서 가독성 및 유지 보수를 향상시킵니다.
빠른 개발 : Coffeescript의 간결한 구문 및 변수의 자동 범위는 일반적인 오류를 방지하고 개발 시간을 가속화합니다.
통합 및 컴파일 : 커피 스크립트는 jQuery와 같은 JavaScript 라이브러리와 JavaScript로 컴파일하여 프론트 엔드 및 백엔드 개발 모두에서 사용할 수 있도록합니다.
게임 구현 세부 사항 : TIC-TAC-TOE 게임은 Coffeescript의 단순화 된 구문 및 DOM 조작을위한 jQuery를 통해 관리되는 보드, 플레이어 통계 및 게임 상태 업데이트와 함께 명확한 구조를 사용합니다.
Coffeescript와 함께 향상된 기능 : 루프, 조건부 및 로컬 스토리지와 같은 기능을 활용하여 게임 상태를 관리하고, 플레이어 이동 및 채점을 관리하여 웹 프로젝트에서 커피 스크립트의 실제 적용을 보여줍니다.
왜 커피 스크립트?
코드가 적습니다
Coffeescript의 작은 책에 따르면 Coffeescript의 구문은 JS가 약 33%에서 50% 정도로 작동하도록 입력 해야하는 문자의 양을 줄입니다. CoffeeScript (제목에서 이미 추측했을 것입니다)를 사용하여 생성 된 간단한 Tic-Tac-Toe 게임을 제시 할 예정이며 Raw Coffeescript 형식에는 4963자가 포함되어 있지만 컴파일 된 JavaScript 코드에는 7669자가 포함되어 있습니다. 이는 2706 자 또는 36%의 차이입니다!
더 빠른 개발 시간
더 짧고 오류가 적게 쓰기 시작하기 때문에 (예 : 변수는 자동 스코핑되어 있기 때문에 VAR을 생략하여 우연히 글로벌을 덮어 쓸 수 없음) 프로젝트를 더 빨리 완료 할 수 있습니다. Coffeescript의 Terse Syntax도 읽기 쉬운 코드와 궁극적으로 유지하기 쉬운 코드를 만듭니다.
시작하기
이 기사에서는 CoffeeScript와 jQuery가있는 간단한 Tic-Tac-Toe 게임을 구축 할 것입니다. 실제 사례를 검토하기 전에 구문을 읽고 싶다면 Sitepoint에서 CoffeeScript 기사로 JavaScript 개발을 가속화하는 것이 좋습니다. 또한 NPM (노드 패키지 관리자)을 통해 CoffeeScript를 설치하는 방법에 대해서도 자세히 설명합니다.
그 어느 때보 다이 튜토리얼의 모든 코드는 Github에서 사용할 수 있으며 튜토리얼의 끝에서 데모를 사용할 수 있습니다.
가장 일반적인 커피 스크립트 명령은 다음과 같습니다. Coffee -C Filename은 CoffeeScript 파일을 동일한 이름으로 파일로 컴파일하지만 .js Extension (CoffeeScript 파일은 일반적으로 .coffee extension이 있습니다).
Coffee -CW Filename은 파일의 변경 사항 (파일을 저장할 때마다)을보고 컴파일합니다.
Coffee -CW FolderName/ 폴더의 모든 .coffee 파일의 변경 사항을 확인하고 변경 사항이있을 때 동일한 디렉토리로 컴파일합니다.
마지막으로, .coffee 파일이있는 폴더에서 .js 파일 만 포함 된 폴더로 CoffeeScript를 컴파일하는 것이 편리합니다.
Coffee -o JS / -CW / Coffee
터미널에 있지 않은 경우 GUI와 함께 도구를 사용하여 CoffeeScript 파일을 처리 할 수 있습니다. 예를 들어, 무료 무제한 시험에서 Prepros를 시도 할 수 있습니다 (좋아한다면 구매해야하지만). 아래 이미지는 다음과 같은 옵션 중 일부를 보여줍니다.
당신은 prepros가 당신을 위해 모든 작업을 수행한다는 것을 알 수 있습니다. 그것은 당신의 .coffee 파일을 JS로 컴파일 할 수 있도록 감시자를 설정하고, 코드를 조정/압축 할 수있는 uglify js를 사용할 수 있습니다. 변수를 자동으로 망칠 수 있습니다. 그리고 그것은 아이스 커피 스크립트를 지원합니다. PREPROS는 Less 및 Sass 및 Jade와 같은 템플릿 엔진과 같은 CSS 전 처리기에도 사용될 수 있습니다.
게임
마크 업부터 시작하겠습니다 :
게임의 인터페이스는 다음으로 구성됩니다
게임을 간단히 설명하는 헤더
3 × 3 사각형이 위치 할 보드의 ID가있는 div 요소
게임 상태가 표시되는 경고 클래스가있는 div 요소
일반 플레이어 통계와 함께 X와 O를 플레이하는 사람을 보여줄 알림 클래스가있는 div 요소.
게임이로드 될 때만 표시되는 양식 및 플레이어가 이름을 입력하도록 프롬프트 할 때만 표시됩니다.
모범 사례에 따라 jQuery와 앱 진드기를 만드는 스크립트는 닫는 바디 태그 전에로드됩니다.
스타일링
CSS를 사용하여 관련된 9 개의 사각형이 각 사각형을 떠 다니고 4 번째 사각형을 제거하여 3 × 3 그리드에 나타날 수 있습니다. .
우리는 또한 클래스 X 또는 O가 있는지 여부에 따라 제곱에 다른 색상을 추가 할 수 있습니다 (JavaScript를 사용하여 추가).
Coffeescript in action
참조를 위해 여기에서 메인 커피 스크립트 파일을 찾을 수 있습니다.
당신은 우리의 tic-tac-toe 앱이 $->로 시작하는 것을 볼 수 있습니다. 이것은 dom이 준비되었을 때 코드를 실행하는 jQuery의 함수의 속기와 동일합니다 : $ (function () {...});. 커피 스크립트는 세미콜론과 괄호에 의존하는 것이 아니라 들여 쓰기에 의존합니다. -> CoffeeScript에 함수를 정의하고 다음 줄에서 기능 본문을 시작하고 두 개의 공간으로 몸을 들여 보내십시오.
다음으로, 우리는 tic이라는 객체 자체가 데이터라는 객체를 포함하는 객체를 만듭니다. 속성을 올바르게 들여 보내는 한 객체를 만들 때 버팀대 나 쉼표가 의무적이지 않음을 알 수 있습니다.
턴 속성은 게임에서 취한 총 턴 수를 유지합니다. 우리는 그것이 짝수 또는 고르지 않은 숫자를 보유하고 있는지 확인할 수 있으며 그런 식으로 그것이 X의 회전인지 또는 O.
X 및 O 속성은 객체이며 게임에 중요한 세 축에서 수평, 수직 및 대각선의 X 또는 O의 수와 관련된 데이터를 포함합니다. 확인 방법을 통해 모든 이동마다 업데이트되어 보드에서 X와 O의 분포를 나타냅니다. Checkend 메소드는 Checkwin에 전화하여 승자가 있는지 확인합니다.
그 후 우리는 TIC 객체 내부에 모든 것을 얻을 수있는 메소드를 가지고 있습니다.
javaScript 키워드에 컴파일하는 @의 사용을 확인하십시오. 초기화의 첫 번째 속성에 설명 된 바와 같이, 속성 또는 메소드를 설정하거나 호출 할 때 @ 키워드 다음에 점을 건너 뛸 수 있습니다.
방법에 합리적인 이름을 부여함으로써, 우리는 그들이하고있는 일에 대한 공정한 아이디어를 가지고 있습니다.
<span><span><span><div</span> class<span>="wrapper"</span>></span>
</span> <span><span><span><header</span> class<span>="text-center"</span>></span>
</span> <span><span><span><h1</span>></span>Tic Tac Toe<span><span></h1</span>></span>
</span> <span><span><span></header</span>></span>
</span>
<span><span><span><div</span> id<span>="board"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> class<span>="alerts welcome"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> class<span>="notifications"</span>></span><span><span></div</span>></span>
</span>
<span><span><span><form</span> action<span>=""</span> method<span>="POST"</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span><span><span><span></div</span>></span>
</span>
<span><span><span><script</span> src<span>="jquery.min.js"</span>></span><span><span></script</span>></span>
</span><span><span><span><script</span> src<span>="logic/app.js"</span>></span><span><span></script</span>></span></span> 로그인 후 복사
로그인 후 복사
setplayernames는 입력에서 사용자가 입력 한 값을 데이터 객체에 저장합니다.
검색자는 LocalStorage에서 플레이어의 통계를 검색하여 데이터 객체에 설정합니다.
할당 론은 누가 X를 플레이하고 누가 플레이하는지를 결정합니다.
준비 보드는 양식을 숨기고, 알림을 제거하고, 보드를 비우고 9 개의 빈 사각형으로 채 웁니다.
addListeners는 이벤트 리스너를 첨부하여 플레이어에게 응답 할 수 있습니다.
다이빙 더 깊은
이 방법 중 몇 가지를 더 자세히 살펴 보겠습니다.
<span><span>.square:nth-of-type(<span>3n + 1</span>)</span> {
</span> <span>clear: both;
</span><span>}</span> 로그인 후 복사
로그인 후 복사
로그인 후 복사
여기서 우리는 9 번 반복하고 그것을 채우기 위해 빈 보드에 사각형의 클래스를 가진 9 개의 div를 추가합니다. 이것은 CoffeeScript를 통해 조건 자체를 작성하기 전에 한 줄 루프를 작성하고 루프 본문을 선언 할 수있는 방법을 보여줍니다.
커피 스크립트를 사용하면 문자열 보간을 허용하여 가독성을 높이고 복잡성과 코드 길이를 줄입니다. 문자열 내에 #{}를 추가하고 버팀대 내의 함수 호출에서 변수 또는 반환 값을 삽입 할 수 있습니다.
addnotification 방법은 CoffeeScript에서 매개 변수를 정의하는 방법을 보여줍니다. 화살표 앞에 (->)을 씁니다
PHP와 유사한 매개 변수에 대한 기본값을 제공 할 수 있습니다.<span><span><span><div</span> class<span>="wrapper"</span>></span>
</span> <span><span><span><header</span> class<span>="text-center"</span>></span>
</span> <span><span><span><h1</span>></span>Tic Tac Toe<span><span></h1</span>></span>
</span> <span><span><span></header</span>></span>
</span>
<span><span><span><div</span> id<span>="board"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> class<span>="alerts welcome"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> class<span>="notifications"</span>></span><span><span></div</span>></span>
</span>
<span><span><span><form</span> action<span>=""</span> method<span>="POST"</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span><span><span><span></div</span>></span>
</span>
<span><span><span><script</span> src<span>="jquery.min.js"</span>></span><span><span></script</span>></span>
</span><span><span><span><script</span> src<span>="logic/app.js"</span>></span><span><span></script</span>></span></span> 로그인 후 복사
로그인 후 복사
기본 매개 변수가있는 함수가 컴파일되면 다음으로 변환됩니다.
마지막으로, AddListeners 메소드 : 로 돌아가 봅시다
여기서 Coffeescript는 No, Yes, Off 및 On과 같은 진실 및 거짓 가치를 나타내는 추가 키워드를 제공합니다. 또한! ==, ===, &&,! ISNS, IS, 그리고 그에 따라 사용하지 않는 사용을 대표 할 수 있습니다. <span><span>.square:nth-of-type(<span>3n + 1</span>)</span> {
</span> <span>clear: both;
</span><span>}</span> 로그인 후 복사
로그인 후 복사
로그인 후 복사
당신은 if ... then ... else ... 구문. 를 사용하여 읽기 쉬운 단일 라인 조건부를 만들 수 있습니다.
게임의 메커니즘
whorse method checkend는 플레이어가 움직일 때마다 승자가 있는지 확인합니다. 보드 위에 반복하고 X와 O에 속하는 제곱을 계산하여이를 수행합니다. 먼저 대각선 축을 확인한 다음 수직, 수평을 확인합니다.
보시다시피, 이것은 또 다른 편리한 커피 스크립트 기능을 사용합니다.
<span><span>.square.x</span> {
</span> <span>color: crimson;
</span><span>}
</span>
<span><span>.square.o</span> {
</span> <span>color: #3997ff;
</span><span>}</span> 로그인 후 복사
이것은이 순서로 0, 1 및 2에 해당하는 행을 세 번 루프합니다. 또는 [0 ... 2] (독점 범위)는 단지 두 개의 반복만으로 0과 1에 해당하는 행을 설정합니다.
수평 점검에서 우리는 루프의 일부가 무엇인지, 루프 외부에있는 내용을 결정하는 데 어떻게 들여 쓰기가 중요한지 다시 알 수 있습니다. 체크 필드 호출은 내부 루프 안에 있습니다. .
이것은 Checkfield의 모습입니다 :
이 방법은 사용을 보여줍니다. 조건부의 변수 옆에 삽입 될 때 키워드 :
는 분명히 매우 편리합니다.
Checkfield 메소드가하는 일은 클릭 한 제곱의 클래스 이름에 따라 X 또는 O 속성의 적절한 축에 하나를 추가하는 것입니다. AddListeners 메소드에서 사용자가 빈 보드 정사각형을 클릭하면 클래스 이름이 추가됩니다.
이것은 우리를 Checkwin 메소드로 데려옵니다.이 방법은 플레이어 중 하나가 게임에서 승리했는지 확인하는 데 사용됩니다.
CoffeeScript에서는 ... 배열에서 배열 값을 루프하기 위해 사용할 수 있고 객체의 특성을 통해 루프를위한 객체 값을 사용할 수 있습니다. Checkwin은 이것을 사용하여 X 및 O 객체 내부의 모든 속성을 확인합니다. 그들 중 하나라도 3보다 큰 숫자를 보유하고 있다면, 우리는 승자가 있고 게임은 끝나야합니다. 이 경우, 우리는 LocalStorage를 통해 플레이어의 결과를 지속하는 AddToscore 방법을 호출합니다.
로컬 스토리지에 관한 단어
LocalStorage는 웹 스토리지 사양의 일부이며 브라우저 지원이 매우 좋습니다. 이를 통해 사용자의 컴퓨터에 데이터 (쿠키와 유사)를 저장하고 원할 때마다 액세스 할 수 있습니다.
예를 들어 일반 객체의 속성과 마찬가지로 여러 가지 방법으로 API에 액세스 할 수 있습니다.
로컬 스토리지는 항상 문자열을 저장하므로 객체 나 배열을 저장하려면 배열/오브젝트를 저장할 때 json.stringify를 사용해야합니다. 우리의 AddToscore 방법은이 사실을 활용합니다 :
커피 스크립트 (json.stringify)에서 괄호를 생략 할 수있는 방법을 보여줍니다.
다음에 몇 가지 유틸리티 방법이 있습니다. 우리는 빈스토라 지바르를 사용하여 특정 수평 행 또는 대각선의 내용을 지우고 있습니다. 보드에 두 개의 대각선이 있고 Chekend 메소드 내부에는 두 개의 대각선에 대해 동일한 데이터 속성을 사용하기 때문에 필요합니다. 따라서 두 번째 대각선을 확인하기 전에 속성을 지워야합니다. 수평 행도 마찬가지입니다
플레이어 이름을 얻는 <span><span><span><div</span> class<span>="wrapper"</span>></span>
</span> <span><span><span><header</span> class<span>="text-center"</span>></span>
</span> <span><span><span><h1</span>></span>Tic Tac Toe<span><span></h1</span>></span>
</span> <span><span><span></header</span>></span>
</span>
<span><span><span><div</span> id<span>="board"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> class<span>="alerts welcome"</span>></span><span><span></div</span>></span>
</span> <span><span><span><div</span> class<span>="notifications"</span>></span><span><span></div</span>></span>
</span>
<span><span><span><form</span> action<span>=""</span> method<span>="POST"</span>></span>
</span> ...
<span><span><span></form</span>></span>
</span><span><span><span></div</span>></span>
</span>
<span><span><span><script</span> src<span>="jquery.min.js"</span>></span><span><span></script</span>></span>
</span><span><span><span><script</span> src<span>="logic/app.js"</span>></span><span><span></script</span>></span></span>
게임 시작시 플레이어 이름이있는 양식이 제출되면 기본 조치를 방지하고 JavaScript를 사용하여 제출물을 처리 할 수 있습니다. 빈 이름이 있는지 또는 두 이름이 모두 동일했는지 확인하고 그렇다면 친숙한 경고를 표시합니다. 그렇지 않으면 tic.initialize (). 를 호출하여 게임을 시작합니다
최종 라인은 이벤트 대표단을 사용하여 클래스 플레이 가인으로 클릭에 응답하는 요소를 갖습니다. 이 요소는 게임이 완료되면이 요소가 페이지에만 추가되므로 이벤트 대표가 필요합니다. DOM이 처음 렌더링되면 존재하지 않습니다.
모든 것을 합쳐
그리고 그게 다야. 150 줄 미만의 커피 스크립트에서 우리는 작업 게임이 있습니다. 잊지 마십시오. github 에서이 자습서에서 코드를 다운로드 할 수 있습니다.
Codepen에서 sitepoint (@sitepoint)의 펜 tic-tac-toe를 참조하십시오
<span><span>.square:nth-of-type(<span>3n + 1</span>)</span> {
</span> <span>clear: both;
</span><span>}</span> 로그인 후 복사
로그인 후 복사
로그인 후 복사
결론
이 튜토리얼이 커피 스크립트에 대한 지식을 강화하고 jQuery와 CoffeeScript가 어떻게 함께 작동 할 수 있는지 보여 주었으면합니다. 게임을 개선하기 위해 할 수있는 일이 많이 있습니다. 예를 들어 보드를 표준 3 × 3 치수와 다르게 만드는 옵션을 추가 할 수 있습니다. 플레이어가 기계와 경기를 할 수 있도록 간단한 AI를 구현하거나 게임에서 폭탄을 구현할 수 있습니다 (예 : 임의의 게임 이동에서 임의의 X 또는 O를 추가하여 플레이어가 영광을 위해 싸우는 동안. 커피 스크립트 및 Tic TAC 발가락 게임에 대한 자주 묻는 질문 (FAQ)
Tic Tac Toe 게임을 만들기 위해 CoffeeScript로 시작하려면 어떻게 될까요? CoffeeScript로 시작하려면 Tic Tac Toe 게임을 만들려면 먼저 커피 스크립트를 기본적으로 이해해야합니다. Coffeescript는 JavaScript로 컴파일하는 작은 언어입니다. 자바 스크립트의 기발한 부분을 피하는 더 나은 구문을 제공하며 여전히 언어의 유연성과 아름다움을 유지합니다. 공식 웹 사이트 또는 기타 온라인 리소스에서 CoffeeScript의 기본 사항을 배우는 것으로 시작할 수 있습니다. 기본적인 이해가 나면 Tic Tac Toe 게임 코딩을 시작할 수 있습니다. CoffeeScript 컴파일러를 사용하여 코드를 작성한 다음 JavaScript로 컴파일 할 수 있습니다. CoffeeScript에서 Tic Tac Toe 게임의 기본 구성 요소는 무엇입니까? 기본 구성 요소는 무엇입니까? CoffeeScript의 Tic Tac Toe 게임은 다른 프로그래밍 언어와 유사합니다. 여기에는 게임 보드, 플레이어 및 게임 논리가 포함됩니다. 게임 보드는 플레이어가 자국을 배치하는 3 × 3 그리드입니다. 플레이어는 보통 두 명이며, 차례로 점수를 게임 보드에 놓습니다. 게임 논리에는 플레이어의이기는 방법, 게임이 무승부 일 때 어떻게되는지 등 게임의 규칙이 포함되어 있습니다.
커피 스크립트에서 Tic Tac Toe 용 게임 보드를 만드는 데 3 × 3 행렬을 정의하는 것이 포함됩니다. 배열 배열을 사용하여 수행 할 수 있습니다. 각 내부 배열은 게임 보드의 행을 나타내고 내부 배열의 각 요소는 게임 보드의 셀을 나타냅니다. 처음에는 모든 세포가 비어 있습니다. 플레이어가 움직일 때, 매트릭스의 해당 셀이 플레이어의 마크로 업데이트됩니다. 커피 스크립트에서 플레이어 움직임을 처리 할 수있는 방법? 커피 스크립트에서 플레이어를 처리하면 게임 업데이트가 포함됩니다. 보드 및 게임이 이겼는지 확인하십시오. 플레이어가 움직일 때 플레이어의 마크로 게임 보드의 해당 셀을 업데이트해야합니다. 그런 다음 플레이어가 게임에서 승리했는지 확인해야합니다. 이것은 가능한 모든 셀의 셀 조합을 확인하여 수행 할 수 있습니다.
플레이어가 CoffeeScript에서 게임에서 승리했는지 확인하려면 어떻게해야합니까? 플레이어가 커피 스크립트에서 게임에서 승리했는지 확인합니다. 가능한 모든 셀 조합을 확인합니다. 8 개의 가능한 승리 조합이 있습니다 : 3 행, 3 개의 열 및 2 개의 대각선. 각 조합을 확인하여 조합의 모든 셀에 동일한 마크가 있는지 확인할 수 있습니다. 이는 현재 플레이어의 표시입니다. 그렇다면 플레이어가 게임에서 승리했습니다.
커피 스크립트에서 추첨을 어떻게 처리 할 수 있습니까? 커피 스크립트를 드로우는 것은 게임 보드의 모든 셀이 표시되었는지 확인하는 것이 포함되어 있습니다. 플레이어는 게임에서 승리했습니다. 모든 셀이 표시되고 플레이어가 승리하지 않으면 게임은 무승부입니다. 각 플레이어의 이동 후에는 이것을 확인할 수 있습니다. CoffeeScript 코드를 JavaScript로 컴파일하려면 CoffeeScript 코드를 JavaScript로 컴파일하는 방법은 CoffeeScript 컴파일러를 사용하여 수행 할 수 있습니다. Node.js 패키지 관리자 인 NPM을 사용하여 컴파일러를 설치할 수 있습니다. 일단 설치되면 Coffee Script Command를 사용하여 CoffeeScript 코드를 JavaScript로 컴파일하고 CoffeeScript 파일의 이름과 CoffeeScript 파일의 이름을 사용하여 CoffeeScript와 함께 jQuery를 사용할 수 있습니까? 예, 그렇습니다. CoffeeScript와 함께 jQuery를 사용할 수 있습니다. Coffeescript는 JavaScript로 컴파일되므로 jQuery를 포함하여 JavaScript 라이브러리를 사용할 수 있습니다. jQuery를 사용하여 DOM을 조작하고, 이벤트를 처리하고, 애니메이션을 만들 수 있습니다. 커피 스크립트 코드를 디버깅하려면 어떻게해야합니까?
커피 스크립트 코드 디버깅 동일한 도구를 사용하여 수행 할 수 있습니다. JavaScript를 디버그하는 데 사용합니다. 대부분의 최신 브라우저에는 JavaScript 디버거가 포함 된 내장 개발자 도구가 제공됩니다. 이 디버거를 사용하여 코드를 통해 변수를 검사하는 등을 검사 할 수 있습니다. 원래 CoffeeScript 코드가 아닌 컴파일 된 JavaScript 코드를 디버깅 할 것입니다. CoffeeScript에 대해 자세히 알아볼 수있는 곳은 어디입니까? 공식 웹 사이트에서 커피 스크립트에 대해 자세히 알아볼 수 있습니다. 자세한 안내서, 언어 구문에 대한 참조 및 예제. Codecademy, Udemy 및 Coursera와 같은 웹 사이트에는 많은 온라인 자습서와 코스가 있습니다. 또한 실제 코드에서 배울 수있는 Github에서 많은 오픈 소스 커피 스크립트 프로젝트를 찾을 수 있습니다.
위 내용은 실용적인 커피 스크립트 : Tic-Tac-Toe 게임 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!