Escolar Documentos
Profissional Documentos
Cultura Documentos
Inteligncia Artificial
ATPS
Cincia da Computao
Oitava Serie
INTELIGNCIA ARTIFICIAL
Mapa
Cidades
o Cidade Azul
o Cidade Laranja
o Cidade Verde
o Cidade Roxa
o Cidade Cinza
Custo do caminho
Melhor rota:
Custo total:
471Km
Requisitos do programa
ctx.canvas.width = window.innerWidth / 2;
ctx.canvas.height = window.innerHeight / 2;
var BB = canvas.getBoundingClientRect();
var offsetX = BB.left;
var offsetY = BB.top;
var total = 0;
var totalI = 0;
name: "Cinza",
x: 200,
y: 50 - 15,
width: 50,
height: 50,
fill: "#444444",
isDragging: false,
node: "Roxo"
});
rects.push({
name: "Laranja",
x: 50,
y: 200,
width: 50,
height: 50,
fill: "#ff550d",
isDragging: false,
node: "Azul"
});
rects.push({
name: "Roxo",
x: 200,
y: 200,
width: 50,
height: 50,
fill: "#800080",
isDragging: false,
node: "Laranja"
});
rects.push({
name: "Azul",
x: 50,
y: 35,
width: 50,
height: 50,
fill: "#0c64e8",
isDragging: false,
node: "Verde"
});
rects.push({
name: "Verde",
x: 125,
y: 120,
width: 50,
height: 50,
fill: "#00B736",
isDragging: false,
node: "Cinza"
});
canvas.onmousedown = myDown;
canvas.onmouseup = myUp;
canvas.onmousemove = myMove;
//Desenhando Objetos
draw();
ctx.rect(x, y, w, h);
ctx.closePath();
}
ctx.fill();
ctx.fillStyle = "#FAF7F8";
ctx.fillStyle = r.fill;
//pos[i] = ctx.save();
rec0.innerText = "x: " + rects[0].x + " y: " + rects[0].y + " " + rects[0].name;
rec1.innerText = "x: " + rects[1].x + " y: " + rects[1].y + " " + rects[1].name;
rec2.innerText = "x: " + rects[2].x + " y: " + rects[2].y + " " + rects[2].name;
rec3.innerText = "x: " + rects[3].x + " y: " + rects[3].y + " " + rects[3].name;
}
rec4.innerText = "x: " + rects[4].x + " y: " + rects[4].y + " " + rects[4].name;
e.stopPropagation();
// pega a posicao do mouse
dragok = false;
if (mx > r.x && mx < r.x + r.width && my > r.y && my < r.y + r.height) {
dragok = true;
r.isDragging = true;
// guarda as posies
startX = mx;
}
startY = my;
function myUp(e) {
e.stopPropagation();
// clear all the dragging flags
dragok = false;
rects[i].isDragging = false;
e.preventDefault();
e.stopPropagation();
var mx = parseInt(e.clientX - offsetX);
var my = parseInt(e.clientY - offsetY);
var dx = mx - startX;
var dy = my - startY;
for (var i = 0; i < rects.length; i++) {
var r = rects[i];
if (r.isDragging) {
r.x += dx;
r.y += dy;
draw();
startX = mx;
startY = my;
return Math.sqrt(resultadoTotal);
resultadosInverso = [];
//---------------------
if (objInicio != objFim) {
BuscarRotaInversa(objInicio, objFim);
total = 0;
if (rects[i].name == objInicio) {
if (rects[i].node == rects[k].name) {
resultados.push({
de: rects[i].name,
para: rects[k].name,
});
if (rects[k].name == objFim) {
i = rects.length;
k = i;
}
break;
objInicio = rects[k].name;
i = -1;
break;
total += resultados[t].distancia;
popularTabelas();
else {
Cincia da Computao 8 Semestre
if (rects[i].node == rects[k].name) {
resultadosInverso.push({
de: rects[k].name,
para: rects[i].name,
});
if (rects[i].name == objF) {
i = rects.length;
k = i;
}
break;
objI = rects[i].name;
i = -1
break;
totalI += resultadosInverso[t].distancia;
function carregarSelect() {
"</option>";
}
select2.innerHTML = select.innerHTML;
10
function popularTabelas() {
tbCurta.innerHTML = "";
tbLongo.innerHTML = "";
tbCurta.innerHTML
tbLongo.innerHTML
"<thead><tr><th>De</th><th>Para</th><th>Distancia</th></tr></thead>";
"<thead><tr><th>De</th><th>Para</th><th>Distancia</th></tr></thead>";
if (total < totalI) {
+=
"<tfoot><tr><td></td><td></td><td><b>"
Math.round(total) + "</b></td></tr></tfoot>";
}
if (k == resultadosInverso.length - 1) {
tbLongo.innerHTML
+=
"<tfoot><tr><td></td><td></td><td><b>"
Math.round(totalI) + "</b></td></tr></tfoot>";
else {
if (k == resultadosInverso.length - 1) {
tbCurta.innerHTML
+=
"<tfoot><tr><td></td><td></td><td><b>"
Math.round(totalI) + "</b></td></tr></tfoot>";
}
+=
"<tr><td>"
resultados[i].de
"</td><td>"
11
tbLongo.innerHTML
+=
"<tfoot><tr><td></td><td></td><td><b>"
Math.round(total) + "</b></td></tr></tfoot>";
function LigarPontos() {
var FPS = 50;
setInterval(function () {
if (rects[i].node == rects[j].name) {
ctx.beginPath();
ctx.lineWidth = 5;
break;
}, 1000 / FPS);
carregarSelect();
LigarPontos();