Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未捕获的TypeError:没有足够的参数用于Javascript游戏_Javascript_Html_Typeerror - Fatal编程技术网

未捕获的TypeError:没有足够的参数用于Javascript游戏

未捕获的TypeError:没有足够的参数用于Javascript游戏,javascript,html,typeerror,Javascript,Html,Typeerror,我在整个代码的第259行,也就是函数的第30行遇到了一个问题,我得到了一个uncaughttypeerror错误:没有足够的参数,我不确定如何解决这个问题,我已经查看了开始括号和结束括号,但我找不到答案。如果需要更多代码,请告诉我 var render = function () { if(displayQuestion == 1 && hideGame == 1) { if(gameOver == true) { ctx.fillStyle =

我在整个代码的第259行,也就是函数的第30行遇到了一个问题,我得到了一个uncaughttypeerror错误:没有足够的参数,我不确定如何解决这个问题,我已经查看了开始括号和结束括号,但我找不到答案。如果需要更多代码,请告诉我

var render = function () {
if(displayQuestion == 1 && hideGame == 1)
{
    if(gameOver == true)
    {
        ctx.fillStyle = "rgb(250, 250, 250)";
        ctx.font = "24px Verdana";
        ctx.textAlign = "right";
        ctx.textBaseline = "top";
        ctx.fillText("Game Over Dude");
    }
    else
    {
        if (bgReady) 
        {
            ctx.drawImage(bgImage, 0, 0);
        }
        ctx.fillStyle = "rgb(250, 250, 250)";
        ctx.font = "24px Verdana";
        ctx.textAlign = "right";
        ctx.textBaseline = "top";
        ctx.fillText("Level: " + level, 400, 32);

        ctx.fillStyle = "rgb(250, 250, 250)";
        ctx.font = "40px Verdana";
        ctx.textAlign = "center";
        ctx.textBaseline = "top";
        if(level == 1)
        {
            var text = "What is " + num1 + " x " + num2 + "?";
        }
        else if(level == 2)
        {
            var text = "What is " + num3 + " x " + num4 + "?";
        }
        else if(level >= 3)
        {
            var text = "What is " + num5 + " x " + num6 + "?";
        }
        **ctx.fillText(text, canvas.width / 2, canvas.height / 2);**
    }
}
else if(displayQuestion == 0 && hideGame == 0)
{
    if (bgReady) {
        ctx.drawImage(bgImage, 0, 0);
    }
    if (heroReady) {
        ctx.drawImage(heroImage, hero.x, hero.y);
    }
    if (monsterReady) {
        ctx.drawImage(monsterImage, monster.x, monster.y);
        ctx.drawImage(monsterImage, monster1.x, monster1.y);
        ctx.drawImage(monsterImage, monster2.x, monster2.y);
    }
    // Score
    ctx.fillStyle = "rgb(250, 250, 250)";
    ctx.font = "24px Verdana";
    ctx.textAlign = "left";
    ctx.textBaseline = "top";
    ctx.fillText("Score: " + monstersCaught, 32, 32);

    ctx.fillStyle = "rgb(250, 250, 250)";
    ctx.font = "24px Verdana";
    ctx.textAlign = "right";
    ctx.textBaseline = "top";
    ctx.fillText("Level: " + level, 400, 32);

    ctx.fillStyle = "rgb(250, 250, 250)";
    ctx.font = "24px Verdana";
    ctx.textAlign = "center";
    ctx.textBaseline = "top";
    if(debugVariable == true)
    {
        var coords = 'Co-ords(' + hero.x.toFixed(2) + "," + hero.y.toFixed(2) + ')';
    } 
    else {
        coords = "";
    }
    ctx.fillText(coords , 200, 450);
}
ctx.fillStyle = "rgb(250, 250, 250)";
ctx.font = "18px Verdana";
ctx.textAlign = "center";
ctx.textBaseline = "top";
if(debugVariable == true)
{
    deText = "Degbug: on";
}
else
{
    deText = "";
}
ctx.fillText(deText, 100, 100);
};
完整代码

    var debugVariable = false;
function dBugVariableFunction()
{
    debugVariable = !debugVariable;
}
var changeNumber = false;
function getAnswer(){
   var answer = document.getElementById('answer');
   var userAnswer = answer.value;
    if (!userAnswer || userAnswer == ""){
        alert('You must enter a number for it to be marked!');
    }
    else if (num1 * num2 == userAnswer || debugVariable == true || num3 * num4 == userAnswer || num5 * num6 == userAnswer)
    {
        alert('Correct');
            ++level;
            hideGame = 0;
            displayQuestion = 0;
            document.getElementById("answer").value="";
    }
    else if (num1 * num2 != userAnswer || num3 * num4 != userAnswer || num5 * num6 != userAnswer)
    {
        alert('Incorrect');
        if(level == 1)
        {

        }
        else
        {
            --monstersCaught;
        }
    }
  }
//checking if canvas is supported
function checkCanvasSupported(){
  var element = document.createElement('canvas');
  return !!(element.getContext && element.getContext('2d'));
}
//if canvas not supported then alert user
if (!checkCanvasSupported()){
    alert('Sorry cavas isn\'t supported by your internet browser!');
}

// Create the canvas
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
canvas.width = 512;
canvas.height = 480;
document.body.appendChild(canvas);

// Background image
var bgReady = false;
var bgImage = new Image();
bgImage.onload = function () {
    bgReady = true;
};
bgImage.src = "images/background.png";

// Hero image
var heroReady = false;
var heroImage = new Image();
heroImage.onload = function () {
    heroReady = true;
};
heroImage.src = "images/hero.png";

// Hero image
var enemyReady = false;
var enemyImage = new Image();
enemyImage.onload = function () {
    enemyReady = true;
};
enemyReady.src = "images/hero.png";

// Monster image
var monsterReady = false;
var monsterImage = new Image();
monsterImage.onload = function () {
    monsterReady = true;
};
monsterImage.src = "images/monster.png";
// Game objects
var hero = {
    speed: 256 // movement in pixels per second
};
var enemy = {
    speed: 128 // movement in pixels per second
};
var monster = {};
var monster1 = {};
var monster2 = {};
var monstersCaught = 0;
var level = 1;
var displayQuestion = 1;
var gameOver = false;
var hideGame = 1;
var keysDown = {}; // Handle keyboard controls

addEventListener("keydown", function (e) {
    keysDown[e.keyCode] = true;
}, false);

addEventListener("keyup", function (e) {
    delete keysDown[e.keyCode];
}, false);

// Reset the game when the player catches a monster
var reset = function () {
    hero.x = canvas.width / 2;
    hero.y = canvas.height / 2;
};

var reset0 = function () {
    hero.x = canvas.width / 2;
    hero.y = canvas.height / 2;
    // Throw the monster somewhere on the screen randomly
    monster.x = 32 + (Math.random() * (canvas.width - 64));
    monster.y = 32 + (Math.random() * (canvas.height - 64));
}

var reset1 = function () {
    hero.x = canvas.width / 2;
    hero.y = canvas.height / 2;

    // Throw the monster somewhere on the screen randomly
    monster1.x = 32 + (Math.random() * (canvas.width - 64));
    monster1.y = 32 + (Math.random() * (canvas.height - 64));
};

var reset2 = function () {
    hero.x = canvas.width / 2;
    hero.y = canvas.height / 2;

    // Throw the monster somewhere on the screen randomly
    monster2.x = 32 + (Math.random() * (canvas.width - 64));
    monster2.y = 32 + (Math.random() * (canvas.height - 64));
};

// Update game objects
var update = function (modifier) {
  //  enemy.position = Vector3.MoveTowards(enemy.position, hero.transform.position, .03);
    if (38 in keysDown) { // Player holding up
        hero.y -= hero.speed * modifier;
        if(hero.y < 0){
            reset();
        }
    }
    if (40 in keysDown) { // Player holding down
        hero.y += hero.speed * modifier;
        if(hero.y > canvas.height){
        reset();

        }
    }
    if (37 in keysDown) { // Player holding left
        hero.x -= hero.speed * modifier;
        if(hero.x < 0){
            reset();
        }
    }
    if (39 in keysDown) { // Player holding right
        hero.x += hero.speed * modifier;
        if(hero.x > canvas.width){
            reset();
        }
    }
    // Are they touching?
    if (
        hero.x <= (monster.x + 32)
        && monster.x <= (hero.x + 32)
        && hero.y <= (monster.y + 32)
        && monster.y <= (hero.y + 32)
    ) {
        ++monstersCaught;
        reset0();
    }
    else if (
        hero.x <= (monster1.x + 32)
        && monster1.x <= (hero.x + 32)
        && hero.y <= (monster1.y + 32)
        && monster1.y <= (hero.y + 32)
    ) {
        ++monstersCaught;
        reset1();
    }
    else if (
        hero.x <= (monster2.x + 32)
        && monster2.x <= (hero.x + 32)
        && hero.y <= (monster2.y + 32)
        && monster2.y <= (hero.y + 32)
    ) {
        ++monstersCaught;
        reset2();
    }
    if (monstersCaught == 5 && level != 3){

        hideGame = 1;
        displayQuestion = 1;
    }
    else if (monstersCaught == 10 && level != 4){
        hideGame = 1;
        displayQuestion = 1;
    }
    else if (monstersCaught == 0 && level != 1){
        hideGame = 1;
        displayQuestion = 1;
        gameOver = true;
    }


};  

    var num1 = Math.floor(Math.random() * 5);
    var num2 = Math.floor(Math.random() * 4);
    var num3 = Math.floor(Math.random() * 11);
    var num4 = Math.floor(Math.random() * 9);
    var num5 = Math.floor(Math.random() * 21);
    var num6 = Math.floor(Math.random() * 15);  
// Draw everything
var render = function () {
    if(displayQuestion == 1 && hideGame == 1)
    {
        if(gameOver == true)
        {
            ctx.fillStyle = "rgb(250, 250, 250)";
            ctx.font = "24px Verdana";
            ctx.textAlign = "right";
            ctx.textBaseline = "top";
            ctx.fillText("Game Over Dude");
        }
        else
        {
            if (bgReady) 
            {
                ctx.drawImage(bgImage, 0, 0);
            }
            ctx.fillStyle = "rgb(250, 250, 250)";
            ctx.font = "24px Verdana";
            ctx.textAlign = "right";
            ctx.textBaseline = "top";
            ctx.fillText("Level: " + level, 400, 32);

            ctx.fillStyle = "rgb(250, 250, 250)";
            ctx.font = "40px Verdana";
            ctx.textAlign = "center";
            ctx.textBaseline = "top";
            if(level == 1)
            {
                var text = "What is " + num1 + " x " + num2 + "?";
            }
            else if(level == 2)
            {
                var text = "What is " + num3 + " x " + num4 + "?";
            }
            else if(level >= 3)
            {
                var text = "What is " + num5 + " x " + num6 + "?";
            }
            ctx.fillText(text, canvas.width / 2, canvas.height / 2);
        }
    }
    else if(displayQuestion == 0 && hideGame == 0)
    {
        if (bgReady) {
            ctx.drawImage(bgImage, 0, 0);
        }
        if (heroReady) {
            ctx.drawImage(heroImage, hero.x, hero.y);
        }
        if (monsterReady) {
            ctx.drawImage(monsterImage, monster.x, monster.y);
            ctx.drawImage(monsterImage, monster1.x, monster1.y);
            ctx.drawImage(monsterImage, monster2.x, monster2.y);
        }
        // Score
        ctx.fillStyle = "rgb(250, 250, 250)";
        ctx.font = "24px Verdana";
        ctx.textAlign = "left";
        ctx.textBaseline = "top";
        ctx.fillText("Score: " + monstersCaught, 32, 32);

        ctx.fillStyle = "rgb(250, 250, 250)";
        ctx.font = "24px Verdana";
        ctx.textAlign = "right";
        ctx.textBaseline = "top";
        ctx.fillText("Level: " + level, 400, 32);

        ctx.fillStyle = "rgb(250, 250, 250)";
        ctx.font = "24px Verdana";
        ctx.textAlign = "center";
        ctx.textBaseline = "top";
        if(debugVariable == true)
        {
            var coords = 'Co-ords(' + hero.x.toFixed(2) + "," + hero.y.toFixed(2) + ')';
        } 
        else {
            coords = "";
        }
        ctx.fillText(coords , 200, 450);
    }
    ctx.fillStyle = "rgb(250, 250, 250)";
    ctx.font = "18px Verdana";
    ctx.textAlign = "center";
    ctx.textBaseline = "top";
    if(debugVariable == true)
    {
        deText = "Degbug: on";
    }
    else
    {
        deText = "";
    }
    ctx.fillText(deText, 100, 100);
};
// The main game loop
var main = function () {
    var now = Date.now();
    var delta = now - then;

    update(delta / 1000);
    render();

    then = now;
};
// Let's play this game!
reset();
reset0();
reset1();
reset2();
var then = Date.now();
setInterval(main, 1); // Execute as fast as possible
var-debugVariable=false;
函数dBugVariableFunction()
{
debugVariable=!debugVariable;
}
var changeNumber=假;
函数getAnswer(){
var answer=document.getElementById('answer');
var userAnswer=answer.value;
如果(!userAnswer | | userAnswer==“”){
警报('您必须输入一个数字才能对其进行标记!');
}
else if(num1*num2==userAnswer | | debugVariable==true | | num3*num4==userAnswer | | num5*num6==userAnswer)
{
警惕(“正确”);
++水平;
hideGame=0;
显示问题=0;
document.getElementById(“答案”).value=“”;
}
else if(num1*num2!=userAnswer | | num3*num4!=userAnswer | | num5*num6!=userAnswer)
{
警报(“不正确”);
如果(级别==1)
{
}
其他的
{
--怪兽;
}
}
}
//检查是否支持画布
函数checkCanvasSupported(){
var-element=document.createElement('canvas');
return!!(element.getContext&&element.getContext('2d');
}
//如果不支持画布,则通知用户
如果(!checkCanvasSupported()){
警报('抱歉,您的internet浏览器不支持cavas!');
}
//创建画布
var canvas=document.getElementById(“myCanvas”);
var ctx=canvas.getContext(“2d”);
canvas.width=512;
canvas.height=480;
document.body.appendChild(画布);
//背景图像
var bgrady=false;
var bgImage=新图像();
bgImage.onload=函数(){
bgrady=true;
};
bgImage.src=“images/background.png”;
//英雄形象
var-heroredy=false;
var-mage=新图像();
heroMage.onload=函数(){
heroReady=true;
};
heroMage.src=“images/hero.png”;
//英雄形象
var enemyReady=false;
var enemyImage=新图像();
enemyImage.onload=函数(){
enemyReady=true;
};
enemyReady.src=“images/hero.png”;
//怪物形象
var=false;
var monsterImage=新图像();
monsterImage.onload=函数(){
monsterReady=true;
};
monsterImage.src=“images/monster.png”;
//游戏物品
var hero={
速度:256//以像素/秒为单位移动
};
var敌人={
速度:128//以像素/秒为单位移动
};
var={};
变量1={};
var=2{};
var monstersCaught=0;
风险等级=1;
var=1;
var gameOver=false;
var hideGame=1;
var keysDown={};//处理键盘控制
addEventListener(“向下键控”,函数(e){
keysDown[e.keyCode]=真;
},假);
addEventListener(“键控”,函数(e){
删除keysDown[e.keyCode];
},假);
//当玩家抓到怪物时重置游戏
变量重置=函数(){
hero.x=canvas.width/2;
hero.y=canvas.height/2;
};
var reset0=函数(){
hero.x=canvas.width/2;
hero.y=canvas.height/2;
//随机将怪物扔到屏幕上的某个地方
monster.x=32+(Math.random()*(canvas.width-64));
monster.y=32+(Math.random()*(canvas.height-64));
}
var reset1=函数(){
hero.x=canvas.width/2;
hero.y=canvas.height/2;
//随机将怪物扔到屏幕上的某个地方
monster1.x=32+(Math.random()*(canvas.width-64));
monster1.y=32+(Math.random()*(canvas.height-64));
};
var reset2=函数(){
hero.x=canvas.width/2;
hero.y=canvas.height/2;
//随机将怪物扔到屏幕上的某个地方
monster2.x=32+(Math.random()*(canvas.width-64));
monster2.y=32+(Math.random()*(canvas.height-64));
};
//更新游戏对象
变量更新=函数(修饰符){
//敌方.position=Vector3.移动方向(敌方.position,英雄.transform.position,.03);
如果(38键向下){//玩家举起
hero.y-=hero.speed*修饰符;
if(hero.y<0){
重置();
}
}
如果(40英寸向下键){//玩家按住
hero.y+=hero.speed*修改器;
if(hero.y>canvas.height){
重置();
}
}
如果(37英寸向下键){//玩家左握
hero.x-=hero.speed*修改器;
如果(英雄x<0){
重置();
}
}
如果(39键向下){//玩家保持右侧
hero.x+=hero.speed*修改器;
if(hero.x>canvas.width){
重置();
}
}
//他们在动吗?
如果(

hero.x你说你的问题在于

ctx.fillText(text, canvas.width / 2, canvas.height / 2);
Uncaught TypeError: Not enough arguments
他们说参数是

DOMString
textToDraw

浮动
x

浮动
y

[可选]浮点
maxWidth

看起来你传递的参数数量还不错。这个问题是否持续存在

ctx.fillText("Hello World", 5, 5);
如果可行,请检查
canvas
是否按预期定义,宽度和高度是否为整数(未定义)。这可以通过
控制台完成。在前面的行中记录

console.log(canvas, canvas.width, canvas.height);
如果问题出现在这里,您需要为这种情况提供额外的逻辑,或者使用不同的方法(例如使用
offsetWidth
等)


如果这不起作用,浏览器可能在没有最后一个可选参数的情况下实现了它,请键入一个足够大的数字,以便不必担心,例如,
1280

向下数了30行,但没有找到可能产生此错误的函数。请张贴或突出显示您遇到问题的确切位置我现在用粗体显示了,我如果您希望@MikeW,可以将整个代码放在上面。您发布的代码片段中没有初始化变量
canvas
。您确定可以从函数中访问该变量吗?@MikeW新代码已上载