Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Javascript 如何仅使用context.save/context.restore、if语句、画布和动画制作一个tic-tac-toe游戏?_Javascript_If Statement_Canvas - Fatal编程技术网

Javascript 如何仅使用context.save/context.restore、if语句、画布和动画制作一个tic-tac-toe游戏?

Javascript 如何仅使用context.save/context.restore、if语句、画布和动画制作一个tic-tac-toe游戏?,javascript,if-statement,canvas,Javascript,If Statement,Canvas,如何仅使用context.save/context.restore、if语句、画布和动画制作tic-tac-toe游戏?我还试图使它,如果图像X显示在框1中,图像O不能显示在同一个框中,所以你不能作弊 我不知道如何防止有人把图像O放在图像X上,反之亦然。有人,请告诉我一种方法,防止人们在X上加O,反之亦然 这就是我目前所拥有的 重新启动 var canvas=document.getElementById(“canvas”); var context=canvas.getContext('2

如何仅使用context.save/context.restore、if语句、画布和动画制作tic-tac-toe游戏?我还试图使它,如果图像X显示在框1中,图像O不能显示在同一个框中,所以你不能作弊

我不知道如何防止有人把图像O放在图像X上,反之亦然。有人,请告诉我一种方法,防止人们在X上加O,反之亦然

这就是我目前所拥有的



重新启动 var canvas=document.getElementById(“canvas”); var context=canvas.getContext('2d'); 变量c1=1 变量c2=1 变量c3=1 变量c4=1 变量c5=1 变量c6=1 变量c7=1 变量c8=1 变量c9=1 var cup1=2 var cup2=2 var cup3=2 var cup4=2 var cup5=2 var cup6=2 var cup7=2 var cup8=2 var cup9=2 //水平线和垂直线 context.beginPath(); 上下文。移动到(40145); 上下文。lineTo(360145); context.lineWidth=5 context.lineCap='round'; stroke(); context.beginPath(); 上下文。移动到(40260); lineTo(360260); context.lineCap='round'; stroke(); context.beginPath(); 上下文。moveTo(260,40); 上下文。lineTo(260360); context.lineCap='round'; stroke(); context.beginPath(); 上下文。moveTo(140,40); lineTo(140360); context.lineCap='round'; stroke(); context.font=“italic bold 30pt Calibri” 上下文。填充文本(“1”,75,325); 上下文。填充文本(“2”,190,325); 上下文。填充文本(“3”,305,325); 上下文。填充文本(“4”,75,215); 上下文。填充文本(“5”,190,215); 上下文。填充文本(“6”,305,215); 上下文。填充文本(“7”,75,105); 上下文。填充文本(“8”,190,105); 上下文。填充文本(“9”,305,105); 函数重新启动(){ 文档。位置。重新加载(true); } document.onkeydown=Nombre; Nombreup1=49;Nombreup2=50;Nombreup3=51; Nombreup4=52;Nombreup5=53;Nombreup6=54; Nombreup7=55;nombrup8=56;Nombreup9=57; Nombre7=103;Nombre8=104;Nombre9=105; Nombre4=100;Nombre5=101;Nombre6=102; Nombre3=99;Nombre2=98;Nombre1=97; 函数名(e){ ToucheCournate=e.keyCode; if(touchecourant==Nombre7){ lettreO7(); }else if(ToucheCournate==Nombre8){ lettreO8(); }else if(ToucheCournate==Nombre9){ lettreO9(); }else if(ToucheCournate==Nombre6){ lettreO6(); }else if(ToucheCournate==Nombre5){ lettreO5(); }else if(ToucheCournate==Nombre4){ lettreO4(); }否则如果(ToucheCournate==Nombre3){ lettreO3(); }否则如果(ToucheCournate==Nombre2){ lettreO2(); }否则如果(ToucheCournate==Nombre1){ lettreO1(); } ///////////////////////////////////////// if(touchecourant==Nombreup7){ lettreX7(); }否则如果(ToucheCournate==Nombreup8){ lettreX8(); }否则如果(ToucheCournate==Nombreup9){ lettreX9(); }否则如果(ToucheCournate==Nombreup6){ lettreX6(); }else if(ToucheCournate==Nombreup5){ lettreX5(); }else if(ToucheCournate==Nombreup4){ lettreX4(); }else if(ToucheCournate==Nombreup3){ lettreX3(); }否则如果(ToucheCournate==Nombreup2){ lettreX2(); }否则如果(ToucheCournate==Nombreup1){ lettreX1(); } } 函数lettreO1() { lettreO=新图像(); lettreO.src='O.jpg'; lettreO.onload=函数(){ 背景。drawImage(lettreO,40265,95,93); } } 函数lettreX1() { lettreX=新图像(); lettreX.src='X.PNG'; lettreX.onload=函数(){ drawImage(lettreX,40265,95,93); } } 函数lettreO2() { lettreO=新图像(); lettreO.src='O.jpg'; lettreO.onload=函数(){ drawImage(lettreO,145,265110,93); } } 函数lettreX2() { lettreX=新图像(); lettreX.src='X.PNG'; lettreX.onload=函数(){ drawImage(lettreX,145,265110,93); } } 函数lettreO3() { lettreO=新图像(); lettreO.src='O.jpg'; lettreO.onload=函数(){ context.drawImage(lettreO
// Line horizontale et verticale 
context.fillText("9", 305, 105);
    var KEYBOARD = {
        NUMBER_UP_1: 49,
        ...
        NUMBER_UP_9: 57,
        NUMBER_1: 97,
        ...
        NUMBER_9: 105,
    };
function memorizeMove(memoryContext, letter, position) {
    memoryContext.fillStyle = letter === `O` ? 'red' : 'blue';
    var coords = getCoordinatesFromPosition(position);
    memoryContext.fillRect(coords.x, coords.y, 1, 1);
}
function letterAt(memoryContext, position) {
    var color = getPixelAt(memoryContext, position);

  return color === 'red' 
    ? 'O'
    : color === 'blue'
        ? 'X'
      : '';
}
function getPixelAt(memoryContext, position) {
  var coords = getCoordinatesFromPosition(position);
  var pixel = memoryContext.getImageData(coords.x, coords.y, 1, 1);
  var data = pixel.data;
  var red = data[0];
  var blue = data[2];
  var color = '';
  if (red === 255) {
    color = 'red';
  } else if (blue === 255) {
    color = 'blue';
  }
  return color;
}
function getCoordinatesFromPosition(position) {
    var x = [1, 4, 7].includes(position) 
        ? 0
        : [2, 5, 8].includes(position) 
            ? 1
            : 2;
    var y = position < 4 
        ? 2
        : position < 7
            ? 1
            : 0;
    return { x: x, y: y };
}
function winOrLoss(memoryContext) {
    var letters = [];
    for (var i = 1; i <= 9; i++) {
        letters.push(letterAt(memoryContext, i));
  }

  if (letters[0] === letters[1] && letters[1] === letters[2] && letters[0] !== ''
        || letters[3] === letters[4] && letters[4] === letters[5] && letters[3] !== ''
        || letters[6] === letters[7] && letters[7] === letters[8] && letters[6] !== ''
        || letters[0] === letters[3] && letters[3] === letters[6] && letters[0] !== ''
        || letters[1] === letters[4] && letters[4] === letters[7] && letters[1] !== ''
        || letters[2] === letters[5] && letters[4] === letters[8] && letters[2] !== ''
        || letters[0] === letters[4] && letters[4] === letters[8] && letters[0] !== ''
        || letters[2] === letters[4] && letters[4] === letters[7] && letters[2] !== ''
      ) {
    return letters[0];
  }
}