添加三个餐厅页面

This commit is contained in:
sangge 2023-12-24 02:12:34 +08:00
parent 4e867337f0
commit c4c9af9c14
14 changed files with 1500 additions and 0 deletions

36
alexlose.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Over</title>
<style>
body {
text-align: center;
padding-top: 50px;
background-image: url("asset/pic/louis16/lose.png");
background-repeat: no-repeat;
}
.btn {
position: absolute;
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
top: 350px;
left: 825px;
}
h1 {
position: absolute;
top: 290px;
left: 810px;
}
</style>
</head>
<body>
<h1>Game Over</h1>
<a href="index.html" class="btn">Back to Start</a>
</body>
</html>

36
alexwin.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Over</title>
<style>
body {
text-align: center;
padding-top: 50px;
background-image: url("asset/pic/luois16/win.jpg");
background-repeat: no-repeat;
}
.btn {
position: absolute;
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
top: 350px;
left: 825px;
}
h1 {
position: absolute;
top: 290px;
left: 810px;
}
</style>
</head>
<body>
<h1>Game Over</h1>
<a href="index.html" class="btn">Back to Start</a>
</body>
</html>

169
css/alexgame.css Normal file
View File

@ -0,0 +1,169 @@
body {
background-image: url('../asset/pic/louis16/LouisXVI_Restaurant.png');
background-repeat: no-repeat;
background-color: rgb(0, 136, 109);
}
#desktop{
position: absolute;
background-repeat: no-repeat;
}
#desktop img{
left: -10px;
top: -10px;
position: absolute;
z-index: 2;
}
#restaurant .customer img {
position: absolute;
z-index: 0;
width: 1024px;
height: 1024px;
top:50px;
left: -100px;
}
#restaurant .dish img {
position: absolute;
top: 750px;
width: 150px;
height: 150px;
z-index: 3;
}
#restaurant .empire img {
position: absolute;
width: 800px;
height: 800px;
z-index: 4;
}
#louis img{ /* louis 16 */
top: 235px;
left: 1050px;
display: none;
}
#louis1 img{ /* 断头台 */
top: 235px;
left: 1050px;
display: none;
}
#louis2 img{ /* 死 */
top: 235px;
left: 1050px;
display: none;
}
#dialogueBox {
position: absolute;
width: 512px;
height: 512px;
top: 50px;
left: 600px;
}
#dialogueBox img{
position: absolute;
width: 800px;
height: 800px;
top: -100px;
left: -100px;
display: none;
}
#dialogueText {
position: absolute;
top: 170px;
left: 100px;
width: 400px;
height: 150px;
font-size: 25px;
text-align: center; /* 水平居中 */
}
#hint {
position: absolute;
width: 50px;
height: 50px;
top: 350px;
left: 1100px;
}
#hint img{
position: absolute;
width: 50px;
height: 50px;
z-index: 5;
display: none;
}
#hintpage img{
position: absolute;
z-index: 5;
display: none;
}
#customer1 img{ /* 中年男 */
display: none;
}
#customer1-2 img{ /* unhappy中年男 */
display: none;
}
#customer1-3 img{ /* angry中年男 */
display: none;
}
#customer2 img{ /* 小女孩 */
top:150px !important;
display: none;
}
#customer2-2 img{ /* unhappy小女孩 */
top:150px !important;
display: none;
}
#customer2-3 img{ /* angry小女孩 */
top:150px !important;
display: none;
}
#customer3 img{ /* 老奶奶 */
top:100px !important;
display: none;
}
#customer3-2 img{ /* unhappy老奶奶 */
top:100px !important;
display: none;
}
#customer3-3 img{ /* unhappy老奶奶 */
top:100px !important;
display: none;
}
#champagne img{ /* 香槟 */
left: -10px;
display: none;
}
#cheese img{ /* 芝士 */
left: 170px;
display: none;
}
#crepe img{
left: 380px;
display: none;
}
#foie-gras img{
left: 590px;
display: none;
}
#onion-soup img{
left: 750px;
top: 719px!important;
width: 181px!important;
height: 183px!important;
display: none;
}
/* 定义抖动动画 */
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); }
20%, 40%, 60%, 80% { transform: translateX(10px); }
}
.shake-animation {
animation: shake 0.8s; /* 动画持续时间 */
animation-timing-function: ease-in-out;
}

