
рдкрд░рд┐рдЪрдп рдФрд░ рддреИрдпрд╛рд░реА
рд╣рд╛рдп рд╣рдмреНрд░реЛрдЬрд╝рд┐рдЯреЗрд▓реАред рдпрд╣ рдкреЛрд╕реНрдЯ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкреЛрд╕реНрдЯ рдХрд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рд╣реИред рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрдзрд┐рдХ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдХреНрдпреЛрдВ рдЬрд╛рд╡рд╛
рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рднрд╛рд╖рд╛ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИред рд╣рд╛рдВ, рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдИ рдПрдПрдП-рд╢реНрд░реЗрдгреА рдХреЗ рдЦреЗрд▓ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рдорд╣рд╛рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ, рдЕрдзрд┐рдХ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдг рдФрд░ рддреЗрдЬ рдХреЛрдб рд▓реЗрдЦрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЖрдИрдбреАрдИ
рдЖрдЗрдП рдПрдХ рдЖрдИрдбреАрдИ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдореИрдВ
рдЧреНрд░рд╣рдг рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред
рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 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() {
рдЖрдЗрдП, рдмреВрд▓рд┐рдпрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд░рдирд┐рдВрдЧ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЧреЗрдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рд╣рдо рд╕реНрдЯрд╛рд░реНрдЯ () рдлрдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╣рдо рдПрдХ рдирдпрд╛ рдереНрд░реЗрдб рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рд╕рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ:
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);
рдЖрдк рд╢рд╛рдпрдж рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдЬрд▓реНрджреА рдордд рдХрд░реЛред рд╣рдореЗрдВ рдПрдХ рдлреНрд░реЗрдо рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рд╣рдо рддреАрди рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред
public static int WIDTH = 400;
рдпрд╣ рд╣рдорд╛рд░рд╛ рдЧреЗрдо рдХреНрд▓рд╛рд╕ рдЕрдм рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреНрд▓рд╛рд╕
рдПрдХ рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВред рдЪреВрдБрдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдЫреЛрдЯрд╛ рд╣реИ, рдореИрдВ рддреБрд░рдВрдд рдЗрд╕рдХреЗ рд╕рднреА рдХреЛрдб рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рджреВрдВрдЧрд╛:
import java.awt.Graphics; import java.awt.Image; public class Sprite { private Image image;
рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЗрд╕ рддрд╕реНрд╡реАрд░ рдХреЛ рд▓реЗ рд▓реЛ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред 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 () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВред рд░реЗрдВрдбрд░ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдбреНрд░рд╛ рдХрд░реЗрдВ:
рдкрд░рд┐рдгрд╛рдо:
рд╕рднреА Game.java рдХреЛрдбрдЗрдирдкреБрдЯ
рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдХрд┐ рдХреАрдПрдк рдПрдбрд╛рдкреНрдЯрд░ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдЧрд╛:
private class KeyInputHandler extends KeyAdapter { }
рд╣рдо рддреБрд░рдВрдд рдЦреЗрд▓ рд╡рд░реНрдЧ рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рджреЛ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ:
private boolean leftPressed = false; private boolean rightPressed = false;
KeyInputHandler рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░, рд╣рдо рджреЛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
public void keyPressed(KeyEvent e) {
рдЕрдм 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++; } }

рд╡рд╣ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ!
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдкреАрдПрд╕ рд▓рд┐рдВрдХ
рдЬреАрдердм рдХреЗ рд▓рд┐рдП