首页 > 解决方案 > 在“汉谟拉比”程序中找不到问题,从书中复制(德语)

问题描述

我正在尝试通过 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>

标签: javascriptjscript

解决方案


啊,是的,我很愚蠢。当然,我必须添加 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;
}


推荐阅读