87,994
社区成员
发帖
与我相关
我的任务
分享
<style>
* {
margin: 0 auto;
padding: 0;
}
canvas {
margin-top: 80px;
width: 1000px;
height: 500px;
box-shadow: 0 0 5px #222;
display: block;
}
</style>
<script src="jquery.js"></script>
<script>
$(function () {
var cav = $("#cav");
var ctx = cav[0].getContext("2d");
var mx = Math.floor(Math.random() * 500) + 500;
var my = Math.floor(Math.random() * 500);
//速度
var vx = 0, vy = 0;
ctx.lineWidth = 2
//绘制弹弓和小鸟
var dx = 150, dy = 100, x0 = 150, y0 = 100;
function hiuzhi(x, y) {
ctx.strokeStyle = "#f00";
//绘制弹弓
ctx.beginPath();
ctx.moveTo(150, 500);
ctx.lineTo(150, 200);
ctx.lineTo(100, 100);
ctx.lineTo(150, 200);
ctx.lineTo(200, 100);
ctx.stroke();
ctx.closePath()
//绘制鸟
ctx.beginPath();
ctx.strokeStyle = "#00f"
ctx.lineWidth = 5;
ctx.arc(x, y, 5, 1.6, Math.PI / 2, false)
ctx.stroke();
ctx.closePath()
}
//绘制目标
function hzmb(x, y) {
ctx.beginPath()
ctx.strokeStyle = "#a72"
ctx.strokeRect(x, y, 20, 20)
ctx.fill()
}
function hzx(dx, dy) {
//绘制弹弓线
ctx.beginPath()
ctx.strokeStyle = "#000"
ctx.moveTo(dx, dy)
ctx.lineTo(200, 100)
ctx.lineTo(dx, dy)
ctx.lineTo(100, 100)
ctx.stroke()
}
hiuzhi(dx, dy);
hzx(dx, dy)
hzmb(mx, my)
var moveFlag = false;
cav.on("mousedown", function (e) {
var x = e.offsetX;
var y = e.offsetY;
if (x > x0 - 10 && x < x0 + 10 && y > y0 - 10 && y < y0 + 10) {
moveFlag = true;
}
})
cav.on("mousemove", function (ev) {
if (!moveFlag) return;
ctx.clearRect(0, 0, 1000, 500)
hiuzhi(dx, dy);
hzx(dx, dy)
hzmb(mx, my)
dx = ev.offsetX;
dy = ev.offsetY;
})
cav.on("mouseup", function () {
if (!moveFlag) return;
moveFlag = false;
alert(123)
vx = (x0 - dx) / 80;
vy = (y0 - dy) / 100;
var vy0 = vy;
var t = 0;
var timers = setInterval(function () {
t = t + 0.1;
vy = vy0 + 0.8 * t
ctx.clearRect(0, 0, 1000, 500)
hiuzhi(dx, dy);
hzmb(mx, my)
dx = dx + vx * t;
dy = dy + t * (vy0 + vy) / 2;
if (dx > mx - 10 && dx < mx + 15 && dy < my + 10 && dy > my - 15) {
alert("命中")
clearInterval(timers);
}
if (dx > 1000 || dy > 500 || dx < 0 || dy < -1200) {
clearInterval(timers);
hiuzhi(x0, y0);
hzx(x0, y0);
hzmb(mx, my);
dx = x0, dy = y0;
}
}, 100)
})
})
</script>
</head>
<body>
<canvas id="cav" width="1000" height="500"></canvas>
</body>
</html>