169
css/elizabethgame.css Normal file
View File

@ -0,0 +1,169 @@
body {
background-image: url('../asset/pic/louis16/LouisXVI_Restaurant.png');
background-repeat: no-repeat;
background-color: rgb(0, 136, 109);
}
#desktop{
position: absolute;
background-repeat: no-repeat;
}
#desktop img{
left: -10px;
top: -10px;
position: absolute;
z-index: 2;
}
#restaurant .customer img {
position: absolute;
z-index: 0;
width: 1024px;
height: 1024px;
top:50px;
left: -100px;
}
#restaurant .dish img {
position: absolute;
top: 750px;
width: 150px;
height: 150px;
z-index: 3;
}
#restaurant .empire img {
position: absolute;
width: 800px;
height: 800px;
z-index: 4;
}
#louis img{ /* louis 16 */
top: 235px;
left: 1050px;
display: none;
}
#louis1 img{ /* 断头台 */
top: 235px;
left: 1050px;
display: none;
}
#louis2 img{ /* 死 */
top: 235px;
left: 1050px;
display: none;
}
#dialogueBox {
position: absolute;
width: 512px;
height: 512px;
top: 50px;
left: 600px;
}
#dialogueBox img{
position: absolute;
width: 800px;
height: 800px;
top: -100px;
left: -100px;
display: none;
}
#dialogueText {
position: absolute;
top: 170px;
left: 100px;
width: 400px;
height: 150px;
font-size: 25px;
text-align: center; /* 水平居中 */
}
#hint {
position: absolute;
width: 50px;
height: 50px;
top: 350px;
left: 1100px;
}
#hint img{
position: absolute;
width: 50px;
height: 50px;
z-index: 5;
display: none;
}
#hintpage img{
position: absolute;
z-index: 5;
display: none;
}
#customer1 img{ /* 中年男 */
display: none;
}
#customer1-2 img{ /* unhappy中年男 */
display: none;
}
#customer1-3 img{ /* angry中年男 */
display: none;
}
#customer2 img{ /* 小女孩 */
top:150px !important;
display: none;
}
#customer2-2 img{ /* unhappy小女孩 */
top:150px !important;
display: none;
}
#customer2-3 img{ /* angry小女孩 */
top:150px !important;
display: none;
}
#customer3 img{ /* 老奶奶 */
top:100px !important;
display: none;
}
#customer3-2 img{ /* unhappy老奶奶 */
top:100px !important;
display: none;
}
#customer3-3 img{ /* unhappy老奶奶 */
top:100px !important;
display: none;
}
#champagne img{ /* 香槟 */
left: -10px;
display: none;
}
#cheese img{ /* 芝士 */
left: 170px;
display: none;
}
#crepe img{
left: 380px;
display: none;
}
#foie-gras img{
left: 590px;
display: none;
}
#onion-soup img{
left: 750px;
top: 719px!important;
width: 181px!important;
height: 183px!important;
display: none;
}
/* 定义抖动动画 */
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); }
20%, 40%, 60%, 80% { transform: translateX(10px); }
}
.shake-animation {
animation: shake 0.8s; /* 动画持续时间 */
animation-timing-function: ease-in-out;
}

169
css/nixongame.css Normal file
View File

