首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Pong Game,Paddle不动

Java Pong Game,Paddle不动
EN

Stack Overflow用户
提问于 2017-11-19 16:51:41
回答 1查看 184关注 0票数 0

当按下VK_UPVK_DOWN时,我创建的图形g的位置没有任何改变。如果有人能看一看,看看我的移动方法等是否有什么问题,我会非常感谢。

以下是我到目前为止的所有代码:

代码语言:javascript
复制
package ping2; 
import java.applet.Applet;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


public class Ping2 extends Applet implements Runnable, KeyListener{
final int WIDTH = 700, HEIGHT = 500;
Thread thread;
UserPaddle user1;
public void init() {


    this.resize(WIDTH, HEIGHT);
    this.addKeyListener(this);
    user1 = new UserPaddle(1);
    thread = new Thread(this);

    thread.start();


}

public void paint(Graphics g) {
    g.setColor(Color.black);
    g.fillRect(0, 0, WIDTH, HEIGHT);
    user1.draw(g);
}

public void update(Graphics g) {
    paint(g);
}








    public void run() {
    for(;;) {

        user1.move();

        repaint();
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_UP) {
        user1.setUpAccel(true);
    }
    else if(e.getKeyCode() == KeyEvent.VK_DOWN) {

        user1.setDownAccel(true);
    }
}

public void keyReleased(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_UP) {
        user1.setUpAccel(false);
    }
    else if(e.getKeyCode() == KeyEvent.VK_DOWN) {
        user1.setDownAccel(false);
    }
}

public void keyTyped(KeyEvent arg0) {


}

}

package ping2;

import java.awt.*;


public class UserPaddle implements InterfaceBar{

double y, yVelocity;
boolean upAccel, downAccel;
int player1, x;
final double FRICTION = 0.90;

    public UserPaddle(int player1) {
    upAccel = false; 
    downAccel = false;
    y = 210; 
    yVelocity = 0;
    if(player1 == 1)
        x = 20;
    else
        x = 660;
}

public void draw(Graphics g) {
    g.setColor(Color.white);
    g.fillRect(x, (int)y, 20, 80);
}

public void move() {
    if(upAccel) {
        yVelocity -= 2;
    }else if(downAccel) {
        yVelocity += 2;
    }
    //Automatically slows bar down if key not being pressed.
    else if(!upAccel && !downAccel) {
        yVelocity *= FRICTION;
    }
}
public void setUpAccel(boolean input) {
    upAccel = input;
}
public void setDownAccel(boolean input) {
    downAccel = input;
}



public int getY() {

    return (int)y;
}

}
package ping2;

import java.awt.Graphics;

public interface InterfaceBar {

public void draw(Graphics g);
public void move();
public int getY();


}
EN

回答 1

Stack Overflow用户

发布于 2017-11-19 17:15:41

我对你的move()做了一点修改,试一下

move()

代码语言:javascript
复制
public void move() {
    if(upAccel) {
        yVelocity -= 2;
        y = yVelocity;
    }else if(downAccel) {
        yVelocity += 2;
        y = yVelocity;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47375135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档