Вы находитесь на странице: 1из 5

package Main;

import java.awt.BorderLayout;

import javax.swing.JFrame;

public class Game {

public static void main(String[] args){

JFrame frame = new JFrame ("Pong");


frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(new BorderLayout());
frame.add(new GameCanvas(),BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

package Main;

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

import javax.swing.JPanel;

public class GameCanvas extends JPanel implements Runnable, KeyListener{

private static final long serialVersionUID = 1L;

public static final int WIDTH = 800;


public static final int HEIGHT = 800;

public static Dimension size = new Dimension (WIDTH , HEIGHT);


public boolean isRunning = false;

private int FPS = 60;


private long targetTime = 1000 / FPS;

private Play play;

public GameCanvas(){
setMinimumSize(size);
setPreferredSize(size);
setMaximumSize(size);

start();
}

public void start() {


addKeyListener(this);
setFocusable(true);
isRunning = true;
new Thread(this,"Game Loop").start();
}

public void stop(){


isRunning = false;
System.exit(0);
}

public void run() {

long start;
long elapsed;
long wait;

play = new Play();

while(isRunning) {
start = System.nanoTime();

tick();
repaint();

elapsed = System.nanoTime() - start;


wait = targetTime - elapsed;
if(wait < 0) wait = 5;

try {
Thread.sleep(5);

}catch(Exception e){
e.printStackTrace();
}

}
}

public void tick(){


play.update();

public void paint(Graphics g) {


g.clearRect(0,0,WIDTH,HEIGHT);
play.draw(g);

public void keyPressed(KeyEvent e) {


int key = e.getKeyCode();
play.keyPressed(key);
}

public void keyReleased(KeyEvent e) {


int key = e.getKeyCode();
play.keyReleased(key);
}

public void keyTyped(KeyEvent arg0) {}

package Main;

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

public class Play {

public Paddle p1,p2;

public Play() {
init();
}

public void init(){


p1 = new Paddle(new
Rectangle(0,GameCanvas.HEIGHT/2,20,100),KeyEvent.VK_W,KeyEvent.VK_S);
p2 = new Paddle(new Rectangle(GameCanvas.WIDTH -
20,GameCanvas.HEIGHT/2,20,100),KeyEvent.VK_UP,KeyEvent.VK_DOWN);
}

public void update(){


p1.update();
p2.update();

public void draw(Graphics g) {


//g.setColor(Color.BLACK);
//g.fillRect(0,0,GameCanvas.WIDTH,GameCanvas.HEIGHT);
p1.draw(g);
p2.draw(g);
}

public void keyPressed(int k){


p1.keyPressed(k);
p2.keyPressed(k);
}

public void keyReleased(int k){


p1.keyReleased(k);
p2.keyReleased(k);
}

}
package Main;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;

public class Paddle extends Rectangle {

private boolean up = false;


private boolean down = false;

private int upKey;


private int downKey;

public Paddle(Rectangle r,int upKey,int downKey){


setBounds(r);
y -= (height / 2);
this.upKey= upKey;
this.downKey = downKey;
}

public void update(){


if(y <= 0) up = false;
if(y + height >= GameCanvas.HEIGHT) down = false;

if(up) y--;
if(down) y++;
}

public void draw(Graphics g) {


//g.setColor(Color.WHITE);
g.fillRect(x, y, width, height);
}

public void keyPressed(int k ){


if(k == upKey) up = true;
if(k == downKey) down = true;

public void keyReleased(int k ){


if(k == upKey) up = true;
if(k == downKey) down = true;

Вам также может понравиться