누구든 채팅창에 정답을 입력하면 된다!
복붙용 코드
import { world, system } from "@minecraft/server";
// 문제 목록
const questions = [
{ question: "마인크래프트 개발사 이름은?", answer: "모장" },
{ question: "마인크래프트 주인공 이름은?", answer: "스티브" },
{ question: "지금 보는 유튜브 채널 이름은?", answer: "스티브코딩" },
{ question: "지금 보는 유튜브 채널 이름은?", answer: "스티브코딩" },
// 추가 문제들을 필요에 따라 이어서 나열, 정답은 띄어쓰기까지 구분함
];
// 현재 진행 중인 게임 여부를 나타내는 변수
let isGameActive = false;
// 현재 진행 중인 문제의 인덱스
let currentQuestionIndex = 0;
// 현재 문제의 정보를 저장하는 변수
let currentQuestion = {};
// 플레이어가 맞추기 위해 입력한 메시지를 저장할 변수
let playerGuess = "";
// 게임 시작 함수
function startGame() {
// 게임이 이미 진행 중이라면 종료
if (isGameActive) {
return;
}
// 게임 시작
isGameActive = true;
currentQuestionIndex = 0;
askQuestion();
}
// 문제를 플레이어에게 제시하는 함수
function askQuestion() {
// 현재 문제 설정
currentQuestion = questions[currentQuestionIndex];
// 플레이어에게 문제 제시
world.getPlayers().forEach((player) => {
player.sendMessage(currentQuestion.question);
world.getDimension("overworld").runCommandAsync(`title @a subtitle ${currentQuestion.question}`)
world.getDimension("overworld").runCommandAsync(`title @a title ${currentQuestionIndex + 1}번 문제`)
});
}
// 플레이어가 메시지를 입력할 때마다 호출되는 이벤트 핸들러
world.afterEvents.chatSend.subscribe((event) => {
const player = event.sender;
const message = event.message;
// '시작'이라는 단어가 포함된 경우에 게임 시작
if (message === '시작') {
startGame();
return;
}
// 게임이 진행 중이라면 플레이어의 입력을 정답과 비교
if (isGameActive) {
playerGuess = message.trim();
// 정답이 맞는지 확인
if (playerGuess.toLowerCase() === currentQuestion.answer.toLowerCase()) {
// 맞았을 경우 축하 메시지 전송
world.getPlayers().forEach((player) => {
player.sendMessage(`정답입니다! 다음 문제로 진행합니다.`);
});
// 다음 문제로 이동
currentQuestionIndex++;
// 모든 문제를 푼 경우에는 게임 종료
if (currentQuestionIndex >= questions.length) {
world.getPlayers().forEach((player) => {
player.sendMessage(`게임이 종료되었습니다. 수고하셨습니다!`);
});
isGameActive = false;
} else {
// 다음 문제 제시
askQuestion();
}
}
}
// '종료'가 입력되면 게임 종료
if (message.includes('종료')) {
isGameActive = false;
playerGuess = "";
currentQuestionIndex = 0;
world.getPlayers().forEach((player) => {
player.sendMessage("게임이 종료되었습니다. 다시 시작하려면 '시작'을 입력하세요.");
});
}
});
🏆스크립트 API에 대해서 잘 모른다면 다음 글을 참고하세요! 🏆
https://stevecoding.tistory.com/2
- 🌟 게임을 시작하는 방법: "채팅창을 열어서 시작이라고" 메시지를 입력합니다.
- 🎮 1번 문제가 나오고 채팅창에 정답을 입력합니다.
- 🎮 모든 문제를 풀면 게임이 종료됩니다.
- 📚 문제 수정 및 추가: 코드를 수정하여 새로운 문제를 추가하거나 변경할 수 있습니다.
- ⚙️ 변수 설명: 이 코드에서 사용하고 있는 변수를 약속한 부분입니다.
- 🚀 게임 시작 함수: 변수 isGameActive이 참이면 게임을 종료하고 거짓이면 게임을 시작합니다.
- 📝 문제를 제시하는 함수: 저장된 문제 리스트를 순서에 맞게(questions[currentQuestionIndex] )변수 currentQuestion에 저장해서 보여줍니다.
- 📝 게임을 진행하는 코드: 플레이어의 채팅 메시지를 이벤트를 받아 코드가 조건에 맞게 실행
직접 영상을 통해 자세히 확인해보세요.
'마인크래프트 애드온 제작' 카테고리의 다른 글
블록을 부수는 이벤트 확인하기, 블록 부수면 점수가 올라간다! #애드온제작 (1) | 2023.12.08 |
---|---|
나만의 보상을 만들자! 루트테이블 사용 방법 #애드온제작 (0) | 2023.11.17 |
스크립트 api의 첫걸음, chatSend 채팅명령어 만들기 #애드온제작 (1) | 2023.11.14 |
스크립트 API로 본격적으로 애드온 제작하기 #애드온제작 (1) | 2023.11.14 |