- Привет, я делаю проект по палачу, используя только javascript, и я новичок. Я хочу сделать игру с палачом, в настоящее время у меня возникают проблемы, когда я угадываю слово, как когда пользователь угадывает алфавит. Он должен go в последовательности, например, слово для угадывания - это «кошка», в настоящее время игра делает так, что пользователь должен угадать «c» в качестве первого предположения, затем «а» в качестве второго предположения, затем t "в качестве третьего.
Я хотел бы сделать так, чтобы пользователь мог угадывать любой алфавит, не будучи последовательным. Слова взяты из файла csv
var readline = require("readline-sync");
class Word {
constructor(word, definition){
this.word = word
this.definition = definition
}
}
class WordCollection {
constructor(pool, words){
this.pool = [];
this.readFile();
}
readFile() {
const filePath = 'C:/FoP';
const filename = filePath + '/input.csv';
const fs = require('fs');
try {
const text =fs.readFileSync(filename, "UTF-8");
const textByLine = text.split('\r\n');
var wordline;
for (var i = 0 ; (i < textByLine.length) ; i++) {
wordline = textByLine[i].split(',');
this.pool.push(new Word(wordline[0],wordline[1]));
}
} catch(err) {;
console.log('file ' + " " + filename + " " + 'not found. Program terminated');
process.exit();
}
}
}
console.clear();
var numofwrong = 0;
var lettersremain;
var totallife = 9;
var lifelost = 0;
var answerArray=[];
var guess;
console.log("\n" + "-= Welcome to HangMan =-")
var namein = readline.question("\n" + "Please Enter Your Name :")
//Grab a random word from the array of words
var game = new WordCollection();
var wordrandom = game.pool[Math.floor(Math.random() * game.pool.length)];
var lastchosenword = wordrandom.word;
//console.log(wordrandom);
//Change letters into lowercase
var outputchosenword = wordrandom.word.toLowerCase();
console.log(outputchosenword)
// Convert the word to " _ "
var outputunderlineword = new Array(outputchosenword.length);
var checkoutputunderline = new Array();
for (i = 0; i < outputunderlineword.length; i++) {
outputunderlineword[i] = "_";
} console.log(outputunderlineword.join(" "))
//Display the Alphabets
var Alphabet = ['\nA', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M','\nN', 'O', 'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
console.log(Alphabet.join(' '))
var correctans=[];
for (var i = 0; i < outputunderlineword.length; i++) {
Enter = readline.question(namein + "'s guess (Enter 9 for lifelines or 0 to pass): ")
if (Enter == outputchosenword[i] || Enter.match(/[^a-zA-Z]/g)) {
console.log("Good Job! " + Enter + " is one of the letters")
correctans.push(Enter)
console.log(correctans)
}
else if (Enter !== outputchosenword[i] ) {
console.log("Sorry. " + Enter + " is not a part of the word.")
}
}
вывод при угадывании буквы (летучая мышь - слово, которое нужно угадать)
-= Welcome to HangMan =-
Please Enter Your Name :hi
bat
_ _ _
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
hi's guess (Enter 9 for lifelines or 0 to pass): b
Good Job! b is one of the letters
[ 'b' ]
hi's guess (Enter 9 for lifelines or 0 to pass): t
Sorry. t is not a part of the word.
hi's guess (Enter 9 for lifelines or 0 to pass): a
Sorry. a is not a part of the word.
вывод, когда алфавит в порядке
-= Welcome to HangMan =-
Please Enter Your Name :hi
bat
_ _ _
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
hi's guess (Enter 9 for lifelines or 0 to pass): b
Good Job! b is one of the letters
[ 'b' ]
hi's guess (Enter 9 for lifelines or 0 to pass): a
Good Job! a is one of the letters
[ 'b', 'a' ]
hi's guess (Enter 9 for lifelines or 0 to pass): t
Good Job! t is one of the letters
[ 'b', 'a', 't' ]
Пробовал вот так, но выдает ошибку
var correctans=[];
while (outputchosenword[i] !== Enter || (lifelost = 9)) {
Enter = readline.question(namein + "'s guess (Enter 9 for lifelines or 0 to pass): ")
if ((outputchosenword.includes(Enter) || Enter.match(/[^a-zA-Z]/g))) {
console.log("Good Job! " + Enter + " is one of the letters")
correctans.push(Enter)
console.log(correctans)
} else {
console.log("Sorry. " + Enter + " is not a part of the word.")
}
}
while (outputchosenword[i] !== Enter || (lifelost = 9)) {
^
ReferenceError: Enter is not defined
После попытки советов :) Это все, что пришло, я не уверен, что мне делать после этого. Типа застрял: \
while (lifelost <= totallife && !isEntireWordFound) {
function guessLetter(wordguess, enter){
if(wordguess.includes(enter)){
var regex = new RegExp(enter,"g");
return wordguess.replace(regex,"");
}
return wordguess;
}
wordguess = guessLetter(wordguess,enter);
console.log("after guessing 'h' word = ",wordguess);
var enter = readline.question(namein + "'s guess (Enter 9 for lifelines or 0 to pass): ")
if (outputchosenword.includes(enter)) {
console.log("Good Job! " + enter + " is one of the letters");
correctans.push(enter);
console.log(correctans);
}
else {
console.log("Sorry. " + enter + " is not a part of the word.");
lifelost++;
}
}