@ -0,0 +1,169 @@
body {
background-image: url('../asset/pic/louis16/LouisXVI_Restaurant.png');
background-repeat: no-repeat;
background-color: rgb(0, 136, 109);
}
#desktop{
position: absolute;
background-repeat: no-repeat;
}
#desktop img{
left: -10px;
top: -10px;
position: absolute;
z-index: 2;
}
#restaurant .customer img {
position: absolute;
z-index: 0;
width: 1024px;
height: 1024px;
top:50px;
left: -100px;
}
#restaurant .dish img {
position: absolute;
top: 750px;
width: 150px;
height: 150px;
z-index: 3;
}
#restaurant .empire img {
position: absolute;
width: 800px;
height: 800px;
z-index: 4;
}
#louis img{ /* louis 16 */
top: 235px;
left: 1050px;
display: none;
}
#louis1 img{ /* 断头台 */
top: 235px;
left: 1050px;
display: none;
}
#louis2 img{ /* 死 */
top: 235px;
left: 1050px;
display: none;
}
#dialogueBox {
position: absolute;
width: 512px;
height: 512px;
top: 50px;
left: 600px;
}
#dialogueBox img{
position: absolute;
width: 800px;
height: 800px;
top: -100px;
left: -100px;
display: none;
}
#dialogueText {
position: absolute;
top: 170px;
left: 100px;
width: 400px;
height: 150px;
font-size: 25px;
text-align: center; /* 水平居中 */
}
#hint {
position: absolute;
width: 50px;
height: 50px;
top: 350px;
left: 1100px;
}
#hint img{
position: absolute;
width: 50px;
height: 50px;
z-index: 5;
display: none;
}
#hintpage img{
position: absolute;
z-index: 5;
display: none;
}
#customer1 img{ /* 中年男 */
display: none;
}
#customer1-2 img{ /* unhappy中年男 */
display: none;
}
#customer1-3 img{ /* angry中年男 */
display: none;
}
#customer2 img{ /* 小女孩 */
top:150px !important;
display: none;
}
#customer2-2 img{ /* unhappy小女孩 */
top:150px !important;
display: none;
}
#customer2-3 img{ /* angry小女孩 */
top:150px !important;
display: none;
}
#customer3 img{ /* 老奶奶 */
top:100px !important;
display: none;
}
#customer3-2 img{ /* unhappy老奶奶 */
top:100px !important;
display: none;
}
#customer3-3 img{ /* unhappy老奶奶 */
top:100px !important;
display: none;
}
#champagne img{ /* 香槟 */
left: -10px;
display: none;
}
#cheese img{ /* 芝士 */
left: 170px;
display: none;
}
#crepe img{
left: 380px;
display: none;
}
#foie-gras img{
left: 590px;
display: none;
}
#onion-soup img{
left: 750px;
top: 719px!important;
width: 181px!important;
height: 183px!important;
display: none;
}
/* 定义抖动动画 */
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); }
20%, 40%, 60%, 80% { transform: translateX(10px); }
}
.shake-animation {
animation: shake 0.8s; /* 动画持续时间 */
animation-timing-function: ease-in-out;
}

96
elizabethgame.html Normal file
View File

@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>路易十六餐厅</title>
<link rel="stylesheet" type="text/css" href="css/louisgame.css">
</head>
<body>
<!-- 游戏的界面元素 -->
<div id="restaurant">
<div id="desktop">
<img src="asset/pic/louis16/LouisXVI_RestaurantTable.png" alt="desktop">
</div>
<!-- empires elements-->
<div id="louis" class="empire">
<img src="asset/pic/louis16/LouisXVI_Normal.png" alt="louis16">
</div>
<div id="louis1" class="empire">
<img src="asset/pic/louis16/LouisXVI_Dying.png" alt="砍头台">
</div>
<div id="louis2" class="empire">
<img src="asset/pic/louis16/LouisXVI_Dead.png" alt="死">
</div>
<!-- customers elements -->
<div id="dialogueBox" class="dialogueBox">
<img src="asset/pic/qinshihuang/DialogueBox.png" alt="对话框">
<div id="dialogueText" class="dialogueText">
</div>
</div>
<div id="hint" class="hint">
<img src="asset/pic/qinshihuang/hint_bottom.png" alt="提示按钮" onclick="handleHint('bottom');">
</div>
<div id="hintpage" class="hintpage">
<img src="asset/pic/qinshihuang/hint_page.png" alt="提示" onclick="handleHint('page');">
</div>
<div id="customer1" class="customer">
<img src="asset/pic/qinshihuang/Customer1_YoungMan.png" alt="中年男">
</div>
<div id="customer1-2" class="customer">
<img src="asset/pic/qinshihuang/UnhappyYoungMan.png" alt="不开心中年男">
</div>
<div id="customer1-3" class="customer">
<img src="asset/pic/qinshihuang/AngryYoungMan.png" alt="生气中年男">
</div>
<div id="customer2" class="customer">
<img src="asset/pic/qinshihuang/Customer2_LittleGirl.png" alt="小女孩">
</div>
<div id="customer2-2" class="customer">
<img src="asset/pic/qinshihuang/UnhappyLittleGirl.png" alt="不开心小女孩">
</div>
<div id="customer2-3" class="customer">
<img src="asset/pic/qinshihuang/AngryLittleGirl.png" alt="生气小女孩">
</div>
<div id="customer3" class="customer">
<img src="asset/pic/qinshihuang/Customer3_OldLady.png" alt="老奶奶">
</div>
<div id="customer3-2" class="customer">
<img src="asset/pic/qinshihuang/UnhappyGrandma.png" alt="不开心老奶奶">
</div>
<div id="customer3-3" class="customer">
<img src="asset/pic/qinshihuang/AngryGrandma.png" alt="生气老奶奶">
</div>
<!-- foods elements -->
<div id="champagne" class="dish">
<img src="asset/pic/louis16/Champagne.png" alt="香槟"
onclick="handleClick('cham');">
</div>
<div id="cheese" class="dish">
<img src="asset/pic/louis16/BrieCheese.png" alt="芝士"
onclick="handleClick('cheese');">
</div>
<div id="crepe" class="dish">
<img src="asset/pic/louis16/Crepe.png" alt="雪糕"
onclick="handleClick('crepe');">
</div>
<div id="foie-gras" class="dish">
<img src="asset/pic/louis16/FoieGras.png" alt="肥肝"
onclick="handleClick('foiegras');">
</div>
<div id="onion-soup" class="dish">
<img src="asset/pic/louis16/FrenchOnionSoup.png" alt="洋葱汤"
onclick="handleClick('onionsoup');">
</div>
</div>
<script src="js/louisgame.js"></script>
</body>
</html>

36
elizabethlose.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Over</title>
<style>
body {
text-align: center;
padding-top: 50px;
background-image: url("asset/pic/louis16/lose.png");
background-repeat: no-repeat;
}
.btn {
position: absolute;
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
top: 350px;
left: 825px;
}
h1 {
position: absolute;
top: 290px;
left: 810px;
}
</style>
</head>
<body>
<h1>Game Over</h1>
<a href="index.html" class="btn">Back to Start</a>
</body>
</html>

36
elizabethwin.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Over</title>
<style>
body {
text-align: center;
padding-top: 50px;
background-image: url("asset/pic/luois16/win.jpg");
background-repeat: no-repeat;
}
.btn {
position: absolute;
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
top: 350px;
left: 825px;
}
h1 {
position: absolute;
top: 290px;
left: 810px;
}
</style>
</head>
<body>
<h1>Game Over</h1>
<a href="index.html" class="btn">Back to Start</a>
</body>
</html>

195
js/alexgame.js Normal file
View File

@ -0,0 +1,195 @@
// 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 louises = [
'#louis img',
'#louis1 img',
'#louis2 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 = 'louiswin.html';
}, 2000);
}else{
// customer calm down
hideElement(customers[RandomCustomerIndex][failedTimes]);
showElement(customers[RandomCustomerIndex][0]);
// louis safe
hideElement(louises[failedTimes])
showElement(louises)
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(louises[0])
showElement(louises[1])
break;
case 2:
hideElement(customers[RandomCustomerIndex][1])
showElement(customers[RandomCustomerIndex][2])
break;
case 3:
hideElement(louises[1])
showElement(louises[2])
// Delay for 2 seconds before redirecting
setTimeout(function() {
window.location.href = 'louislose.html';
}, 2000);
// 这里可以添加结束游戏或其他逻辑
break;
default:
console.log("失败次数:" + failedTimes);
}
}
}
var failedTimes = 0
// Questions list
var questions = [
"How to establish a unified system of metrics to strengthen centralised power?",
"How to formulate a reasonable tax policy to strengthen the national treasury?",
"How to organise and mobilise resources for the construction of the Great Wall to defend against foreign enemies?",
"How to enforce the policy of prohibiting private ownership of weapons?",
"How to promote a uniform writing system to strengthen cultural unity?",
"How to recruit soldiers wisely and keep the army running efficiently?",
"How to deal with political dissent arising from different ideas?",
"How to strengthen the centralised power system of the emperor?",
"How to establish and maintain an effective road transport network?",
"How to handle diplomatic relations with neighbouring countries?"
];
// 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('#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 louis
showElement('#louis 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 动画时间相同
}

195
js/elizabethgame.js Normal file
View File

@ -0,0 +1,195 @@
// 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 louises = [
'#louis img',
'#louis1 img',
'#louis2 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 = 'louiswin.html';
}, 2000);
}else{
// customer calm down
hideElement(customers[RandomCustomerIndex][failedTimes]);
showElement(customers[RandomCustomerIndex][0]);
// louis safe
hideElement(louises[failedTimes])
showElement(louises)
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(louises[0])
showElement(louises[1])
break;
case 2:
hideElement(customers[RandomCustomerIndex][1])
showElement(customers[RandomCustomerIndex][2])
break;
case 3:
hideElement(louises[1])
showElement(louises[2])
// Delay for 2 seconds before redirecting
setTimeout(function() {
window.location.href = 'louislose.html';
}, 2000);
// 这里可以添加结束游戏或其他逻辑
break;
default:
console.log("失败次数:" + failedTimes);
}
}
}
var failedTimes = 0
// Questions list
var questions = [
"How to establish a unified system of metrics to strengthen centralised power?",
"How to formulate a reasonable tax policy to strengthen the national treasury?",
"How to organise and mobilise resources for the construction of the Great Wall to defend against foreign enemies?",
"How to enforce the policy of prohibiting private ownership of weapons?",
"How to promote a uniform writing system to strengthen cultural unity?",
"How to recruit soldiers wisely and keep the army running efficiently?",
"How to deal with political dissent arising from different ideas?",
"How to strengthen the centralised power system of the emperor?",
"How to establish and maintain an effective road transport network?",
"How to handle diplomatic relations with neighbouring countries?"
];
// 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('#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 louis
showElement('#louis 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 动画时间相同
}

195
js/nixongame.js Normal file
View File

@ -0,0 +1,195 @@
// 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 louises = [
'#louis img',
'#louis1 img',
'#louis2 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 = 'louiswin.html';
}, 2000);
}else{
// customer calm down
hideElement(customers[RandomCustomerIndex][failedTimes]);
showElement(customers[RandomCustomerIndex][0]);
// louis safe
hideElement(louises[failedTimes])
showElement(louises)
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(louises[0])
showElement(louises[1])
break;
case 2:
hideElement(customers[RandomCustomerIndex][1])
showElement(customers[RandomCustomerIndex][2])
break;
case 3:
hideElement(louises[1])
showElement(louises[2])
// Delay for 2 seconds before redirecting
setTimeout(function() {
window.location.href = 'louislose.html';
}, 2000);
// 这里可以添加结束游戏或其他逻辑
break;
default:
console.log("失败次数:" + failedTimes);
}
}
}
var failedTimes = 0
// Questions list
var questions = [
"How to establish a unified system of metrics to strengthen centralised power?",
"How to formulate a reasonable tax policy to strengthen the national treasury?",
"How to organise and mobilise resources for the construction of the Great Wall to defend against foreign enemies?",
"How to enforce the policy of prohibiting private ownership of weapons?",
"How to promote a uniform writing system to strengthen cultural unity?",
"How to recruit soldiers wisely and keep the army running efficiently?",
"How to deal with political dissent arising from different ideas?",
"How to strengthen the centralised power system of the emperor?",
"How to establish and maintain an effective road transport network?",
"How to handle diplomatic relations with neighbouring countries?"
];
// 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('#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 louis
showElement('#louis 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 动画时间相同
}

96
nixongame.html Normal file
View File

@ -0,0 +1,96 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>路易十六餐厅</title>
<link rel="stylesheet" type="text/css" href="css/louisgame.css">
</head>
<body>
<!-- 游戏的界面元素 -->
<div id="restaurant">
<div id="desktop">
<img src="asset/pic/louis16/LouisXVI_RestaurantTable.png" alt="desktop">
</div>
<!-- empires elements-->
<div id="louis" class="empire">
<img src="asset/pic/louis16/LouisXVI_Normal.png" alt="louis16">
</div>
<div id="louis1" class="empire">
<img src="asset/pic/louis16/LouisXVI_Dying.png" alt="砍头台">
</div>
<div id="louis2" class="empire">
<img src="asset/pic/louis16/LouisXVI_Dead.png" alt="死">
</div>
<!-- customers elements -->
<div id="dialogueBox" class="dialogueBox">
<img src="asset/pic/qinshihuang/DialogueBox.png" alt="对话框">
<div id="dialogueText" class="dialogueText">
</div>
</div>
<div id="hint" class="hint">
<img src="asset/pic/qinshihuang/hint_bottom.png" alt="提示按钮" onclick="handleHint('bottom');">
</div>
<div id="hintpage" class="hintpage">
<img src="asset/pic/qinshihuang/hint_page.png" alt="提示" onclick="handleHint('page');">
</div>
<div id="customer1" class="customer">
<img src="asset/pic/qinshihuang/Customer1_YoungMan.png" alt="中年男">
</div>
<div id="customer1-2" class="customer">
<img src="asset/pic/qinshihuang/UnhappyYoungMan.png" alt="不开心中年男">
</div>
<div id="customer1-3" class="customer">
<img src="asset/pic/qinshihuang/AngryYoungMan.png" alt="生气中年男">
</div>
<div id="customer2" class="customer">
<img src="asset/pic/qinshihuang/Customer2_LittleGirl.png" alt="小女孩">
</div>
<div id="customer2-2" class="customer">
<img src="asset/pic/qinshihuang/UnhappyLittleGirl.png" alt="不开心小女孩">
</div>
<div id="customer2-3" class="customer">
<img src="asset/pic/qinshihuang/AngryLittleGirl.png" alt="生气小女孩">
</div>
<div id="customer3" class="customer">
<img src="asset/pic/qinshihuang/Customer3_OldLady.png" alt="老奶奶">
</div>
<div id="customer3-2" class="customer">
<img src="asset/pic/qinshihuang/UnhappyGrandma.png" alt="不开心老奶奶">
</div>
<div id="customer3-3" class="customer">
<img src="asset/pic/qinshihuang/AngryGrandma.png" alt="生气老奶奶">
</div>
<!-- foods elements -->
<div id="champagne" class="dish">
<img src="asset/pic/louis16/Champagne.png" alt="香槟"
onclick="handleClick('cham');">
</div>
<div id="cheese" class="dish">
<img src="asset/pic/louis16/BrieCheese.png" alt="芝士"
onclick="handleClick('cheese');">
</div>
<div id="crepe" class="dish">
<img src="asset/pic/louis16/Crepe.png" alt="雪糕"
onclick="handleClick('crepe');">
</div>
<div id="foie-gras" class="dish">
<img src="asset/pic/louis16/FoieGras.png" alt="肥肝"
onclick="handleClick('foiegras');">
</div>
<div id="onion-soup" class="dish">
<img src="asset/pic/louis16/FrenchOnionSoup.png" alt="洋葱汤"
onclick="handleClick('onionsoup');">
</div>
</div>
<script src="js/louisgame.js"></script>
</body>
</html>

36
nixonlose.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Over</title>
<style>
body {
text-align: center;
padding-top: 50px;
background-image: url("asset/pic/louis16/lose.png");
background-repeat: no-repeat;
}
.btn {
position: absolute;
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
top: 350px;
left: 825px;
}
h1 {
position: absolute;
top: 290px;
left: 810px;
}
</style>
</head>
<body>
<h1>Game Over</h1>
<a href="index.html" class="btn">Back to Start</a>
</body>
</html>

36
nixonwin.html Normal file
View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Over</title>
<style>
body {
text-align: center;
padding-top: 50px;
background-image: url("asset/pic/luois16/win.jpg");
background-repeat: no-repeat;
}
.btn {
position: absolute;
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
top: 350px;
left: 825px;
}
h1 {
position: absolute;
top: 290px;
left: 810px;
}
</style>
</head>
<body>
<h1>Game Over</h1>
<a href="index.html" class="btn">Back to Start</a>
</body>
</html>