gpt4 book ai didi

javascript - 如何检测对象是否位于 Canvas 元素的坐标处?

转载 作者:行者123 更新时间:2023-11-30 08:49:18 24 4
gpt4 key购买 nike

我正致力于在 canvas 中创建一个井字游戏。我目前停留在检测 Canvas 上的 x/y 坐标处是否已经有符号(X 或 O)的位置。

我尝试使用 ImageData 来检查元素是否存在,但如果不存在则返回错误。我还想也许我可以为正方形或符号分配一个 ID。然而,从我读到的内容来看,这似乎是不可能的。

如有任何帮助,我们将不胜感激。

你可以看到游戏在这里运行http://jsfiddle.net/weeklygame/dvJ5X/30/

function TTT() {
this.canvas = document.getElementById('ttt');
this.context = this.canvas.getContext('2d');
this.width = this.width;
this.height = this.height;

this.square = 100;
this.boxes = [];
this.turn = Math.floor(Math.random() * 2) + 1;

this.message = $('.message');
};

var ttt = new TTT();

TTT.prototype.currentPlayer = function() {
var symbol = (this.turn === 1) ? 'X' : 'O';
ttt.message.html('It is ' + symbol + '\'s turn');
};

// Draw the board
TTT.prototype.draw = function(callback) {
// Draw Grid
for(var row = 0; row <= 200; row += 100) {
var group = [];
for(var column = 0; column <= 200; column += 100) {
group.push(column);
this.context.strokeStyle = 'white';
this.context.strokeRect(column,row,this.square,this.square);
};
this.boxes.push(group);
};

callback;
};

// Get center of the click area cordinates
TTT.prototype.cordinates = function(e) {
var row = Math.floor(e.clientX / 100) * 100,
column = Math.floor(e.clientY / 100) * 100;

return [row, column];
};

// Check if the clicked box has symbol
TTT.prototype.check = function(row, column) {

};

// Get cordinates and set image in container
TTT.prototype.click = function(e) {
var cordinates = ttt.cordinates(e),
x = cordinates[0] + 100 / 2,
y = cordinates[1] + 100 / 2,
image = new Image();

if (ttt.turn === 1) {
image.src = 'http://s8.postimg.org/tdp7xn6lt/naught.png';
ttt.turn = 2;
} else {
image.src = 'http://s8.postimg.org/9kd44xt81/cross.png';
ttt.turn = 1;
};

ttt.context.drawImage(image, x - (image.width / 2), y - (image.height / 2));
ttt.currentPlayer();
};

function render() {
ttt.draw($('#ttt').on("click", ttt.click));
ttt.currentPlayer();
};

(function init() {
render();
})();

最佳答案

使用数组跟踪网格位置不是更容易吗?当你在网格上放置一些东西时,在数组中分配那个位置。这样,您不必想出一种从 Canvas 中读取它的方法,而只需查看数组即可。这还允许您在需要时从数组中快速重绘 Canvas ,例如当屏幕调整大小时...

关于javascript - 如何检测对象是否位于 Canvas 元素的坐标处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com