- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
var rightPressed = false;
var leftPressed = false;
var upPressed = false;
var downPressed = false;
var players = [];
players[0] = new victim(1234);
var arrayw = 50;
var arrayh = 50;
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.fillStyle="#736AFF";
ctx.fillRect(0,0,600,600);
var arenaarray = new Array(50);
for(var z = 0; z < 50; z++) {
arenaarray[z] = new Array(50);
}
for(var q = 0; q < 50; q++) {
for(var r = 0; r < 50; r++) {
arenaarray[q][r] = 0;
}
}
// draws top border
for(var z = 0; z < 50; z++) {
arenaarray[z][0] = 1;
}
// draws right border
for(var z = 0; z < 50; z++) {
arenaarray[49][z] = 1;
}
// draws bottom border
for(var z = 0; z < 50; z++) {
arenaarray[z][49] = 1;
}
// draws left border
for(var z = 0; z < 50; z++) {
arenaarray[0][z] = 1;
}
// random line
for(var m = 10; m < 30; m++) {
arenaarray[m][10] = 1;
}
function victim(ID){
this.ID = ID;
this.health = 100;
this.speed = 100;
this.direction = 0;
// this.x = Math.floor(Math.random() * 500);
// this.y = Math.floor(Math.random() * 500);
this.x = 200;
this.y = 200;
}
// deals with keybaord inputs
document.addEventListener("keydown", keyDownHandler, false);document.addEventListener("keyup", keyUpHandler, false);
function keyDownHandler(e) {
if(e.keyCode == 39) {
rightPressed = true;
}
else if(e.keyCode == 37) {
leftPressed = true;
}
else if(e.keyCode == 38) {
upPressed = true;
}
else if(e.keyCode == 40) {
downPressed = true;
}
}
function keyUpHandler(e) {
if(e.keyCode == 39) {
rightPressed = false;
}
else if(e.keyCode == 37) {
leftPressed = false;
}
else if(e.keyCode == 38) {
upPressed = false;
}
else if(e.keyCode == 40) {
downPressed = false;
}
}
function paintPlayers() {
for(var i = 0; i < players.length; i++) {
// iterates through players and finds their x and y. Paints a circle.
// also needs to remove old player locations
}
}
// obtain keycodes
// 0 is up, 1 is right, 2 is down, 3 is left
// finish coding. s
function updatePositions() {
console.log(checkCollisions(players[0].x + 0.5, players[0].y));
for(var i = 0; i < players.length; i++) {
if(rightPressed == true && checkCollisions(players[0].x + 0.5, players[0].y) == false) {
players[0].x += 2;
}
else if(leftPressed == true && checkCollisions(players[0].x - 0.5, players[0].y) == false) {
players[0].x -= 2;
}
else if(upPressed == true && checkCollisions(players[0].x, players[0].y - 0.5) == false) {
players[0].y -= 2;
}
else if(downPressed == true && checkCollisions(players[0].x, players[0].y + 0.5) == false) {
players[0].y += 2;
}
}
}
// draws the player sprite
function draw() {
updatePositions();
// repaints light bleu over everything to redraw
ctx.fillStyle = "#6960F5";
ctx.fillRect(0,0,600,600);
drawArena();
// repaints player locations
drawPlayers();
}
// draws the arena
function drawArena() {
for(var m = 0; m < arrayw; m++) {
for(var n = 0; n < arrayh; n++) {
if(arenaarray[m][n] === 1) {
ctx.fillStyle = "#CCCCCC";
ctx.fillRect(m*12, n*12, 12, 12);
}
}
}
}
function drawPlayers() {
for(var j = 0; j < players.length; j++) {
ctx.beginPath();
// document.getElementById("myDiv").style.top = players[j].y + "px";
// document.getElementById("myDiv").style.left = players[j].x + "px";
// temporary implementation. Delete everything then repaint walls
ctx.arc(players[j].x, players[j].y, 6, 0, 2*Math.PI);
ctx.fillStyle = "#00FF00";
ctx.fill();
ctx.closePath();
}
}
// collision checker for both walls + players
// returns true if there are any collisions
这是检查冲突的函数。如果有,则返回 true,然后阻塞上述 updatePositions() 中的时刻。
如果您运行此代码,并查看 html 页面上的开发工具,您将看到 checkCollisions 始终为 false,并且永远不会为 true。然而,圆圈(受害者)被阻止移动。
function checkCollisions(x,y) {
exactx = x;
exacty = y;
x = Math.floor(x/12);
y = Math.floor(y/12);
// checks for top wall
// areana array is the array of 1's and 0's that the map is based on
if(arenaarray[x][y-1] === 1) {
if(Math.floor(exacty/12) != Math.floor((exacty-6)/12)) {
console.log("am I working1");
return true;
}
}
// checks or right wall
else if(arenaarray[x+1][y] === 1) {
if(Math.floor(exactx/12) != Math.floor((exactx+6)/12)) {
console.log("am I working2");
return true;
}
}
// checks for bottom wall
else if(arenaarray[x][y+1] === 1) {
if(Math.floor(exacty/12) != Math.floor((exacty+6)/12)) {
console.log("am I working3");
return true;
}
}
// checks for left wall
else if(arenaarray[x-1][y] === 1) {
if(Math.floor((exactx-6)/12) != Math.floor(exactx/12)) {
console.log("am I working4");
return true;
}
}
// otherwise, check for corner intersection (because this either means its
// not
// intersecting or their are only walls in the corners
// checks for top left corner
else if(arenaarray[x-1][y-1] === 1) {
if(distance(exactx, (x-1)*12, exacty, (y-1)*12) < victim.radius) {
console.log("am I working5");
return true;
}
}
// checks for the top right corner
else if(arenaarray[x+1][y-1] === 1) {
if(distance(exactx, (x+1)*12, exacty, (y-1)*12) < victim.radius) {
console.log("am I working6");
return true;
}
}
// checks for the bottom right corner
else if(arenaarray[x+1][y+1] === 1) {
if(distance(exactx, (x+1)*12, exacty, (y+1)*12) < victim.radius) {
console.log("am I working7");
return true;
}
}
// checks for the bottom left corner
else if(arenaarray[x-1][y+1] === 1) {
if(distance(exactx, (x-1)*12, exacty, (y+1)*12) < victim.radius) {
console.log("am I working8");
return true;
}
}
else {
return false;
}
}
// if(distance(x, x1, y, y1) || distance(x, x2, y, y2) || distance(x, x1, y, y1)
// || distance(x, x1, y, y1)) {
// }
function distance(x1, x2, y1, y2) {
return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
// freezes for n milliseconds? Bad???
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}f
}
}
// prevents scrolling
window.addEventListener("keydown", function(e) {
// space, page up, page down and arrow keys:
if([32, 33, 34, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
/*
*
* while(counter < 100) { console.log("this is being called");
* console.log(document.getElementById('xcood'))
* document.getElementById('xcood').innerHTML = counter; // updatePositions(); //
* 1. move characters // 2. check for collisions between players // 3. death
* events counter++;
* }
*
*/
setInterval(draw, 10);
这是我的index.html 文件
<!DOCTYPE html>
<html>
<head>
<style>
#myDiv {
position: relative;
}
#myCanvas {
background-color: light-blue;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="600" height="600"></canvas>
<!-- <div id="myDiv" STYLE = "POSITION: absolute; TOP: 0px; LEFT: 0px" ><img src = "http://i.imgur.com/3YgFMpS.png"></div> -->
<br>
<script type="text/javascript"src="./src/gameboard.js"></script>
</body>
</html>
最佳答案
发现问题。嵌套的 if 语句不允许它检查进一步的条件。因为每个 else if 中没有 else 语句,所以它返回未定义。
关于javascript - 碰撞功能不起作用,但运动被抑制。没有其他运动抑制代码。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38667761/
我正在构建一个 RCP 应用程序,其中每个季度都会更新功能/插件。因此,如果用户选择自动更新功能/插件,则会下载更新插件的新 jar,但旧插件仍在使用我不再使用的磁盘空间。 我厌倦了删除包含旧 jar
我如何从外部 Controller 功能中调用 Controller 内部的功能,例如电话间隙回调功能 这是 Controller 外部定义的功能 function onDeviceReady()
如果某个功能(例如 MediaSource)可用,我如何使用 Google Dart 检查。 new MediaSource() 抛出一个错误。如何以编程方式检查此类或功能是否存在?有任何想法吗?是否
我正在尝试运行 Azure Orchestrations,突然我开始从 statusQueryGetUri 收到错误: 协调器函数“UploadDocumentOrchestrator”失败:函数“U
我见过 iPhone 上的应用程序,如果在 3.0 上运行,将使用 3.0 功能/API,例如应用内电子邮件编辑器,如果在 2.x 上运行,则不使用这些功能,并退出应用程序以启动邮件相反。 这是怎么做
这是 DB 规范化理论中的一个概念: Third normal form is violated when a non-key field is a fact about another non-ke
如果我定义 #if SOMETHING #endif 而且我还没有在任何地方定义 SOMETHING。 #if 中的代码会编译吗? 最佳答案 当#if的参数表达式中使用的名称未定义为宏时(在所有其他宏
我刚刚澄清了 A* 路径查找应该如何在两条路径具有相等值的 [情况] 下运行,无论是在计算期间还是在结束时,如果有两条相等的短路径。 例如,我在我的起始节点,我可以扩展到两个可能的节点,但它们都具有相
Java有没有类似下面的东西 宏 一种遍历所有私有(private)字段的方法 类似于 smalltalk symbols 的东西——即用于快速比较静态字符串的东西? 请注意,我正在尝试为 black
这个程序应该将华氏度转换为摄氏度: #include int main() { float fahrenheit, celsius; int max, min, step;
当打开PC缓存功能后, 软件将采用先进先出的原则排队对示波器采集的每一帧数据, 进行帧缓存。 当发现屏幕中有感兴趣的波形掠过时, 鼠标点击软件的(暂停)按钮, 可以选择回看某一帧的波形
我有一个特殊的(虚拟)函数,我想在沙盒环境中使用它: disable.system.call eval(parse(text = 'model.frame("1 ~ 1")'), envir = e
使用新的 Service 实现,我是否必须为我的所有服务提供一个 Options 方法? 使用我的所有服务当前使用的旧 ServiceBase 方法,OPTIONS 返回 OK,但没有 Access-
我正在阅读 Fogus 的关于 Clojure 的喜悦的书,在并行编程章节中,我看到了一个函数定义,它肯定想说明一些重要的事情,但我不知道是什么。此外,我看不到这个函数有什么用 - 当我执行时,它什么
我有大量的 C 代码,大部分代码被注释掉和/或 #if 0。当我使用 % 键匹配 if-else 的左括号和右括号时,它也匹配注释掉的代码。 有没有办法或vim插件在匹配括号时不考虑注释掉或#if 0
我有这个功能: map(map(fn x =>[x])) [[],[1],[2,3,4]]; 产生: val it = [[],[[1]],[[2],[3],[4]]] 我不明白这个功能是如何工作的。
我使用 Visual Studio 代码创建了一个函数应用程序,然后发布了它。功能应用程序运行良好。我现在在功能门户中使用代码部署功能(KUDU)并跳过构建。下面是日志 9:55:46 AM
我有一个数据框df: userID Score Task_Alpha Task_Beta Task_Charlie Task_Delta 3108 -8.00 Easy Easy
我真的无法解决这个问题: 我有一个返回数据框的函数。但是,数据框仅打印在我的控制台中,尽管我希望将其存储在工作空间中。我怎样才能做到这一点? 样本数据: n <- 32640 t <- seq(3*p
有没有办法找出所有可能的激活器命令行选项? activator -help仅提供最低限度的可用选项/功能列表,但所有好的东西都隐藏起来,即使在 typesafe 网站在线文档中也不可用。 到目前为止,
我是一名优秀的程序员,十分优秀!