火柴人大逃亡
欢迎来到程序小院
火柴人大逃亡
玩法:左右两边火柴人,点击左边左边火柴人跳跃,点击右边右边跳跃,
上下快速移动道路,躲过障碍物,看你能坚持多久,快去火柴人大逃亡吧^^。
开始游戏
https://www.ormcc.com/play/gameStart/266

html
<canvas id="c2canvas" width="640" height="960"></canvas>
css
html, body {background: #fff;color: #333;overflow: hidden;touch-action: none;-ms-touch-action: none;
}
canvas {touch-action-delay: none;touch-action: none;-ms-touch-action: none;
}
js
function resetdpsubmit() {g9param.issubmit = false
}
var g9param = {resetId: "",issubmit: false
};
var cr = {};
cr.plugins_ = {}, cr.behaviors = {}, "function" != typeof Object.getPrototypeOf && (
Object.getPrototypeOf = "object" == typeof "test".__proto__ ? function(e) {return e.__proto__
} : function(e) {return e.constructor.prototype
}),
function() {function e(e, t) {this.x = e, this.y = t, cr.seal(this)}function t(e, t, n, r) {this.set(e, t, n, r), cr.seal(this)}function n() {this.tlx = 0, this.tly = 0, this.trx = 0, this.try_ = 0, this.brx = 0,this.bry = 0, this.blx = 0, this.bly = 0, cr.seal(this)}function r(e, t, n, r) {t > e ? r > n ? (h = n > e ? e : n, p = t > r ? t : r) : (h = r > e ? e : r,p = t > n ? t : n) : r > n ? (h = n > t ? t : n, p = e > r ? e : r) : (h = r > t ? t : r, p = e > n ? e : n)}function i() {this.s = null, this.items = null, this.item_count = 0, b && (this.s = new Set),this.values_cache = [], this.cache_valid = !0, cr.seal(this)}function s(e) {w[E++] = e}function o() {this.c = 0, this.y = 0, this.t = 0, this.sum = 0, cr.seal(this)}function u(e) {this.pts_cache = [], this.bboxLeft = 0, this.bboxTop = 0, this.bboxRight = 0, this.bboxBottom = 0, this.convexpolys = null, this.set_pts(e), cr.seal(this)}function a(e, t) {this.cellwidth = e, this.cellheight = t, this.cells = {}}function f(e, t, n) {var r;return a.prototype.totalCellCount++, x.length ? (r = x.pop(), r.grid = e, r.x = t, r.y = n, r) : new cr.GridCell(e, t, n)}function l(e) {a.prototype.totalCellCount--, e.objects.clear(), x.length < 1e3 && x.push(e)}function c(e, t, n) {this.grid = e, this.x = t, this.y = n, this.objects = new cr.ObjectSet}cr.logexport = function(e) {window.console && window.console.log && window.console.log(e)}, cr.seal = function(e) {return e}, cr.freeze = function(e) {return e}, cr.is_undefined = function(e) {return "undefined" == typeof e}, cr.is_number = function(e) {return "number" == typeof e}, cr.is_string = function(e) {return "string" == typeof e}, cr.isPOT = function(e) {return e > 0 && 0 === (e - 1 & e)}, cr.nextHighestPowerOfTwo = function(e) {--e;for (var t = 1; 32 > t; t <<= 1) e |= e >> t;return e + 1}, cr.abs = function(e) {return 0 > e ? -e : e}, cr.max = function(e, t) {return e > t ? e : t}, cr.min = function(e, t) {return t > e ? e : t}, cr.PI = Math.PI, cr.round = function(e) {return e + .5 | 0}, cr.floor = function(e) {return e >= 0 ? 0 | e : (0 | e) - 1}, cr.ceil = function(e) {var t = 0 | e;return t === e ? t : t + 1}, e.prototype.offset = function(e, t) {return this.x += e, this.y += t, this}, e.prototype.mul = function(e, t) {return this.x *= e, this.y *= t, this}, cr.vector2 = e, cr.segments_intersect = function(e, t, n, r, i, s, o, u) {var a, f, l, c, h, p, d, v;if (n > e ? (f = e, a = n) : (f = n, a = e), o > i ? (p = i, h = o) : (p = o, h = i), p > a || f > h) return !1;if (r > t ? (c = t, l = r) : (c = r, l = t), u > s ? (v = s, d = u) : (v = u,d = s), v > l || c > d) return !1;var m = i - e + o - n,g = s - t + u - r,y = n - e,b = r - t,w = o - i,E = u - s,S = cr.abs(b * w - E * y),x = w * g - E * m;if (cr.abs(x) > S) return !1;var T = y * g - b * m;return cr.abs(T) <= S}, t.prototype.set = function(e, t, n, r) {this.left = e, this.top = t, this.right = n, this.bottom = r}, t.prototype.copy = function(e) {this.left = e.left, this.top = e.top, this.right = e.right, this.bottom = e.bottom}, t.prototype.width = function() {return this.right - this.left}, t.prototype.height = function() {return this.bottom - this.top}, t.prototype.offset = function(e, t) {return this.left += e, this.top += t, this.right += e, this.bottom += t, this}, t.prototype.normalize = function() {var e = 0;this.left > this.right && (e = this.left, this.left = this.right, this.right = e), this.top > this.bottom && (e = this.top, this.top = this.bottom, this.bottom = e)}, t.prototype.intersects_rect = function(e) {return !(e.right < this.left || e.bottom < this.top || e.left > this.right || e.top > this.bottom)}, t.prototype.intersects_rect_off = function(e, t, n) {return !(e.right + t < this.left || e.bottom + n < this.top || e.left + t > this.right || e.top + n > this.bottom)}, t.prototype.contains_pt = function(e, t) {return e >= this.left && e <= this.right && t >= this.top && t <= this.bottom}, t.prototype.equals = function(e) {return this.left === e.left && this.top === e.top && this.right === e.right &&this.bottom === e.bottom}, cr.rect = t, n.prototype.set_from_rect = function(e) {this.tlx = e.left, this.tly = e.top, this.trx = e.right, this.try_ = e.top, this.brx = e.right, this.bry = e.bottom, this.blx = e.left, this.bly = e.bottom}, n.prototype.set_from_rotated_rect = function(e, t) {if (0 === t) this.set_from_rect(e);else {var n = Math.sin(t),r = Math.cos(t),i = e.left * n,s = e.top * n,o = e.right * n,u = e.bottom * n,a = e.left * r,f = e.top * r,l = e.right * r,c = e.bottom * r;this.tlx = a - s, this.tly = f + i, this.trx = l - s, this.try_ = f + o, this.brx = l - u, this.bry = c + o, this.blx = a - u, this.bly = c + i}}, n.prototype.offset = function(e, t) {return this.tlx += e, this.tly += t, this.trx += e, this.try_ += t, this.brx += e, this.bry += t, this.blx += e, this.bly += t, this};var h = 0,p = 0;n.prototype.bounding_box = function(e) {r(this.tlx, this.trx, this.brx, this.blx), e.left = h, e.right = p, r(this.tly, this.try_, this.bry, this.bly), e.top = h, e.bottom = p}, n.prototype.contains_pt = function(e, t) {var n = this.trx - this.tlx,r = this.try_ - this.tly,i = this.brx - this.tlx,s = this.bry - this.tly,o = e - this.tlx,u = t - this.tly,a = n * n + r * r,f = n * i + r * s,l = n * o + r * u,c = i * i + s * s,h = i * o + s * u,p = 1 / (a * c - f * f),d = (c * l - f * h) * p,v = (a * h - f * l) * p;if (d >= 0 && v > 0 && 1 > d + v) return !0;n = this.blx - this.tlx, r = this.bly - this.tly;var a = n * n + r * r,f = n * i + r * s,l = n * o + r * u;return p = 1 / (a * c - f * f), d = (c * l - f * h) * p, v = (a * h - f * l) *p, d >= 0 && v > 0 && 1 > d + v}, n.prototype.at = function(e, t) {if (t) switch (e) {case 0:return this.tlx;case 1:return this.trx;case 2:return this.brx;case 3:return this.blx;case 4:return this.tlx;default:return this.tlx} else switch (e) {case 0:return this.tly;case 1:return this.try_;case 2:return this.bry;case 3:return this.bly;case 4:return this.tly;default:return this.tly}}, n.prototype.midX = function() {return (this.tlx + this.trx + this.brx + this.blx) / 4}, n.prototype.midY = function() {return (this.tly + this.try_ + this.bry + this.bly) / 4}, n.prototype.intersects_segment = function(e, t, n, r) {if (this.contains_pt(e, t) || this.contains_pt(n, r)) return !0;var i, s, o, u, a;for (a = 0; 4 > a; a++)if (i = this.at(a, !0), s = this.at(a, !1), o = this.at(a + 1, !0), u = this.at(a + 1, !1), cr.segments_intersect(e, t, n, r, i, s, o, u)) return !0;return !1}, n.prototype.intersects_quad = function(e) {var t = e.midX(),n = e.midY();if (this.contains_pt(t, n)) return !0;if (t = this.midX(), n = this.midY(), e.contains_pt(t, n)) return !0;var r, i, s, o, u, a, f, l, c, h;for (c = 0; 4 > c; c++)for (h = 0; 4 > h; h++)if (r = this.at(c, !0), i = this.at(c, !1), s = this.at(c + 1, !0), o =this.at(c + 1, !1), u = e.at(h, !0), a = e.at(h, !1), f = e.at(h + 1, !0), l = e.at(h + 1, !1), cr.segments_intersect(r, i, s, o, u, a, f, l)) return !0;return !1}, cr.quad = n, cr.RGB = function(e, t, n) {return Math.max(Math.min(e, 255), 0) | Math.max(Math.min(t, 255), 0) << 8 | Math.max(Math.min(n, 255), 0) << 16}, cr.GetRValue = function(e) {return 255 & e}, cr.GetGValue = function(e) {return (65280 & e) >> 8}, cr.GetBValue = function(e) {return (16711680 & e) >> 16}, cr.shallowCopy = function(e, t) {var n;for (n in t) t.hasOwnProperty(n) && (e[n] = t[n]);return e}, cr.arrayRemove = function(e, t) {var n, r;if (t = cr.floor(t), !(0 > t || t >= e.length)) {for (n = t, r = e.length - 1; r > n; n++) e[n] = e[n + 1];e.length = r}}, cr.shallowAssignArray = function(e, t) {e.length = t.length;var n, r;for (n = 0, r = t.length; r > n; n++) e[n] = t[n]}, cr.appendArray = function(e, t) {e.push.apply(e, t)}, cr.fastIndexOf = function(e, t) {var n, r;for (n = 0, r = e.length; r > n; ++n)if (e[n] === t) return n;return -1}, cr.arrayFindRemove = function(e, t) {var n = cr.fastIndexOf(e, t); - 1 !== n && cr.arrayRemove(e, n)}, cr.clamp = function(e, t, n) {return t > e ? t : e > n ? n : e}, cr.to_radians = function(e) {return e / (180 / cr.PI)}, cr.to_degrees = function(e) {return e * (180 / cr.PI)}, cr.clamp_angle_degrees = function(e) {return e %= 360, 0 > e && (e += 360), e}, cr.clamp_angle = function(e) {return e %= 2 * cr.PI, 0 > e && (e += 2 * cr.PI), e}, cr.to_clamped_degrees = function(e) {return cr.clamp_angle_degrees(cr.to_degrees(e))}, cr.to_clamped_radians = function(e) {return cr.clamp_angle(cr.to_radians(e))}, cr.angleTo = function(e, t, n, r) {var i = n - e,s = r - t;return Math.atan2(s, i)}, cr.angleDiff = function(e, t) {if (e === t) return 0;var n = Math.sin(e),r = Math.cos(e),i = Math.sin(t),s = Math.cos(t),o = n * i + r * s;return o >= 1 ? 0 : -1 >= o ? cr.PI : Math.acos(o)}, cr.angleRotate = function(e, t, n) {var r = Math.sin(e),i = Math.cos(e),s = Math.sin(t),o = Math.cos(t);return cr.clamp_angle(Math.acos(r * s + i * o) > n ? i * s - r * o > 0 ? e + n :e - n : t)}, cr.angleClockwise = function(e, t) {var n = Math.sin(e),r = Math.cos(e),i = Math.sin(t),s = Math.cos(t);return 0 >= r * i - n * s}, cr.rotatePtAround = function(e, t, n, r, i, s) {if (0 === n) return s ? e : t;var o = Math.sin(n),u = Math.cos(n);e -= r, t -= i;var a = e * o,f = t * o,l = e * u,c = t * u;return e = l - f, t = c + a, e += r, t += i, s ? e : t}, cr.distanceTo = function(e, t, n, r) {var i = n - e,s = r - t;return Math.sqrt(i * i + s * s)}, cr.xor = function(e, t) {return !e != !t}, cr.lerp = function(e, t, n) {return e + (t - e) * n}, cr.unlerp = function(e, t, n) {return e === t ? 0 : (n - e) / (t - e)}, cr.anglelerp = function(e, t, n) {var r = cr.angleDiff(e, t);return cr.angleClockwise(t, e) ? e + r * n : e - r * n}, cr.qarp = function(e, t, n, r) {return cr.lerp(cr.lerp(e, t, r), cr.lerp(t, n, r), r)}, cr.cubic = function(e, t, n, r, i) {return cr.lerp(cr.qarp(e, t, n, i), cr.qarp(t, n, r, i), i)}, cr.cosp = function(e, t, n) {return (e + t + (e - t) * Math.cos(n * Math.PI)) / 2}, cr.hasAnyOwnProperty = function(e) {var t;for (t in e)if (e.hasOwnProperty(t)) return !0;return !1}, cr.wipe = function(e) {var t;for (t in e) e.hasOwnProperty(t) && delete e[t]};var d = +(new Date);cr.performance_now = function() {if ("undefined" != typeof window.performance) {var e = window.performance;if ("undefined" != typeof e.now) return e.now();if ("undefined" != typeof e.webkitNow) return e.webkitNow();if ("undefined" != typeof e.mozNow) return e.mozNow();if ("undefined" != typeof e.msNow) return e.msNow()}return Date.now() - d};var v = !1,m = !1,g = !1,y = !1;"undefined" != typeof window && (v = /chrome/i.test(navigator.userAgent) || /chromium/i.test(navigator.userAgent), m = !v && /safari/i.test(navigator.userAgent),g = /(iphone|ipod|ipad)/i.test(navigator.userAgent), y = window.c2ejecta);var b = !m && !y && !g && "undefined" != typeof Set && "undefined" != typeof Set.prototype.forEach;i.prototype.contains = function(e) {return this.isEmpty() ? !1 : b ? this.s.has(e) : this.items && this.items.hasOwnProperty(e)}, i.prototype.add = function(e) {if (b) this.s.has(e) || (this.s.add(e), this.cache_valid = !1);else {var t = e.toString(),n = this.items;n ? n.hasOwnProperty(t) || (n[t] = e, this.item_count++, this.cache_valid = !1) : (this.items = {}, this.items[t] = e,this.item_count = 1, this.cache_valid = !1)}}, i.prototype.remove = function(e) {if (!this.isEmpty())if (b) this.s.has(e) && (this.s["delete"](e), this.cache_valid = !1);else if (this.items) {var t = e.toString(),n = this.items;n.hasOwnProperty(t) && (delete n[t], this.item_count--, this.cache_valid = !1)}}, i.prototype.clear = function() {this.isEmpty() || (b ? this.s.clear() : (this.items = null, this.item_count = 0),this.values_cache.length = 0, this.cache_valid = !0)}, i.prototype.isEmpty = function() {return 0 === this.count()}, i.prototype.count = function() {return b ? this.s.size : this.item_count};var w = null,E = 0;i.prototype.update_cache = function() {if (!this.cache_valid) {if (b) this.values_cache.length = this.s.size, w = this.values_cache, E = 0, this.s.forEach(s), w = null, E = 0;else {var e = this.values_cache;e.length = this.item_count;var t, n = 0,r = this.items;if (r)for (t in r) r.hasOwnProperty(t) && (e[n++] = r[t])}this.cache_valid = !0}}, i.prototype.valuesRef = function() {return this.update_cache(), this.values_cache}, cr.ObjectSet = i;var S = new cr.ObjectSet;cr.removeArrayDuplicates = function(e) {var t, n;for (t = 0, n = e.length; n > t; ++t) S.add(e[t]);cr.shallowAssignArray(e, S.valuesRef()), S.clear()}, o.prototype.add = function(e) {this.y = e - this.c, this.t = this.sum + this.y, this.c = this.t - this.sum - this.y, this.sum = this.t}, o.prototype.reset = function() {this.c = 0, this.y = 0, this.t = 0, this.sum = 0}, cr.KahanAdder = o, cr.regexp_escape = function(e) {return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")}, u.prototype.set_pts = function(e) {this.pts_array = e, this.pts_count = e.length / 2, this.pts_cache.length =e.length, this.cache_width = -1, this.cache_height = -1, this.cache_angle = 0}, u.prototype.is_empty = function() {return !this.pts_array.length}, u.prototype.update_bbox = function() {for (var e, t, n, r = this.pts_cache, i = r[0], s = i, o = r[1], u = o, a = 1, f = this.pts_count; f > a; ++a) n = 2 * a, e = r[n], t = r[n + 1], i > e && (i = e), e > s && (s = e), o > t && (o = t), t > u && (u = t);this.bboxLeft = i, this.bboxRight = s, this.bboxTop = o, this.bboxBottom = u}, u.prototype.set_from_rect = function(e, t, n) {this.pts_cache.length = 8, this.pts_count = 4;var r = this.pts_cache;r[0] = e.left - t, r[1] = e.top - n, r[2] = e.right - t, r[3] = e.top - n, r[4] = e.right - t, r[5] = e.bottom - n, r[6] = e.left - t, r[7] = e.bottom - n, this.cache_width = e.right - e.left, this.cache_height = e.bottom - e.top, this.update_bbox()}, u.prototype.set_from_quad = function(e, t, n, r, i) {this.pts_cache.length = 8, this.pts_count = 4;var s = this.pts_cache;s[0] = e.tlx - t, s[1] = e.tly - n, s[2] = e.trx - t, s[3] = e.try_ - n, s[4] = e.brx - t, s[5] = e.bry - n, s[6] = e.blx - t, s[7] = e.bly - n, this.cache_width = r, this.cache_height = i, this.update_bbox()}, u.prototype.set_from_poly = function(e) {this.pts_count = e.pts_count, cr.shallowAssignArray(this.pts_cache, e.pts_cache), this.bboxLeft = e.bboxLeft, this.bboxTop - e.bboxTop, this.bboxRight = e.bboxRight, this.bboxBottom = e.bboxBottom}, u.prototype.cache_poly = function(e, t, n) {if (this.cache_width !== e || this.cache_height !== t || this.cache_angle !== n) {this.cache_width = e, this.cache_height = t, this.cache_angle = n;var r, i, s, o, u, a, f = 0,l = 1,c = this.pts_array,h = this.pts_cache;for (0 !== n && (f = Math.sin(n), l = Math.cos(n)), r = 0, o = this.pts_count; o > r; r++) i = 2 * r, s = i + 1, u = c[i] * e, a = c[s] * t, h[i] = u * l -a * f, h[s] = a * l + u * f;this.update_bbox()}}, u.prototype.contains_pt = function(e, t) {var n = this.pts_cache;if (e === n[0] && t === n[1]) return !0;var r, i, s, o, u, a, f, l = this.pts_count,c = this.bboxLeft - 110,h = this.bboxTop - 101,p = this.bboxRight + 131,d = this.bboxBottom + 120,v = 0,m = 0;for (r = 0; l > r; r++) i = 2 * r, s = (r + 1) % l * 2, o = n[i], u = n[i + 1], a = n[s], f = n[s + 1], cr.segments_intersect(c, h, e, t, o, u, a, f) && v++, cr.segments_intersect(p, d, e, t, o, u, a, f) && m++;return v % 2 === 1 || m % 2 === 1}, u.prototype.intersects_poly = function(e, t, n) {var r = e.pts_cache,i = this.pts_cache;if (this.contains_pt(r[0] + t, r[1] + n)) return !0;if (e.contains_pt(i[0] - t, i[1] - n)) return !0;var s, o, u, a, f, l, c, h, p, d, v, m, g, y, b, w;for (s = 0, a = this.pts_count; a > s; s++)for (o = 2 * s, u = (s + 1) % a * 2, p = i[o], d = i[o + 1], v = i[u], m = i[u + 1], f = 0, h = e.pts_count; h > f; f++)if (l = 2 * f, c = (f + 1) % h * 2, g = r[l] + t, y = r[l + 1] + n, b = r[c] + t, w = r[c + 1] + n, cr.segments_intersect(p, d, v, m, g,y, b, w)) return !0;return !1}, u.prototype.intersects_segment = function(e, t, n, r, i, s) {var o = this.pts_cache;if (this.contains_pt(n - e, r - t)) return !0;var u, a, f, l, c, h, p, d;for (u = 0, a = this.pts_count; a > u; u++)if (f = 2 * u, l = (u + 1) % a * 2, c = o[f] + e, h = o[f + 1] + t, p = o[l] + e, d = o[l + 1] + t, cr.segments_intersect(n, r, i, s, c, h, p, d)) return !0;return !1}, u.prototype.mirror = function(e) {var t, n, r;for (t = 0, n = this.pts_count; n > t; ++t) r = 2 * t, this.pts_cache[r] = 2 * e - this.pts_cache[r]}, u.prototype.flip = function(e) {var t, n, r;for (t = 0, n = this.pts_count; n > t; ++t) r = 2 * t + 1, this.pts_cache[r] = 2 * e - this.pts_cache[r]}, u.prototype.diag = function() {var e, t, n, r, i;for (e = 0, t = this.pts_count; t > e; ++e) n = 2 * e, r = n + 1, i = this.pts_cache[n], this.pts_cache[n] = this.pts_cache[r], this.pts_cache[r] = i}, cr.CollisionPoly = u, a.prototype.totalCellCount = 0, a.prototype.getCell = function(e, t, n) {var r, i = this.cells[e];return i ? (r = i[t], r ? r : n ? (r = f(this, e, t), this.cells[e][t] = r, r) : null) : n ? (r = f(this, e, t), this.cells[e] = {}, this.cells[e][t] = r, r) :null}, a.prototype.XToCell = function(e) {return cr.floor(e / this.cellwidth)}, a.prototype.YToCell = function(e) {return cr.floor(e / this.cellheight)}, a.prototype.update = function(e, t, n) {var r, i, s, o, u;if (t)for (r = t.left, i = t.right; i >= r; ++r)for (s = t.top, o = t.bottom; o >= s; ++s) n && n.contains_pt(r, s) ||(u = this.getCell(r, s, !1), u && (u.remove(e), u.isEmpty() && (l(u), this.cells[r][s] = null)));if (n)for (r = n.left, i = n.right; i >= r; ++r)for (s = n.top, o = n.bottom; o >= s; ++s) t && t.contains_pt(r, s) || this.getCell(r, s, !0).insert(e)}, a.prototype.queryRange = function(e, t) {var n, r, i, s, o, u;for (n = this.XToCell(e.left), i = this.YToCell(e.top), r = this.XToCell(e.right),o = this.YToCell(e.bottom); r >= n; ++n)for (s = i; o >= s; ++s) u = this.getCell(n, s, !1), u && u.dump(t)}, cr.SparseGrid = a;var x = [];c.prototype.isEmpty = function() {return this.objects.isEmpty()}, c.prototype.insert = function(e) {this.objects.add(e)}, c.prototype.remove = function(e) {this.objects.remove(e)}, c.prototype.dump = function(e) {cr.appendArray(e, this.objects.valuesRef())}, cr.GridCell = c;var T = ["lighter", "xor", "copy", "destination-over", "source-in", "destination-in","source-out", "destination-out", "source-atop", "destination-atop"];cr.effectToCompositeOp = function(e) {return 0 >= e || e >= 11 ? "source-over" : T[e - 1]}, cr.setGLBlend = function(e, t, n) {if (n) switch (e.srcBlend = n.ONE, e.destBlend = n.ONE_MINUS_SRC_ALPHA, t) {case 1:e.srcBlend = n.ONE, e.destBlend = n.ONE;break;case 2:break;case 3:e.srcBlend = n.ONE, e.destBlend = n.ZERO;break;case 4:e.srcBlend = n.ONE_MINUS_DST_ALPHA, e.destBlend = n.ONE;break;case 5:e.srcBlend = n.DST_ALPHA, e.destBlend = n.ZERO;break;case 6:e.srcBlend = n.ZERO, e.destBlend = n.SRC_ALPHA;break;case 7:e.srcBlend = n.ONE_MINUS_DST_ALPHA, e.destBlend = n.ZERO;break;case 8:e.srcBlend = n.ZERO, e.destBlend = n.ONE_MINUS_SRC_ALPHA;break;case 9:e.srcBlend = n.DST_ALPHA, e.destBlend = n.ONE_MINUS_SRC_ALPHA;break;case 10:e.srcBlend = n.ONE_MINUS_DST_ALPHA, e.destBlend = n.SRC_ALPHA}}, cr.round6dp = function(e) {return Math.round(1e6 * e) / 1e6}, cr.equals_nocase = function(e, t) {return "string" != typeof e || "string" != typeof t ? !1 : e.length !== t.length ? !1 : e === t ? !0 : e.toLowerCase() === t.toLowerCase()}, cr.isCanvasInputEvent = function(e) {var t = e.target;return t ? t === document || t === window ? !0 : document && document.body && t === document.body ? !0 : cr.equals_nocase(t.tagName, "canvas") ? !0 : !1 : !0}
}();
源码
需要源码请关注添加好友哦^ ^
转载:欢迎来到本站,转载请注明文章出处
https://ormcc.com/

相关文章:
火柴人大逃亡
欢迎来到程序小院 火柴人大逃亡 玩法:左右两边火柴人,点击左边左边火柴人跳跃,点击右边右边跳跃, 上下快速移动道路,躲过障碍物,看你能坚持多久,快去火柴人大逃亡吧^^。开始游戏https://www.or…...
AI革命新篇章:法国天才团队挑战ChatGPT霸主地位
Mistral AI: Guillaume Lample, Arthur Mensch et Timothe Lacroix. ChatGPT 的霸主地位已被三位来自法国的天才所颠覆!如上图这三个人,其中一位曾在 DeepMind 工作,另外两位来自 Meta,他们联手为 AI 领域带来了革命性的变革 我…...
数据双向绑定v-modal
v-model v-model就实现了双向数据绑定,实际上它就是通过Vue提供的事件机制。即在子组件通过$emit()触发一个事件,在父组件使用v-on来监听对应的事件并修改相应的数据。 input的v-model就是通过<input :value"value" input"input"…...
Docker 容器jar 运行报错 at sun.awt.FontConfiguration.getVersion 解决方法
docker jar 运行报错 at sun.awt.FontConfiguration.getVersion 初步判断是在运行 Docker 容器中的 JAR 文件时遇到了与字体配置相关的问题。这个问题可能是由于容器内缺少字体配置或字体文件而引起的。 要解决这个问题,你可以尝试以下方法: 1.安装字…...
光学3D表面轮廓仪服务超精密抛光技术发展
随着技术的不断进步,精密制造领域对材料表面的处理要求越来越高,超精密抛光技术作为当下表面处理的尖端技术,对各种高精密产品的生产起到了至关重要的作用,已广泛应用于集成电路制造、医疗器械、航空航天、3C电子、汽车、精密模具…...
详解C++中auto关键字
auto关键字 auto关键字(C11)类型别名思考auto简介auto的使用细则auto与指针和引用结合起来使用在同一行定义多个变量 auto不能推导的场景1.auto不能作为函数的参数2.auto不能直接用来声明数组 auto关键字(C11) 类型别名思考 随着程序越来越复杂,程序中用到的类型也…...
24.云原生ArgoCD高级之数据加密seale sealed
云原生专栏大纲 文章目录 数据加密之seale sealedBitnami Sealed Secrets介绍Bitnami Sealed Secrets工作流程安装sealed-secrets和kubeseal安装sealed-secrets-controller安装kubeseal通过kubeseal将sealed-secrets公钥拿出来通过kubeseal加密secrets替换kustomize下secret为…...
线性代数:线性方程组
目录 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理...
标准的排序组合-算法
题目 有若干个字母,要求计算出长度为4的所有可能得组合 解题 排序组合最适用的就是回溯了,建议大家本地debug一层一层的看能好理解点 private static void getResult(List<String> source, Stack<String> temp, int curLength, int maxL…...
2402C++,C++递归取各种节点名字
参考 explicit FindNamedClassVisitor(ASTContext *Context) : Context(Context) {}元<类 T>极 动作(T&e){串 ae->getQualifiedNameAsString();d.加(a);中 真;} bool VisitCXXRecordDecl(CXXRecordDecl *e) {中 动作(e);} bool VisitFunctionDecl(FunctionDecl*e…...
Qt 5.9.4 转 Qt 6.6.1 遇到的问题总结(三)
1.QSet: toList 中的toList 函数已不存在,遇到xx->toList改成直接用,如下: 2.开源QWT 图形库中QwtDial中的 setPenWidth 变成 setPenWidthF函数。 3.QDateTime 中无setTime_t 改为了setSecsSinceEpoch函数。 4.QRegExp 类已不存在 可以用Q…...
Logstash 7.7.1版本安装系统梳理
前言 上一篇文章介绍了 《ElasticSearch7.7.1集群搭建 & Kibana安装》,今天说一下 Logstash的安卓和配置; Logstash是一个开源的数据收集引擎,具有实时管道功能。它可以动态地将来自不同数据源的数据统一起来,并将数据标准化…...
4. sass实用函数归纳
4. sass实用函数归纳 字符串函数 1、quote(string) 给字符串添加引号 quote(xiaoming) // "xiaoming"2、unquote(string) 移除字符串的引号 unquote("xiaoming") // xiaoming3、str-index(string, substring) 返回 substring 子字符串第一次在 stri…...
《元梦之星》赛季更新带来“新”内容,为何却被玩家集体声讨?
前段时间,《元梦之星》迎来了“山海奇遇”赛季的重磅更新,诸多“新”内容的上线吸引了很多玩家们的关注,然而在新版本开启之后没有多,新玩法新时装甚至是游戏中的新改动都引起了不少玩家的不满。 在新赛季开启之后,玩家…...
故障诊断 | 一文解决,CNN-SVM卷积神经网络-支持向量机组合模型的故障诊断(Matlab)
效果一览 文章概述 故障诊断 | 一文解决,CNN-SVM卷积神经网络-支持向量机组合模型的故障诊断(Matlab) 模型描述 卷积神经网络(Convolutional Neural Network,CNN)和支持向量机(Support Vector Machine,SVM)是两种常用的机器学习算法,它们在不同领域和任务中都表现出…...
菜鸡后端的前端学习记录-2
前言 记录一下看视频学习前端的的一些笔记,以前对Html、Js、CSS有一定的基础(都认得,没用过),现在不想从头再来了,学学Vue框架,不定时更新,指不定什么时候就鸽了。。。。 忘了记一下…...
Layui + Echarts 5.0
Layui 怎么整合最新版本的 Echarts 5.0,Echarts 4 升级到 5后,有了很大改变,新的配置项4是无法兼容的,所以想要使用新的功能,都需要升级! 新建一个echarts.js文件 layui.define(function (exports) {// 这…...
linux使用iptables禁用ip
iptables是什么? iptables 是一个强大的开源软件,它是 Linux 系统内核中 netfilter 包过滤框架的一部分,用来实现防火墙功能。iptables 提供了一种灵活的方式来控制和管理进出以及通过 Linux 计算机的网络流量。 前提 我在云服务器上用doc…...
安全防御第五次作业
拓扑图及要求如下: 实验注意点: 先配置双机热备,再来配置安全策略和NAT两台双机热备的防火墙的接口号必须一致双机热备时,请确保vrrp配置的虚拟IP与下面的ip在同一网段如果其中一台防火墙有过配置,最好清空或重启&…...
分库分表原则
分库分表原则 单表数据到达千万级别或者20存储空间 优化已经解决不了问题一 IO瓶颈导致性能问题 拆分策略 垂直分库 以表为依据,根据业务将不同的表拆分到不同库中,有点像微服务 垂直分表 以字段为依据,根据字段属性将不同字段拆分到不同…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
