所以我刚开始做一些带处理的java,遇到了我无法相互独立移动的问题。
当我移动pad1并启动pad2时,pad1只是停止而反过来,这样当游戏变得更快时,两个玩家会干扰彼此的动作。
我试图通过将打击垫变成物体来达到差异,但我没有完成对问题本身的任何改变。代码的结尾现在可以忽略,因为我想我会用forLoop解决这个问题。
float player_1_x;
float player_1_y;
float player_2_x;
float player_2_y;
float ball_x;
float ball_y;
float ball_vector_x;
float ball_vector_y;
int round;
void setup() {
player_1_x = 20;
player_1_y = 60;
player_2_x = 780;
player_2_y = 60;
ball_x = 400;
ball_y = 300;
ball_vector_x = -3;
ball_vector_y = 0;
round = 0;
size(800, 600);
rectMode(CENTER);
}
void draw() {
background(0);
rect(ball_x, ball_y, 10, 10);
rect(player_2_x, player_2_y, 20, 100);
if(keyPressed) {
if(keyCode == DOWN && player_2_y < 550) {
player_2_y += 5;
}
if(keyCode == UP && player_2_y > 50) {
player_2_y -= 5;
}
}
rect(player_1_x, player_1_y, 20, 100);
if(keyPressed) {
if(key == 's' && player_1_y < 550) {
player_1_y += 5;
}
if(key == 'w' && player_1_y > 50) {
player_1_y -= 5;
}
}
ball_x += ball_vector_x;
ball_y += ball_vector_y;
if(ball_x < 30) {
if(ball_y < (player_1_y + 55) && ball_y > (player_1_y - 55)) {
ball_vector_x = (-ball_vector_x) + 0.5;
ball_vector_y -= (player_1_y - ball_y) * 0.05;
} else {
ball_x = 400;
ball_y = 300;
ball_vector_x = -3;
ball_vector_y = 0;
round = 0;
}
}
if(ball_x > 770) {
if(ball_y < (player_2_y +55) && ball_y > (player_2_y - 55)) {
ball_vector_x = (-ball_vector_x) - 0.5;
ball_vector_y -= (player_2_y - ball_y) * 0.05;
} else {
ball_x = 400;
ball_y = 300;
ball_vector_x = 3;
ball_vector_y = 0;
round = 0;
}
}
if(ball_y > 595 || ball_y < 5) {
ball_vector_y = -ball_vector_y;
}
if(ball_vector_x == 4 || ball_vector_x == -4) {
round = 1;
} else if(ball_vector_x == 5 || ball_vector_x == -5) {
round = 2;
} else if(ball_vector_x == 6 || ball_vector_x == -6) {
round = 3;
} else if(ball_vector_x == 7 || ball_vector_x == -7) {
round = 4;
} else if(ball_vector_x == 8 || ball_vector_x == -8) {
round = 5;
} else if(ball_vector_x == 9 || ball_vector_x == -9) {
round = 6;
} else if(ball_vector_x == 10 || ball_vector_x == -10) {
round = 7;
}
text("round: " + round, 380, 20);
}
答案 0 :(得分:0)
如果您希望一次接受多个输入而不发生冲突,请使用DirectorySlash off
和keyPressed()
功能。无论何时按下某个键,这些功能都会接受您的输入。但是,这些仅在您按下并释放按键时注册,而不是在按住按键时注册。要纠正这个问题,请将boolean变量设置为up和down,当它们为true时,移动paddles。这使您可以随时平稳地移动拨片,没有任何问题或干扰。然后,您可以删除检查keyReleased()
循环中的键的if语句。在实践中,它看起来像这样:
draw()
然后,在你的boolean player_1_down;//Initialize all of these to false in setup.
boolean player_1_up;
boolean player_2_down;
boolean player_2_up ;
....
void keyPressed(){
if(key == 's') {
player_1_down = true;
}
if(key == 'w' ) {
player_1_up = true;
}
if(keyCode == DOWN ) {
player_2_down = true;
}
if(keyCode == UP ) {
player_2_up = true;
}
}
void keyReleased(){
if(key == 's' ) {
player_1_down = false;
}
if(key == 'w') {
player_1_up = false;
}
if(keyCode == DOWN ) {
player_2_down = false;
}
if(keyCode == UP) {
player_2_up = false;
}
}
循环中,靠近顶部,放置它,让你的桨移动:
draw()