@Islam777

Как сделать так, что бы вопросы не повторялись и из кандидатов выходил один рандомный челове?

Как сделать так, что бы вопросы не повторялись и после 4 вопросов из кандидатов(подходящих) выходил один рандомный человек, но если игрок отвечает что загадывал не этого человека то сделать так что при рандоме он больше не попался даже если подходит по характеристикам?

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link rel="stylesheet" href="/style/style2.css" />
  </head>
  <body>
    <section id="main-section">
      <div class="inner">
        <div class="wrapper">
          <div class="image">
            <img src="/images/1629612668416.jpg" alt="" />
          </div>
          <div class="script">
            <div class="question-1">
              <h1 class="question"></h1>
              <div class="answers">
                <button onclick="answFunc(true)">Да</button>
                <button onclick="answFunc(false)">Нет</button>
              </div>
            </div>
            <div id="here"></div>
          </div>
        </div>
      </div>
    </section>
  </body>
  <script src="/js/game.js"></script>
  <!-- <script src="/js/canvas.js"></script> -->
</html>


* {
  margin: 0;
  padding: 0;
}
body {
  background: #0b0c10; /* Make it white if you need */
  color: #fcbe24;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
    Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
  overflow-x: hidden;
}

#main-section {
  padding: 50px;
  text-align: center;
}
.inner {
  padding: 30px;
}
.wrapper {
  display: block;
  width: 100%;
  height: 100%;
}
.image {
  width: 100%;
}
.image img {
  user-select: none;
  width: 100%;
}

.question {
  font-size: 40px;
  color: rgb(121, 170, 60);
  margin: 30px 0;
}
button {
  background-color: #0b0c10;
  border: #86c232 solid 2px;
  border-radius: 3px;
  cursor: pointer;
  color: #c5c6c7;
  padding: 10px 15px;
  font-size: 20px;
  font-weight: 600;
  letter-spacing: 5px;
}


const questions = [
  "Это самец?",
  "Это девушка?",
  "Он(а) носит очки?",
  "Он(а) занимается спортом?",
  "У этого человека смуглая кожа?",
];

const people = [
  { name: "Егор", profile: [1, 0, 0, 1, 0] },
  { name: "Залина", profile: [0, 1, 0, 0, 0] },
  { name: "Валера", profile: [1, 0, 0, 1, 0] },
  { name: "Рафа", profile: [1, 0, 0, 1, 1] },
  { name: "Егор", profile: [1, 0, 0, 1, 0] },
  { name: "Ясмина", profile: [0, 1, 1, 0, 0] },
  { name: "Леша", profile: [1, 0, 0, 1, 0] },
  { name: "Полина", profile: [0, 1, 1, 0, 0] },
  { name: "Димаш", profile: [1, 0, 0, 1, 0] },
  { name: "Асылай", profile: [0, 1, 0, 0, 0] },
  { name: "Ислам М.", profile: [1, 0, 0, 1, 1] },
  { name: "Даурен", profile: [1, 0, 0, 1, 0] },
  { name: "Исмаил", profile: [1, 0, 0, 0, 0] },
  // { name: "Диана", profile: [, , , ,] },
  // { name: "Аида", profile: [, , , ,] },
  // { name: "Наташа", profile: [, , , ,] },
  // { name: "Камила", profile: [, , , ,] },
  // { name: "Лейла", profile: [, , , ,] },
  // { name: "Амина", profile: [, , , ,] },
  // { name: "Улжан", profile: [, , , ,] },
];

function SortArray(x, y) {
  if (x.name < y.name) return -1;
  if (x.name > y.name) return 1;
  return 0;
}
let s = people.sort(SortArray);
console.log(s);

const questionElement = document.querySelector(".question");

let questionIndex; // индекс текущего вопроса
function askQustion() {
  questionIndex = Math.floor(Math.random() * questions.length);
  questionElement.innerHTML = questions[questionIndex];
  return questions[questionIndex];
}

askQustion();

// TODO: принять ответ пользователя (true/false)

let i = 0;
function answFunc(answer) {
  const candidates = people
    .filter(({ profile }) => !!profile[questionIndex] === answer)
    .map(({ name }) => name)
    .join(", ");

  people.forEach((elem, ind) => {
    if (people[ind].profile[questionIndex] != answer) {
      delete people[ind];
    }
  });

  i++;
  if (i == 4) {
    document.getElementById("here").innerHTML = "Кандидаты: " + candidates;
  } else askQustion();
}
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы