javascript - 在“汉谟拉比”程序中找不到问题,从书中复制(德语)
问题描述
我正在尝试通过 Stephan Elter 的一本名为“Programmieren Lernen mit Javascript”的德语书来学习 JavaScript。
在京城,写一个叫《汉谟拉比》的小游戏有问题。
它是一个非常流行的古老模拟,你是一个国家的统治者,你必须管理你的食物储存/人口/英亩来养活你所有的人口并让它成长。
我试图编写代码,我如何在代码中看到它。
但是,当我打开我的 HTML 站点时,它只显示一个空白屏幕。
这是代码。
有谁知道,我做错了什么?
对不起德语变量名。
正如我所说,我从书中复制了它。
<html>
<head>
<title>Hamumrabi</title>
<meta charset="UTF-8">
</head>
<body>
<script>
var jahr = 0; // year
var buerger = 100; // people
var korn = 6000; // Food
var land = 400; // land
var ende = false; //game over
var landPreis = 5; //price per land (acre)
var ernteProAcker; // harves per acre
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function spieleEineRunde()
{
if(ende ==false)
{
jahr = jahr+1;
bestimmeErnteErfolg();
verarbeiteBefehle();
bestimmeLandPreis();
erstelleBericht();
pruefeEnde();
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function bestimmeLandPreis()
{
landPreis = Math.round(Math.random()*10+0.5);
if(Math.random()>0.9)
{
landPreis = Math.round(Math.random()*15+0.5);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function bestimmeErnteErfolg()
{
ernteProAcker = Math.round(Math.random() * 5 + Math.random()*5+0.5);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function verarbeiteBefehle()
{
var eingabe = prompt("Erteilt Eure Befehle, hoher Herrscher", "Nahrung, Aussaat, Landhandel");
var befehle = eingabe.split(",");
var verteileKorn = parseInt(befehle[0]);
var saeheKorn = parseInt(befehle[1]);
var landKauf = parseInt(befehle[2]);
if (isNaN(verteileKorn) || verteileKorn < 0)
{
verteileKorn = 0;
}
if (isNaN(saeheKorn) || saeheKorn < 0)
{
saeheKorn = 0;
}
if (isNaN(landKauf))
{
landkauf = 0;
}
bevoelkerung(verteileKorn);
aussaat(saeheKorn);
handel(landKauf);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function bevoelkerung(nahrung)
{
if(nahrung>korn)
{
nahrung = korn;
}
korn = korn - nahrung;
var ausreichendNahrung = Math.round(nahrung/20) - buerger;
var neueBuerger = 0;
if (ausreichendNahrung >0)
{
neueBuerger = ausreichendNahrung /2;
}
var verstorbeneBuerger = 0;
if (ausreichendNahrung<0)
{
verstorbeneBuerger = -ausreichendNahrung;
}
buerger = Math.round(buerger+neueBuerger-verstorbeneBuerger);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function aussaat(saat)
{
var geerntetesKorn;
if (saat>korn)
{
saat = korn;
}
korn = korn - saat;
var moeglicheSaat = parseInt(saat/2);
if(moeglicheSaat>buerger*10)
{
moeglicheSaat=buerger*10;
}
if(moeglicheSaat>land)
{
moeglicheSaat=land;
}
geerntetesKorn = ernteProAcker*moeglicheSaat;
korn = korn + geerntetesKorn;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function handel(kauf)
{
if(kauf<0)
{
var verkauf = Math.abs(kauf);
if(kauf>land)
{
return;
}
land = land - verkauf;
korn = korn + verkauf * landPreis;
}
//KAUFE LAND/////////////////////////////////////////////////
if(kauf>0)
{
if (kauf*landPreis>korn)
{
alert("Nicht genug Korn für den Landkauf!");
return;
}
land = land+kauf;
korn = korn - kauf* landPreis;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function erstelleBericht()
{
var ernte;
switch (ernteProAcker)
{
case 1:
ernte = "Unwetter vernichteten Teile der Ernte.";
break;
case 2:
case 3:
ernte = "Das Wetter war schlecht.";
break;
case 6:
case 7:
ernte = "Das Wetter war gut. Die Ernte war reichlich.";
break;
case 8:
case 9:
case 10:
ernte = "Das Wetter war hervorragend. Die Ernte war riesig.";
break;
case 4:
case 5:
default:
ernte = "Das Wetter war normal.";
break;
}
var info = "Weiser Herrscher!<br>";
info += "Wir schreiben das Jahr " + jahr + "Eurer Herrschaft.<br>";
info += buerger + " treue Buerger zählt Euer Reich.<br>";
info += ernte + "<br>" + korn + " Scheffel Korn lagern in Euren Kammern. <br>";
info += land + " Acker Land besitzt Ihr.<br>";
info += landPreis + " Scheffel Korn kostet ein Stück Land.";
monitor.innerHTML = info;
return;
}
function pruefeEnde
{
var abbruchGrund = "<br>";
if (buerger < 1)
{
ende = true;
abbruchGrund += "Ihr habt zu wenig Untertanen.";
}
if (korn < 1)
{
ende = true;
abbruchGrund += "Eure Kornkammern sind leer.";
}
if (land<1)
{
ende = true
abbruchGrund+="Ihr habt kein Land";
}
if (jahr>20&&ende=false)
{
ende = true;
abbruchGrund = "Nach 20 Jahren ist Eure Herrschaft vorbei. Ihr seid gepriesen.";
}
if (ende)
{
abbruchGrund = "<br><br>Eure Herrschaft ist beendet." + abbruchGrund;
monitor.innerHTML = monitor.innerHTML + abbruchGrund;
}
}
</script>
</body>
</html>
解决方案
啊,是的,我很愚蠢。当然,我必须添加 css 文件等。我更改了它,至少它向我展示了某种黑色控制台。但是当我点击时,仍然没有任何反应。脚本没有改变,所以我只发布了 css 文件和新的 html 文件。
哈里.html
<html>
<head>
<title>Hamumrabi</title>
<meta charset="UTF-8">
<link href="monitor.css" rel="stylesheet">
<script>src="script.js"</script>
</head>
<body>
<div class="monitor" onclick="spieleEineRunde()">
<p id ="monitor"></p>
</div>
<script>erstelleBericht()</script>
</body>
</html>
body{
background: #966F33;
}
.monitor{
font-size: 20px;
font-family: courier, terminal, monospace;
font-weight: bold;
color: #13DF13
text-shadow: 2px 2px 2px #13CD13
width: 680px; height: 400px;
background: #222222;
padding: 25px;
border-radius: 15px;
margin: 30px auto;
box-shadow: inset -1px 2px 10px 5px grey;
}
推荐阅读
- python - 如何使用 HTML 显示熊猫图表
- python - AWS 上的 jupyter 笔记本
- docker - 通过 docker 运行 Hashicorp vault ui 时无法访问
- r - R:如果记录在特定列上匹配,但在另一列中不同,则删除不同值为 NA 的行
- r - 如何在 R 中添加基于用户 ID 和会话 ID 的平均列?
- r - 对 data.table 使用 i 中变量的字符串表示
- python - 通过 uwsgi 启动 Flask 时没有加载应用程序
- java - Spring Data JPA删除多对多关系问题
- python - 如何使用 Python 将 msdata xml 转换为 ms excel 电子表格
- javascript - 如何在 JavaScript 中获取页面语言(hreflang)并将其作为参数添加到链接