hhl_project/js/game.js

152 lines
4.5 KiB
JavaScript

// Function to show an element
function showElement(selector) {
const element = document.querySelector(selector);
if (element) {
element.style.display = 'block';
}
}
// Function to hide an element
function hideElement(selector){
const element = document.querySelector(selector);
if (element) {
element.style.display = 'none';
}
}
const customers = [
["#customer1 img", "#customer1-2 img", "#customer1-3 img"],
["#customer2 img", "#customer2-2 img", "#customer2-3 img"],
["#customer3 img", "#customer3-2 img", "#customer3-3 img"],
]
const RandomCustomerIndex = Math.floor(Math.random() * customers.length);
const qinshihuangs = [
'#qinshihuang1 img',
'#qinshihuang2 img',
'#qinshihuang3 img'
]
const RandomQinShiHuangIndex = Math.floor(Math.random() * qinshihuangs.length);
function checkAnswer(dishName){
var answer = answers[QAlist[currentIndex]]
return answer == dishName
}
function handleClick(dishName) {
console.log(dishName + " 被点击了!");
if (checkAnswer(dishName)){
// 正确答案的处理逻辑
console.log("恭喜,你选对了!");
if (currentIndex == 9){
setTimeout(function() {
window.location.href = 'gameover.html';
}, 2000);
}else{
currentIndex = currentIndex + 1
var nextQuestion = questions[QAlist[currentIndex]];
document.getElementById("dialogueText").innerHTML = nextQuestion;
console.log(answers[QAlist[currentIndex]]);
}
} else {
// 错误答案的处理逻辑
console.log("不幸,这不是正确答案。");
failedTimes = failedTimes + 1
switch (failedTimes) {
case 1:
hideElement(customers[RandomCustomerIndex][0])
showElement(customers[RandomCustomerIndex][1])
break;
case 2:
hideElement(customers[RandomCustomerIndex][1])
showElement(customers[RandomCustomerIndex][2])
break;
case 3:
hideElement('#qinshihuang img')
showElement(qinshihuangs[RandomQinShiHuangIndex])
// Delay for 2 seconds before redirecting
setTimeout(function() {
window.location.href = 'gameover.html';
}, 2000);
// 这里可以添加结束游戏或其他逻辑
break;
default:
console.log("失败次数:" + failedTimes);
}
}
}
var failedTimes = 0
// Questions list
var questions = [
"如何建立统一的度量衡体系以加强中央集权?",
"如何制定合理的税收政策来增强国库?",
"如何组织和动员资源建造长城以防御外敌?",
"如何执行禁止私人持有武器的政策?",
"如何推广统一的书写系统来加强文化统一?",
"如何合理征召士兵并保持军队的高效运作?",
"如何处理与儒家思想相关的政治异见?",
"如何加强皇帝的集权制度?",
"如何建立和维护一个有效的道路交通网络?",
"如何处理与周边国家的外交关系?"
];
// Answers list
var answers = [
'roast_duck',
'mapo',
'Yangzhou',
'Chicken',
'roast_duck',
'Yangzhou',
'mapo',
'mapo',
'Prawns',
'Yangzhou'
]
var QAlist = Array.from(Array(questions.length).keys());
// Fisher-Yates 洗牌算法
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]]; // 交换元素
}
}
// 打乱问题数组
shuffleArray(QAlist);
// 当前问题索引
var currentIndex = 0;
// Execute on all DOM loaded
document.addEventListener("DOMContentLoaded", function() {
// Show dialogue box
showElement("#dialogueBox img");
// Show all dishes
showElement('#mapo-tofu img');
showElement('#roast-duck img');
showElement('#yangzhou-fried-rice img');
showElement('#braised-prawns img');
showElement('#kung-pao-chicken img');
// Show a random customer
showElement(customers[RandomCustomerIndex][0]);
// Show normal Qin Shi Huang
showElement('#qinshihuang img');
// Show first question
var randomQuestion = questions[QAlist[currentIndex]];
document.getElementById("dialogueText").innerHTML = randomQuestion;
console.log(answers[QAlist[currentIndex]]);
});