рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЬрд╛рд╡рд╛ рдЧреЗрдо рдмрдирд╛рдирд╛, рднрд╛рдЧ рдПрдХ



рдкрд░рд┐рдЪрдп рдФрд░ рддреИрдпрд╛рд░реА



рд╣рд╛рдп рд╣рдмреНрд░реЛрдЬрд╝рд┐рдЯреЗрд▓реАред рдпрд╣ рдкреЛрд╕реНрдЯ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкреЛрд╕реНрдЯ рдХрд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рд╣реИред рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрдзрд┐рдХ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдХреНрдпреЛрдВ рдЬрд╛рд╡рд╛

рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рднрд╛рд╖рд╛ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИред рд╣рд╛рдВ, рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдИ рдПрдПрдП-рд╢реНрд░реЗрдгреА рдХреЗ рдЦреЗрд▓ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдорд╣рд╛рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдЕрдзрд┐рдХ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдг рдФрд░ рддреЗрдЬ рдХреЛрдб рд▓реЗрдЦрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЖрдИрдбреАрдИ

рдЖрдЗрдП рдПрдХ рдЖрдИрдбреАрдИ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВ рдЧреНрд░рд╣рдг рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред
рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк NetBeans, Intellij IDEA рдпрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдФрд░ рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

JDK

рдФрд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг JDK : JDK 7u4 рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдкрдХреЛ рдЖрдИрдбреАрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ 32-рдмрд┐рдЯ рдЧреНрд░рд╣рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрднреА-рдХрднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЧреНрд░рд╣рдг рдЕрднреА рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рд╣рдо рдПрдХ рдЧреЗрдо рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред


рдЦреЗрд▓ рдХрдХреНрд╖рд╛


рддреЛ, рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдХреНрд▓рд╛рд╕ рдЧреЗрдо (рд╕рд╛рде рд╣реА рдЗрд╕рдореЗрдВ рдПрдХ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ)ред рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдХреИрдирд╡рд╕ рд╢реНрд░реЗрдгреА рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

public class Game extends Canvas implements Runnable { private static final long serialVersionUID = 1L; public void run() { // run   ,    "implements Runnable" } public static void main(String[] args) { } } 


рдЖрдЗрдП, рдмреВрд▓рд┐рдпрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд░рдирд┐рдВрдЧ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЧреЗрдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рд╣рдо рд╕реНрдЯрд╛рд░реНрдЯ () рдлрдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╣рдо рдПрдХ рдирдпрд╛ рдереНрд░реЗрдб рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рд╕рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ:

 public void start() { running = true; new Thread(this).start(); } 


рдЖрдЗрдП рддреАрди рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ - рдЕрдкрдбреЗрдЯ (рд▓рдВрдмрд╛ рдбреЗрд▓реНрдЯрд╛), рд░реЗрдВрдбрд░ () рдФрд░ рдЗрдирд┐рдЯ ()ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрдирдХрд╛ рдЕрд░реНрде рд╕рдордЭреЗрдВрдЧреЗред рд░рди () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдореБрдЦреНрдп рдЧреЗрдо рд▓реВрдк рдмрдирд╛рдПрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЗрдирд┐рдЯ () рдХрд╣реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕рдореЗрдВ рд░реЗрдВрдбрд░ () рдФрд░ рдЕрдкрдбреЗрдЯ () рдХрд░реЗрдВрдЧреЗред рд╣рдо рдлреНрд░реЗрдо (рдбреЗрд▓реНрдЯрд╛ рд╕рдордп) рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреА рднреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗред

 public void run() { long lastTime = System.currentTimeMillis(); long delta; init(); while(running) { delta = System.currentTimeMillis() - lastTime; lastTime = System.currentTimeMillis(); update(delta); render(); } } public void init() { } public void render() { } public void update(long delta) { } 


рдЕрднреА рдХреЗ рд▓рд┐рдП, рд░реЗрдВрдбрд░ () рдлрдВрдХреНрд╢рди рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

