p5 递增不递增 1
p5 increment not incrementing by 1
对编程还很陌生,所以我决定尝试使用 p5 的 pong 项目。我正在尝试向游戏添加分数功能,但分数似乎没有增加 1(相反,它增加了一个随机值,尽管我观察到玩家 1 的得分始终为 217)。
我打开控制台,它似乎在停止并呈现乐谱之前至少递增了 200 次左右。
这是代码。感谢任何帮助!
var puck = {
x: 200,
y: 200,
xSpeed: 1,
ySpeed: -1,
r: 15
};
var edgeOffset = 20;
var player1 = {
x: edgeOffset,
y: 200,
ht: 50,
wd: 10,
score: 0
};
var player2 = {
x: 400 - edgeOffset,
y: 200,
ht: 50,
wd: 10,
score: 0
};
function setup() {
createCanvas(400, 400);
}
function draw() {
background(255);
text("Player 1", 140, 25);
text("Player 2", 220, 25);
p1ScoreDisplay = text(player1.score, 180, 50);
p2ScoreDisplay = text(player2.score, 220, 50);
// draw puck
ellipse(puck.x, puck.y, puck.r * 2);
// move puck
if (puck.y < puck.r || puck.y > height - puck.r) {
puck.ySpeed = -puck.ySpeed;
}
puck.x += puck.xSpeed;
puck.y += puck.ySpeed;
// draw paddles
rect(player1.x, player1.y, player1.wd, player1.ht);
rect(player2.x - player2.wd, player2.y, player2.wd, player2.ht);
// paddle movement
if (player1.paddleDown && !player1.paddleUp) {
player1.y += 3;
}
if (player1.paddleUp && !player1.paddleDown) {
player1.y -= 3;
}
if (player2.paddleDown && !player2.paddleUp) {
player2.y += 3;
}
if (player2.paddleUp && !player2.paddleDown) {
player2.y -= 3;
}
// don't let paddles outside of the play area
player1.y = constrain(player1.y, 0, height - player1.ht - 1);
player2.y = constrain(player2.y, 0, height - player2.ht - 1);
// bounce puck on paddles -- player 1 -- based on x-coordinate
if (puck.x - puck.r < player1.x + player1.wd) {
// check if puck is within paddle height...
if (puck.y > player1.y && puck.y < player1.y + player1.ht) {
puck.xSpeed = abs(puck.xSpeed);
} else {
redraw();
player2.score++;
puck.x = 200;
puck.y = 200;
puck.xSpeed = 1;
puck.ySpeed = -1;
puck.r = 15;
}
}
// bounce puck on paddles -- player 2 -- based on x-coordinate
if (puck.x + puck.r > player2.x - player2.wd) {
// check if puck is within paddle height...
if (puck.y > player2.y && puck.y < player2.y + player2.ht) {
puck.xSpeed = -abs(puck.xSpeed);
} else {
player1.score++;
redraw();
puck.x = 200;
puck.y = 200;
puck.xSpeed = 1;
puck.ySpeed = -1;
puck.r = 15;
}
}
}
// keyboard input
function keyPressed() {
print(key);
if (key == 'A') {
player1.paddleDown = true;
} else if (key == 'Q') {
player1.paddleUp = true;
}
if (keyCode == DOWN_ARROW) {
player2.paddleDown = true;
} else if (keyCode == UP_ARROW) {
player2.paddleUp = true;
}
}
function keyReleased() {
if (key == 'A') {
player1.paddleDown = false;
} else if (key == 'Q') {
player1.paddleUp = false;
}
if (keyCode == DOWN_ARROW) {
player2.paddleDown = false;
} else if (keyCode == UP_ARROW) {
player2.paddleUp = false;
}
}
不要从 draw
内调用 redraw
; p5
会为您处理。
对编程还很陌生,所以我决定尝试使用 p5 的 pong 项目。我正在尝试向游戏添加分数功能,但分数似乎没有增加 1(相反,它增加了一个随机值,尽管我观察到玩家 1 的得分始终为 217)。
我打开控制台,它似乎在停止并呈现乐谱之前至少递增了 200 次左右。
这是代码。感谢任何帮助!
var puck = {
x: 200,
y: 200,
xSpeed: 1,
ySpeed: -1,
r: 15
};
var edgeOffset = 20;
var player1 = {
x: edgeOffset,
y: 200,
ht: 50,
wd: 10,
score: 0
};
var player2 = {
x: 400 - edgeOffset,
y: 200,
ht: 50,
wd: 10,
score: 0
};
function setup() {
createCanvas(400, 400);
}
function draw() {
background(255);
text("Player 1", 140, 25);
text("Player 2", 220, 25);
p1ScoreDisplay = text(player1.score, 180, 50);
p2ScoreDisplay = text(player2.score, 220, 50);
// draw puck
ellipse(puck.x, puck.y, puck.r * 2);
// move puck
if (puck.y < puck.r || puck.y > height - puck.r) {
puck.ySpeed = -puck.ySpeed;
}
puck.x += puck.xSpeed;
puck.y += puck.ySpeed;
// draw paddles
rect(player1.x, player1.y, player1.wd, player1.ht);
rect(player2.x - player2.wd, player2.y, player2.wd, player2.ht);
// paddle movement
if (player1.paddleDown && !player1.paddleUp) {
player1.y += 3;
}
if (player1.paddleUp && !player1.paddleDown) {
player1.y -= 3;
}
if (player2.paddleDown && !player2.paddleUp) {
player2.y += 3;
}
if (player2.paddleUp && !player2.paddleDown) {
player2.y -= 3;
}
// don't let paddles outside of the play area
player1.y = constrain(player1.y, 0, height - player1.ht - 1);
player2.y = constrain(player2.y, 0, height - player2.ht - 1);
// bounce puck on paddles -- player 1 -- based on x-coordinate
if (puck.x - puck.r < player1.x + player1.wd) {
// check if puck is within paddle height...
if (puck.y > player1.y && puck.y < player1.y + player1.ht) {
puck.xSpeed = abs(puck.xSpeed);
} else {
redraw();
player2.score++;
puck.x = 200;
puck.y = 200;
puck.xSpeed = 1;
puck.ySpeed = -1;
puck.r = 15;
}
}
// bounce puck on paddles -- player 2 -- based on x-coordinate
if (puck.x + puck.r > player2.x - player2.wd) {
// check if puck is within paddle height...
if (puck.y > player2.y && puck.y < player2.y + player2.ht) {
puck.xSpeed = -abs(puck.xSpeed);
} else {
player1.score++;
redraw();
puck.x = 200;
puck.y = 200;
puck.xSpeed = 1;
puck.ySpeed = -1;
puck.r = 15;
}
}
}
// keyboard input
function keyPressed() {
print(key);
if (key == 'A') {
player1.paddleDown = true;
} else if (key == 'Q') {
player1.paddleUp = true;
}
if (keyCode == DOWN_ARROW) {
player2.paddleDown = true;
} else if (keyCode == UP_ARROW) {
player2.paddleUp = true;
}
}
function keyReleased() {
if (key == 'A') {
player1.paddleDown = false;
} else if (key == 'Q') {
player1.paddleUp = false;
}
if (keyCode == DOWN_ARROW) {
player2.paddleDown = false;
} else if (keyCode == UP_ARROW) {
player2.paddleUp = false;
}
}
不要从 draw
内调用 redraw
; p5
会为您处理。