2017-11-19 36 views
0

VK_UPまたはVK_DOWNを押すと、作成したGraphic gの位置は変わりません。誰かが見て、私の移動方法などに何か問題があるかどうかを見れば本当に感謝します。ここでJava Pong Game、パドルが動いていない

は、これまでのところ、すべての私のコードです:私はあなたのmove()ビットを変更した

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(); 


} 

答えて

0

はそれを指し示すための私の問題のおかげで解決してみてください

移動()

public void move() { 
    if(upAccel) { 
     yVelocity -= 2; 
     y = yVelocity; 
    }else if(downAccel) { 
     yVelocity += 2; 
     y = yVelocity; 
    } 
} 
+0

を与えますそれは –

+0

あなたも解決としてあなたの質問をマークするために受け入れられるように答えをマークすることができます –