 public void render() { BufferStrategy bs = getBufferStrategy(); if (bs == null) { createBufferStrategy(2); // BufferStrategy    requestFocus(); return; } Graphics g = bs.getDrawGraphics(); // Graphics    BufferStrategy g.setColor(Color.black); //  g.fillRect(0, 0, getWidth(), getHeight()); //  g.dispose(); bs.show(); // } 


рдЖрдк рд╢рд╛рдпрдж рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдЬрд▓реНрджреА рдордд рдХрд░реЛред рд╣рдореЗрдВ рдПрдХ рдлреНрд░реЗрдо рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рд╣рдо рддреАрди рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред

 public static int WIDTH = 400; // public static int HEIGHT = 300; // public static String NAME = "TUTORIAL 1"; //  public static void main(String[] args) { Game game = new Game(); game.setPreferredSize(new Dimension(WIDTH, HEIGHT)); JFrame frame = new JFrame(Game.NAME); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //      ESC frame.setLayout(new BorderLayout()); frame.add(game, BorderLayout.CENTER); //     frame.pack(); frame.setResizable(false); frame.setVisible(true); game.start(); } 




рдпрд╣ рд╣рдорд╛рд░рд╛ рдЧреЗрдо рдХреНрд▓рд╛рд╕ рдЕрдм рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреНрд▓рд╛рд╕



рдПрдХ рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред рдЪреВрдБрдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдЫреЛрдЯрд╛ рд╣реИ, рдореИрдВ рддреБрд░рдВрдд рдЗрд╕рдХреЗ рд╕рднреА рдХреЛрдб рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рджреВрдВрдЧрд╛:

 import java.awt.Graphics; import java.awt.Image; public class Sprite { private Image image; // public Sprite(Image image) { this.image = image; } public int getWidth() { //   return image.getWidth(null); } public int getHeight() { //   return image.getHeight(null); } public void draw(Graphics g,int x,int y) { //  g.drawImage(image,x,y,null); } } 


рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рд▓реЗ рд▓реЛ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред GetSprite () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧреЗрдо рдХреНрд▓рд╛рд╕ (рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ) рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред



 public Sprite getSprite(String path) { BufferedImage sourceImage = null; try { URL url = this.getClass().getClassLoader().getResource(path); sourceImage = ImageIO.read(url); } catch (IOException e) { e.printStackTrace(); } Sprite sprite = new Sprite(Toolkit.getDefaultToolkit().createImage(sourceImage.getSource())); return sprite; } 


рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ), рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕реНрд╡рдпрдВ рд╣реА рдирд┐рд░реНрдорд╛рдг рдкрде рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдЧрд▓рд╛, рд╕реНрдкреНрд░рд╛рдЗрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╣реАрд░реЛ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдВред Init () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред рд░реЗрдВрдбрд░ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдбреНрд░рд╛ рдХрд░реЗрдВ:

 // "" public static Sprite hero; // init() hero = getSprite("man.png"); // render()  g.fillRect(0, 0, getWidth(), getHeight()); hero.draw(g, 20, 20); 


рдкрд░рд┐рдгрд╛рдо:



рд╕рднреА Game.java рдХреЛрдб

рдЗрдирдкреБрдЯ


рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдХрд┐ рдХреАрдПрдк рдПрдбрд╛рдкреНрдЯрд░ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдЧрд╛:

 private class KeyInputHandler extends KeyAdapter { } 

рд╣рдо рддреБрд░рдВрдд рдЦреЗрд▓ рд╡рд░реНрдЧ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рджреЛ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ:

 private boolean leftPressed = false; private boolean rightPressed = false; 


KeyInputHandler рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░, рд╣рдо рджреЛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:

 public void keyPressed(KeyEvent e) { //  if (e.getKeyCode() == KeyEvent.VK_LEFT) { leftPressed = true; } if (e.getKeyCode() == KeyEvent.VK_RIGHT) { rightPressed = true; } } public void keyReleased(KeyEvent e) { //  if (e.getKeyCode() == KeyEvent.VK_LEFT) { leftPressed = false; } if (e.getKeyCode() == KeyEvent.VK_RIGHT) { rightPressed = false; } } 


рдЕрдм init () рдлрдВрдХреНрд╢рди рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

 addKeyListener(new KeyInputHandler()); 


рдирд╛рдпрдХ рдХреЗ рд▓рд┐рдП x рдФрд░ y рдЪрд░ рдмрдирд╛рдПрдВ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ)ред рдЪрд▓рд┐рдП рдирд╛рдпрдХ рдХреЛ рд╣рдореЗрд╢рд╛ рдЗрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 private static int x = 0; private static int y = 0; hero.draw(g, x, y); 

рдФрд░ рдЕрдм рдЕрдкрдбреЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣рдо рдЬрд╛рдВрдЪреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЪрд╛рдмрд┐рдпрд╛рдБ рджрдмрд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдПрдХреНрд╕-рд╕рдордиреНрд╡рдп рдХреЛ рдмрджрд▓ рджреЗрдВред

 public void update(long delta) { if (leftPressed == true) { x--; } if (rightPressed == true) { x++; } } 




рд╡рд╣ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ!

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкреАрдПрд╕ рд▓рд┐рдВрдХ рдЬреАрдердм рдХреЗ рд▓рд┐рдП

Source: https://habr.com/ru/post/In145433/


All Articles