제조공정
| × | 1 | ||||
| × | 1 |
|
그림> 그림>
친애하는 친구, 또 다른 Arduino 튜토리얼에 오신 것을 환영합니다! 이 상세한 튜토리얼에서 우리는 Arduino Tic-Tac-Toe 게임을 만들 것입니다. 보시다시피 우리는 터치 스크린을 사용하고 있으며 컴퓨터와 게임을하고 있습니다. Tic-Tac-Toe와 같은 간단한 게임은 게임 프로그래밍 및 인공 지능에 대한 훌륭한 소개입니다. 이 게임에서는 인공 지능 알고리즘을 사용하지 않지만 더 복잡한 게임에서 인공 지능 알고리즘이 필요한 이유를 이해할 것입니다.
Arduino용 게임을 개발하는 것은 쉽지 않고 많은 시간이 필요합니다. 그러나 Arduino를 위한 간단한 게임을 만들 수 있습니다. 재미있고 인공 지능과 같은 고급 프로그래밍 주제를 탐색할 수 있기 때문입니다. 이것은 훌륭한 학습 경험이며 마지막에는 아이들을 위한 멋진 게임이 될 것입니다!
이제 이 프로젝트를 빌드해 보겠습니다.
1단계:모든 부품 가져오기
이 프로젝트를 빌드하는 데 필요한 부품은 다음과 같습니다.
<울>프로젝트 비용이 매우 저렴합니다. $15에 불과합니다.
이 프로젝트를 빌드하기 전에 여기에서 카드를 클릭하여 터치 디스플레이에 대해 준비한 비디오를 시청하십시오. 코드를 이해하고 터치 스크린을 보정하는 데 도움이 됩니다.
2단계:Arduino용 2.8" 터치 컬러 디스플레이 그림>
banggood.com에서 이 터치 스크린을 발견하고 일부 프로젝트에서 사용하려고 구매하기로 결정했습니다. 보시다시피 디스플레이는 저렴하며 가격은 약 $11입니다.
여기에서 받으세요.
디스플레이는 320x240 픽셀의 해상도를 제공하며 Arduino와의 연결을 매우 쉽게 만드는 방패로 제공됩니다. 보시다시피 디스플레이는 Arduino Uno의 거의 모든 디지털 및 아날로그 핀을 사용합니다. 이 실드를 사용할 때 프로젝트에 디지털 핀 2개와 아날로그 핀 1개만 남습니다. 다행히도 디스플레이는 Arduino Mega에서도 잘 작동하므로 더 많은 핀이 필요할 때 Arduino Uno 대신 Arduino Mega를 사용할 수 있습니다. 불행히도 이 디스플레이는 Arduino Due 또는 Wemos D1 ESP8266 보드에서 작동하지 않습니다. 실드의 또 다른 장점은 사용이 매우 간편한 마이크로 SD 슬롯을 제공한다는 것입니다.
3단계:프로젝트 빌드 및 테스트 그림> 그림>
화면을 Arduino Uno에 연결한 후 코드를 로드할 수 있고 재생할 준비가 됩니다.
먼저 "게임 시작" 버튼을 누르면 게임이 시작됩니다. Arduino가 먼저 재생됩니다. 그런 다음 화면을 터치하기만 하면 움직임을 재생할 수 있습니다. 그런 다음 Arduino는 이동 등을 수행합니다. 가로, 세로, 대각선으로 3개의 마크를 표시하는 데 성공한 플레이어가 게임에서 승리합니다. 게임이 끝나면 게임 오버 화면이 나타납니다. 그런 다음 다시 플레이 버튼을 눌러 게임을 다시 시작할 수 있습니다.
Arduino는 이 게임을 아주 잘합니다. 그것은 대부분의 게임에서 승리할 것입니다. 또는 당신이 아주 좋은 플레이어라면 게임은 무승부로 끝날 것입니다. 나는 의도적으로 인간 플레이어가 이길 수 있는 기회를 주기 위해 실수를 하도록 이 알고리즘을 설계했습니다. 게임 코드에 두 줄을 더 추가하면 Arduino가 게임을 잃는 것을 불가능하게 만들 수 있습니다. 그러나 2달러짜리 칩인 Arduino CPU가 어떻게 인간의 두뇌를 이길 수 있습니까? 우리가 개발한 프로그램이 인간의 두뇌보다 똑똑합니까?
4단계:게임 알고리즘 그림>
이 질문에 답하기 위해 제가 구현한 알고리즘을 살펴보겠습니다.
컴퓨터가 항상 먼저 재생됩니다. 이 결정만으로도 Arduino가 게임에서 훨씬 쉽게 승리할 수 있습니다. 첫 번째 움직임은 항상 코너입니다. Arduino의 두 번째 움직임도 플레이어의 움직임에 전혀 신경 쓰지 않고 남은 모서리에서 무작위입니다. 이 시점부터 Arduino는 먼저 플레이어가 다음 이동에서 이길 수 있는지 확인하고 해당 이동을 차단합니다. 플레이어가 한 번의 이동으로 승리할 수 없는 경우 가능한 경우 코너 이동을 수행하거나 나머지 중 무작위로 이동합니다. 그게 다야, 이 간단한 알고리즘은 매번 인간 플레이어를 이길 수 있거나 최악의 시나리오에서 게임이 무승부로 이어질 것입니다. 이것은 최고의 틱택토 게임 알고리즘은 아니지만 가장 간단한 알고리즘 중 하나입니다.
이 알고리즘은 Tic-Tac-Toe 게임이 매우 간단하기 때문에 Arduino에서 쉽게 구현할 수 있으며 쉽게 분석하고 해결할 수 있습니다. 게임 트리를 설계하면 몇 가지 승리 전략을 발견하고 코드로 쉽게 구현할 수 있습니다. 또는 CPU가 실시간으로 게임 트리를 계산하고 스스로 최선의 움직임을 선택하도록 할 수 있습니다. 물론 이 게임에서 사용하는 알고리즘은 게임이 매우 간단하기 때문에 매우 간단합니다. 우리가 체스를 위한 이기는 알고리즘을 설계하려고 하면 가장 빠른 컴퓨터를 사용해도 천 년 후에 게임 트리를 계산할 수 없습니다! 이와 같은 게임의 경우 다른 접근 방식이 필요하고 인공 지능 알고리즘과 엄청난 처리 능력이 필요합니다. 이에 대한 자세한 내용은 향후 동영상에서 확인할 수 있습니다.
5단계:프로젝트 코드
프로젝트 코드를 간단히 살펴보겠습니다. 코드를 컴파일하려면 세 개의 라이브러리가 필요합니다.
<울>보시다시피 이런 간단한 게임도 600줄 이상의 코드가 필요합니다. 코드가 복잡하므로 짧은 자습서에서 설명하지 않겠습니다. 아두이노 동작을 위한 알고리즘 구현을 보여드리겠습니다.
처음에는 무작위로 두 코너를 플레이합니다.
int firstMoves[]={0,2,6,8}; // 이 위치를 먼저 사용합니다. for(counter=0;counter<4;counter++) // 재생된 첫 번째 이동 수 계산 { if(board[firstMoves[counter]]!=0) // 첫 번째 이동은 누군가가 재생한 것입니다. { movePlayed++; } } do{ if(이동<=2) { int randomMove =random(4); int c=firstMoves[randomMove]; if (보드[c]==0) { 지연(1000); 보드[c]=2; Serial.print(firstMoves[randomMove]); 직렬.println(); drawCpuMove(firstMoves[randomMove]); b=1; } }코드>
다음으로, 각 라운드에서 플레이어가 다음 이동에서 이길 수 있는지 확인합니다.
int checkOpponent()
{ if(board[0]==1 &&board[1]==1 &&board[2]==0) return 2; else if(board[0]==1 &&board[1]==0 &&board[2]==1) return 1; else if (board[1]==1 &&board[2]==1 &&board[0]==0) return 0; else if (board[3]==1 &&board[4]==1 &&board[5]==0) return 5; else if (board[4]==1 &&board[5]==1&&board[3]==0) return 3; else if (board[3]==1 &&board[4]==0&&board[5]==1) return 4; else if (board[1]==0 &&board[4]==1&&board[7]==1) return 1; 그렇지 않으면 100을 반환합니다.}
그렇다면 대부분의 경우 해당 이동을 차단합니다. 우리는 인간 플레이어에게 승리할 기회를 주기 위해 모든 움직임을 차단하지 않습니다. 어떤 움직임이 차단되지 않았는지 찾을 수 있습니까? 이동을 차단한 후 남은 코너를 플레이하거나 무작위 이동을 합니다. 코드를 연구하고 자신만의 탁월한 알고리즘을 쉽게 구현할 수 있습니다. 항상 그렇듯이 이 튜토리얼에 첨부된 프로젝트 코드를 찾을 수 있습니다.
참고:Banggood는 두 개의 다른 디스플레이 드라이버가 있는 동일한 디스플레이를 제공하므로 위의 코드가 작동하지 않으면 initDisplay 기능을 다음으로 변경하세요.
initDisplay() 무효화{tft.reset();tft.begin(0x9341);tft.setRotation(3);}
Graphics.c TicTacToeEasy.ino
6단계:최종 생각 및 개선 사항
보시다시피 Arduino Uno로도 간단한 게임을 위한 탁월한 알고리즘을 구축할 수 있습니다. 이 프로젝트는 구축하기 쉽고 동시에 인공 지능 및 게임 프로그래밍에 대한 훌륭한 소개이기 때문에 훌륭합니다. 앞으로 더 강력한 Raspberry Pi를 사용하여 인공 지능으로 더 발전된 프로젝트를 만들도록 노력할 것이므로 계속 지켜봐 주시기 바랍니다! 이 프로젝트에 대한 귀하의 의견을 듣고 싶습니다.
아래에 의견을 게시하고 흥미롭다면 튜토리얼을 좋아하는 것을 잊지 마십시오. 감사합니다!
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">int firstMoves[]={0,2,6,8}; // 이 위치를 먼저 사용합니다.
for(counter=0;counter<4;counter++) // 처음으로 플레이한 움직임을 계산합니다. { if(board[firstMoves[counter]]!=0) // 첫 번째 움직임 누군가가 재생합니다. { movePlayed++; } } do{ if(이동<=2) { int randomMove =random(4); int c=firstMoves[randomMove]; if (보드[c]==0) { 지연(1000); 보드[c]=2; Serial.print(firstMoves[randomMove]); 직렬.println(); drawCpuMove(firstMoves[randomMove]); b=1; } }
int checkOpponent()
{ if(board[0]==1 &&board[1]==1 &&board[2]==0) return 2; else if(board[0]==1 &&board[1]==0 &&board[2]==1) return 1; else if (board[1]==1 &&board[2]==1 &&board[0]==0) return 0; else if (board[3]==1 &&board[4]==1 &&board[5]==0) return 5; else if (board[4]==1 &&board[5]==1&&board[3]==0) return 3; else if (board[3]==1 &&board[4]==0&&board[5]==1) return 4; else if (board[1]==0 &&board[4]==1&&board[7]==1) return 1; 그렇지 않으면 100을 반환합니다.}
제조공정
이 Arduino 터치 스크린 튜토리얼에서는 Arduino와 함께 TFT LCD 터치 스크린을 사용하는 방법을 배웁니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 이 튜토리얼에서는 세 가지 예제를 작성했습니다. 첫 번째 예는 초음파 센서를 이용한 거리 측정입니다. 센서의 출력 또는 거리가 화면에 인쇄되고 터치 스크린을 사용하여 센티미터 또는 인치 단위를 선택할 수 있습니다. 다음 예는 이 3개의 RGB 슬라이더를 사용하여 RGB LED를 제어하는 것입니다. 예를 들어 파란색 슬라이더를 움직
이 Arduino 프로젝트에서는 Arduino와 TFT 터치 스크린을 사용하여 스마트폰용으로 인기 있는 Flappy Bird 게임을 실제로 복제한 멋진 Arduino 게임을 만들 것입니다. 다음 동영상을 보거나 아래에 작성된 텍스트를 읽으면 작동 방식을 배울 수 있습니다. 개요 게임은 매우 간단하지만 흥미롭고 중독성이 있습니다. 터치 스크린을 사용하여 우리는 새를 제어하고 우리가 진행함에 따라 속도가 증가하는 움직이는 기둥을 피하려고 노력합니다. 또한 게임은 전원을 뽑더라도 최고 점수를 저장할 수 있습니다.[/column]