php 편집기 Strawberry는 최신 Java 질문 및 답변 칼럼을 제공합니다. 이번 호에서는 Java에서 틱택토(tic-tac-toe) 게임을 처리하는 데 관련된 문제를 살펴봅니다. 초보자이든 숙련된 개발자이든 여기서는 Java에서 Tic-Tac-Toe 게임을 처리하기 위한 실용적인 팁과 솔루션을 찾을 수 있습니다. 이 흥미로운 주제에 대해 자세히 알아보고 Java 프로그래밍 분야의 기술을 향상시켜 보세요!
질문 내용
현재 간단한 tic-tac-toe 게임을 개발 중인데 두 가지 영역에서 문제가 발생했습니다.
배치 문제: x 및 o 기호가 그리드에 올바르게 배치되지 않았습니다. 위치는 무작위인 것 같은데 이유는 잘 모르겠습니다. 상자를 클릭할 때마다 해당 상자에 배치되지 않는 것 같습니다
마우스 클릭 문제: 왼쪽 클릭으로 x를 배치하고 오른쪽 클릭으로 o를 배치하도록 설정했지만 예상대로 작동하지 않는 것 같습니다.
현재 코드는 다음과 같습니다.
// Declare a 3x3 grid of TicTacToeBox objects TicTacToeBox[][] grid = new TicTacToeBox[3][3]; // gameStatus: // 0 - Display Home screen // 1 - Display Tic Tac Toe grid // 2 - Display Game over screen int gameStatus = 0; // Determine which player's turn it is int currentPlayer = 1; void setup() { size(600, 600); displayHomeScreen(); } void draw() { // Draw the appropriate screen based on gameStatus if (gameStatus == 1) { background(255); displayGrid(); } else if (gameStatus == 2) { background(0); displayGameOver(); } } void mousePressed() { // Check the gameStatus and respond to mouse clicks accordingly if (gameStatus == 1) { float boxSize = width / 3.0; int col = floor(mouseX / boxSize); int row = floor(mouseY / boxSize); // Check if the box is valid and empty if (isValidBox(row, col) && grid[row][col].symbol == ' ') { // Place X or O based on the mouse button and currentPlayer if (mouseButton == LEFT && currentPlayer == 1) { grid[row][col].symbol = 'X'; currentPlayer = 2; } else if (mouseButton == RIGHT && currentPlayer == 2) { grid[row][col].symbol = 'O'; currentPlayer = 1; } } } else if (gameStatus == 0 && mouseX > 250 && mouseX < 350 && mouseY > 250 && mouseY < 300) { // Transition to the game screen when PLAY is clicked gameStatus = 1; } } void displayGrid() { float boxSize = width / 3.0; // Loop through the grid and draw each TicTacToeBox for (int row = 0; row < 3; row++) { for (int col = 0; col < 3; col++) { if (grid[row][col] == null) { grid[row][col] = new TicTacToeBox(row, col, boxSize, ' '); } grid[row][col].draw(); } } } // Check if the row and column are clear to place boolean isValidBox(int row, int col) { return row >= 0 && row < 3 && col >= 0 && col < 3; } void displayHomeScreen() { // Display the home screen with instructions background(255); fill(0); textAlign(CENTER, TOP); textSize(50); text("Tic-Tac-Toe", width/2, 100); textSize(25); fill(0); text("Click PLAY to start", width/2, 200); noFill(); rect(250, 250, 100, 50); textSize(20); fill(0); text("PLAY", width/2, 265); } void displayGameOver() { // Display the game over screen with a prompt to play again fill(255, 0, 0); textAlign(CENTER, TOP); textSize(50); text("GAME OVER!", width/2, 100); textSize(25); fill(0, 0, 255); text("CLICK TO PLAY AGAIN", width/2, 200); } class TicTacToeBox { float x; float y; float boxSize; char symbol = ' '; TicTacToeBox(float x, float y, float boxSize, char symbol) { this.x = x; this.y = y; this.boxSize = boxSize; this.symbol = symbol; } void draw() { stroke(0); noFill(); rect(x * boxSize, y * boxSize, boxSize, boxSize); textAlign(CENTER, CENTER); textSize(32); fill(0); float symbolX = x * boxSize + boxSize/2; float symbolY = y * boxSize + boxSize/2; text(symbol, symbolX, symbolY); } }
Solution
다음 소스 코드는 마우스 누르기를 추적하는 3x3 그리드를 생성하기 위해 직사각형 클래스 배열을 사용하는 방법을 보여줍니다. 어쩌면 비슷한 기술이 게임에 사용될 수도 있습니다.
으아악추천: 그리드에는 2D 배열이 필요하지 않습니다. 1D 배열은 잘 작동하고 너무 복잡하지 않습니다. 그리드 클래스에 두 개의 부울(왼쪽 누르기 및 오른쪽 누르기)을 추가하고 기호 매개변수를 제거하겠습니다. 그리드 클래스의 "draw()" 메소드는 "display()"와 같은 이름으로 변경되어야 할 것입니다. "draw"는 혼동을 피하기 위한 처리의 키워드이기 때문입니다. displaygrid() 및 isvalidbox() 메서드는 아래 표시된 기술을 사용하여 안전하게 제거할 수 있습니다. 주요 코드 변경은 제대로 작동하지 않으므로 mousepressed()에서 이루어져야 합니다. 그리드의 각 상자를 반복하면 마우스 버튼 클릭이 올바르게 캡처됩니다. 이 시점에서 마우스 오른쪽 버튼을 클릭했는지 왼쪽 버튼을 클릭했는지 확인할 수 있으며 해당 부울을 "true"로 설정할 수 있습니다. 그러면 메인 "draw()"는 이 정보를 사용하여 "x" 또는 "o"를 그립니다. 많은 내용처럼 들리겠지만 이러한 변경 사항은 문제를 해결하는 한 가지 방법입니다. 수정된 소스 코드는 다음과 같습니다.
으아악위 내용은 Java 처리의 tic tac toe의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
