201 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			201 lines
		
	
	
		
			6.1 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 nixones = [
 | 
						|
    '#nixon img',
 | 
						|
    '#nixon1 img',
 | 
						|
    '#nixon2 img'
 | 
						|
]
 | 
						|
 | 
						|
function checkAnswer(dishName){
 | 
						|
    var answer = answers[QAlist[currentIndex]]
 | 
						|
    return answer == dishName
 | 
						|
}
 | 
						|
 | 
						|
function handleHint(hint) {
 | 
						|
    console.log(hint + " 被点击了!");
 | 
						|
    if (hint == "bottom") {
 | 
						|
        hideElement("#hint img")
 | 
						|
        showElement("#hintpage img")
 | 
						|
    }
 | 
						|
    if (hint == "page") {
 | 
						|
        hideElement("#hintpage img")
 | 
						|
        showElement("#hint img")
 | 
						|
    }
 | 
						|
    
 | 
						|
}
 | 
						|
 | 
						|
function handleClick(dishName) {
 | 
						|
    console.log(dishName + " 被点击了!");
 | 
						|
    if (checkAnswer(dishName)){
 | 
						|
        // 正确答案的处理逻辑
 | 
						|
        console.log("恭喜,你选对了!");
 | 
						|
        if (currentIndex == 9){
 | 
						|
            setTimeout(function() {
 | 
						|
                    window.location.href = 'nixonwin.html';
 | 
						|
                }, 2000);
 | 
						|
            
 | 
						|
        }else{
 | 
						|
            // customer calm down
 | 
						|
            hideElement(customers[RandomCustomerIndex][failedTimes]);
 | 
						|
            showElement(customers[RandomCustomerIndex][0]);
 | 
						|
 | 
						|
            // nixon safe
 | 
						|
            hideElement(nixones[failedTimes])
 | 
						|
            showElement(nixones)
 | 
						|
 | 
						|
            failedTimes = 0;
 | 
						|
 | 
						|
            // display next question
 | 
						|
            currentIndex = currentIndex + 1
 | 
						|
            var nextQuestion = questions[QAlist[currentIndex]];
 | 
						|
            document.getElementById("dialogueText").innerHTML = nextQuestion;
 | 
						|
            console.log(answers[QAlist[currentIndex]]);
 | 
						|
        }
 | 
						|
        
 | 
						|
    } else {
 | 
						|
        // 错误答案的处理逻辑
 | 
						|
        console.log("不幸,这不是正确答案。");
 | 
						|
        addShakeEffect()
 | 
						|
        failedTimes = failedTimes + 1;
 | 
						|
        switch (failedTimes) {
 | 
						|
            case 1:
 | 
						|
                hideElement(customers[RandomCustomerIndex][0])
 | 
						|
                showElement(customers[RandomCustomerIndex][1])
 | 
						|
 | 
						|
                hideElement(nixones[0])
 | 
						|
                showElement(nixones[1])
 | 
						|
                break;
 | 
						|
            case 2:
 | 
						|
                hideElement(customers[RandomCustomerIndex][1])
 | 
						|
                showElement(customers[RandomCustomerIndex][2])
 | 
						|
 | 
						|
                break;
 | 
						|
            case 3:
 | 
						|
                hideElement(nixones[1])
 | 
						|
                showElement(nixones[2])
 | 
						|
                // Delay for 2 seconds before redirecting
 | 
						|
                setTimeout(function() {
 | 
						|
                    window.location.href = 'nixonlose.html';
 | 
						|
                }, 2000);
 | 
						|
                // 这里可以添加结束游戏或其他逻辑
 | 
						|
                break;
 | 
						|
            default:
 | 
						|
                console.log("失败次数:" + failedTimes);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
var failedTimes = 0
 | 
						|
 | 
						|
// Questions list
 | 
						|
var questions = [
 | 
						|
        "How can we ensure transparency and integrity in government?",
 | 
						|
        "How can we end the Vietnam War and ensure that needless diplomatic conflicts and wars are avoided in the future?",
 | 
						|
        "how can we improve relations with China and foster better diplomatic and trade cooperation based on respect for differences?",
 | 
						|
        "how should we manage tensions with the Soviet Union?",
 | 
						|
        "what should we do in the face of ongoing conflict and oil crises in the Middle East?",
 | 
						|
        "how will we respond to growing environmental problems?",
 | 
						|
        "In the face of recession and inflation, how will our economic policies be adjusted to restore and maintain economic stability?",
 | 
						|
        "how will the government respond to citizens' concerns about war and equal rights?",
 | 
						|
        "how can we promote nuclear weapons control and reduce nuclear threats globally?",
 | 
						|
        "how will government ensure the proper use of power, abide by the Constitution, and protect the freedoms and rights of its citizens?"
 | 
						|
    ];
 | 
						|
 | 
						|
// Answers list
 | 
						|
var answers = [
 | 
						|
    'ham',
 | 
						|
    'hotdog',
 | 
						|
    'applepie',
 | 
						|
    'frychicken',
 | 
						|
    'jiangbing',
 | 
						|
    'ham',
 | 
						|
    'hotdog',
 | 
						|
    'applepie',
 | 
						|
    'frychicken',
 | 
						|
    'jianbing'
 | 
						|
]
 | 
						|
 | 
						|
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('#champagne img');
 | 
						|
    showElement('#cheese img');
 | 
						|
    showElement('#crepe img');
 | 
						|
    showElement('#foie-gras img');
 | 
						|
    showElement('#onion-soup img');
 | 
						|
 | 
						|
    // Show a random customer
 | 
						|
    showElement(customers[RandomCustomerIndex][0]);
 | 
						|
 | 
						|
    // Show normal nixon
 | 
						|
    showElement('#nixon img');
 | 
						|
 | 
						|
    // Show hint bottom
 | 
						|
    showElement('#hint img')
 | 
						|
 | 
						|
    // Show first question
 | 
						|
    var randomQuestion = questions[QAlist[currentIndex]];
 | 
						|
    document.getElementById("dialogueText").innerHTML = randomQuestion;
 | 
						|
    console.log(answers[QAlist[currentIndex]]);
 | 
						|
});
 | 
						|
 | 
						|
// 为所有元素添加抖动效果
 | 
						|
function addShakeEffect() {
 | 
						|
    const allElements = document.querySelectorAll('body *'); // 选择页面上的所有元素
 | 
						|
    allElements.forEach(el => {
 | 
						|
        el.classList.add('shake-animation');
 | 
						|
    });
 | 
						|
    // 设置定时器以在动画完成后移除抖动效果
 | 
						|
    setTimeout(() => {
 | 
						|
        allElements.forEach(el => {
 | 
						|
            el.classList.remove('shake-animation');
 | 
						|
        });
 | 
						|
    }, 800); // 与 CSS 动画时间相同
 | 
						|
}
 | 
						|
 | 
						|
// 点击页面播放bgm
 | 
						|
document.addEventListener('click', function play() {
 | 
						|
    document.getElementById('bgm').play();
 | 
						|
    document.removeEventListener('click', play);
 | 
						|
}); |