Я не могу разделить файлы javascript в игре со змеями - PullRequest
0 голосов
/ 24 апреля 2019

Я новичок в JS, и я работаю над школьным проектом по созданию моей собственной игры в змею. Я хочу разделить свои функции, поэтому не все будет в одном файле JS.

Например, я пытался поместить функцию CheckForCollisions в другой файл JS, но если я запускаю игру, она выдает ошибку, что snake.Trymove не является функцией. Вот мой HTML-файл:

<html>
    <head>
        <title> Snake </title>
        <meta charset="utf-8"/>
        <script src="js/snake.js"></script>
        <script src="js/Collisions.js"></script>
        <script src="js/EventHandler.js"></script>
        <canvas id ="snake" width="960" height="720"></canvas>
    </head>
    <body>
    </body>
</html>

А вот мой основной файл JS, который я пытаюсь разложить:

window.onload = function() 
{
    const cvs = document.getElementById("snake");
    const ctx = cvs.getContext("2d");

      //here are some variables

      window.onclick = function (event) 
      {...}

      var Field = function (cols, rows, areawidth, areaheight) //pole
      {...};

       var Snake = function()
       {
       ...

         this.tryMove = function (deltaTime) 
         {
            this.movedelay += deltaTime;
            var maxmovedelay = 1 / this.speed;
            if (this.movedelay > maxmovedelay)
                return true;

            return false;
         }
        }

    this.nextMovement = function () 
        {...}

        this.move = function ()
        {...}

        this.grow = function ()
        {...}

        this.faster = function ()
        {...}

        this.slower= function ()
        {...}
    };

    var snake = new Snake();
    var field = new Field(20, 14, 48, 48);
    var score = 0;
    var health = 1;
    var gameover = true;
    var gameovertime = 1;
        var seconds = 80;

    function start ()
    {
      document.addEventListener("keydown", onKeyDown);
      drawMenu();
      newGame();
      main(0);
    }

    function tryNewGame() 
    {...}

    function newGame()
    {...}

    function continueGame() 
    {...}

    function addHamburger() 
    {...}

    function addBonushealth()
    {...}

    function addFaster()
    {...}

    function addSlower()
    {...}

    function main (thisframe)
    {
        window.requestAnimationFrame(main);
        update(thisframe);
        if (click == 0)
            drawMenu();
        else
        {
            drawField();
            drawSnake();
            drawinfoboard();

            ....
    }
        }

        var lastframe = 0;

    function update(thisframe)
    {...}

    function CheckForCollision(deltaTime)
    {
          if (snake.tryMove(deltaTime)) 
          {
            var nextmove = snake.nextMovement();
        var nx = nextmove.x;
        var ny = nextmove.y;
          }
        }

    function drawField() 
    {...}

    function drawSnake() 
    {...}

        function drawMenu()
        {...}

        function randomnumber(min, max) 
    {...}

    function onKeyDown(event)
    {...}

    start();
}

Теперь, если я пытаюсь поместить функцию CheckForCollisions в отдельный файл JS, это выдает мне ошибку:

Uncaught TypeError: snake.tryMove is not a function
    at CheckForCollision (Collisions.js:3)
    at update (snake.js:453)
    at main (snake.js:391)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...