Note that there are some explanatory texts on larger screens.

plurals
  1. POHow can I prevent flashing?
    primarykey
    data
    text
    <pre><code>import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Racing extends JFrame { private static final long serialVersionUID = -198172151996959655L; //makes the screen size final int WIDTH = 900, HEIGHT = 650; //keeps track of player speed double plSpeed = .5; //numbers that represent direction final int UP = 0, RIGHT = 1, DOWN = 2, LEFT = 3, STOP = 5, START = 6; //keeps track of player direction int p1Direction = START; //makes player 1's car Rectangle p1 = new Rectangle ( 100, 325, 30, 30 ); Rectangle foreground = new Rectangle( 500, 500, 200, 200 ); //constructor public Racing() { //define defaults for the JFrame super ("Racing"); setSize( WIDTH, HEIGHT ); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); setBackground(Color.BLACK); //start the inner class Move1 m1 = new Move1(); m1.start(); } //draws the cars and race track public void paint(Graphics g) { super.paint(g); //draw p1 g.setColor(Color.RED); g.fillRect(p1.x,p1.y,p1.width,p1.height); g.setColor(Color.GREEN); g.fillRect(foreground.x,foreground.y,foreground.width,foreground.height); } private class Move1 extends Thread implements KeyListener { public void run() { //makes the key listener "wake up" addKeyListener(this); //should be done in an infinite loop, so it repeats while (true) { //make try block, so it can exit if it errors try { //refresh screen repaint(); //makes car increase speed a bit if (plSpeed &lt;= 7) { plSpeed += .2; } //lets the car stop if (plSpeed==0) { p1Direction = STOP; } //moves player based on direction if (p1Direction==UP) { p1.y -= (int) plSpeed; } if (p1Direction==DOWN) { p1.y += (int) plSpeed; } if (p1Direction==LEFT) { p1.x -= (int) plSpeed; } if (p1Direction==RIGHT) { p1.x += (int) plSpeed; } if (p1Direction==STOP) { plSpeed = 0; } //delays refresh rate Thread.sleep(75); } catch(Exception e) { //if an error, exit break; } } } //have to input these (so it will compile) public void keyPressed(KeyEvent event) { try { //makes car increase speed a bit if (event.getKeyChar()=='w' || event.getKeyChar()=='a' || event.getKeyChar()=='s' || event.getKeyChar()=='d') { plSpeed += .2; repaint(); } } catch (Exception I) {} } public void keyReleased(KeyEvent event) {} //now, to be able to set the direction public void keyTyped(KeyEvent event) { if (plSpeed &gt; 0) { if (event.getKeyChar()=='a') { if (p1Direction==RIGHT) { p1Brake(); } else { if (p1Direction==LEFT) { } else { p1Direction = LEFT; } } } if (event.getKeyChar()=='s') { if (p1Direction==UP) { p1Brake(); } else { if (p1Direction==DOWN) { } else { p1Direction = DOWN; } } } if (event.getKeyChar()=='d') { if (p1Direction==LEFT) { p1Brake(); } else { if (p1Direction==RIGHT) { } else { p1Direction = RIGHT; } } } if (event.getKeyChar()=='w') { if (p1Direction==DOWN) { p1Brake(); } else { if (p1Direction==UP) { } else { p1Direction = UP; } } } if (event.getKeyChar()=='z') { p1Brake(); } } } public void p1Brake () { try { while (plSpeed != 0) { plSpeed -= .2; Thread.sleep(75); } } catch (Exception e) { plSpeed = 0; } } } //finally, to start the program public static void main(String[] args) { Racing frame = new Racing(); frame.setVisible( true ); frame.setLocationRelativeTo( null ); frame.setResizable( false ); } </code></pre> <p>}</p> <p>This is an SSCCE of my code. If I add super.paint(g); to the top of this, inside the class, then it gets all flashy. If I leave that out, then whenever you move the player, then it creates a line of where the player has been-without repainting. I need to know how to - and where to repaint. The closest I have gotten to my answer here here:</p> <p><a href="http://www.java-forums.org/awt-swing/37406-repaint-without-flashing.html" rel="nofollow noreferrer">http://www.java-forums.org/awt-swing/37406-repaint-without-flashing.html</a></p> <p>but they have an applet (which I have never dealt with before, and assuming it would be rather tricky to translate the code from applet to frames). Can anybody help me with this?</p> <p>Notes:</p> <p>I didn't know you could make a frame with awt, because I was happy and familiar with swing, so I didn't want to change. Sorry about that. As you can see, whatever i draw flashes, not just the player.</p> <p>Andrew, here's my screenshot: <img src="https://i.stack.imgur.com/sSfM2.png" alt="the game"></p> <p>Oh, and it doesn't register P2.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload