хрув М, Сікорд Р.С, Дін Ф. Сазерленд, Свобода Д. Керівництво для програміста на Java.- М .: «Вільямс», 2014. - 256 с.
4.Нейгел К. C # 5.0 і платформа .NET 4.5 для професіоналів - М .: «Діалектика» lt; # justify gt; 6. Хорстманн К.С, Корнелл Г. Java. Бібліотека професіонала, том 1. - М .: «Вільямс», 2013. - 864 с.
7.Шварц Р. Л., Фенікс Т, Фой Б. Д. Вивчаємо Perl lt; # justify gt; Додаток 1
java.awt.BorderLayout;java.awt.Canvas;java.awt.Color;java.awt.Dimension;java.awt.Graphics;java.awt.event.KeyEvent;java.awt.event.KeyListener;java.awt.image.BufferStrategy;java.awt.image.BufferedImage;java.io.DataInputStream;java.io.DataOutputStream;java.io.IOException;java.Socket;javax.swing.JFrame;javax.swing.JOptionPane;
class ClientPlayer extends Canvas implements Runnable, KeyListener {static final long serialVersionUID=1L; out; in; serverIP; serverPort; socket; frame; width=600; height=400; final Dimension gameDim=new Dimension (width, height); image=new BufferedImage (width, height, BufferedImage.TYPE_INT_RGB); pWidth=15; pHeight=45; xPos; yPos; sXPos; int sYPos; moveUp=false; moveDown=false; int serverScore=0; int clientScore=0; int bX; int bY; bSize=8; int ticks=0; int frames=0; int FPS=0; int UPS=0; double delta; limitFrameRate=false; shouldRender;
void run () {lastTime=System.nanoTime (); nsPerTick=1000000000D/60D; lastTimer=System.currentTimeMillis ();=0D; (true) {now=System.nanoTime (); +=(now - lastTime)/nsPerTick;=now;=false; (delta gt;=1) {++; (); -=1;=true;
} (! limitFrameRate amp; amp; ticks gt; 0)=true; (shouldRender) {++; ();
} (System.currentTimeMillis () - lastTimer gt;=1000) {+=1000;=frames;=ticks;=0;=0;
}
}
} void requestInformation () {= JOptionPane.showInputDialog ( IP-адресу сервера. );=Integer.parseInt (JOptionPane.showInputDialog ( Порт сервера. ));
} void createFrame () {(gameDim); (gameDim); (gameDim);=new JFrame ( Клієнт ) ;. setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) ;. setLayout (new BorderLayout ( )) ;. add (this, BorderLayout.CENTER);.pack();.setResizable(false);.setLocationRelativeTo(null);.setVisible(true);
=frame.getWidth () - pWidth - 15;=frame.getHeight ()/2 - pHeight;=15;=frame.getHeight ()/2 - pHeight; (this); () ; thread=new Thread (this) ;. start ();
} void handShake () {{= new Socket (serverIP, serverPort);=new DataOutputStream (socket.getOutputStream ());=new DataInputStream (socket.getInputStream ()); {. writeUTF ( це йде до підключеного гравцеві );
} catch (IOException e1) {.printStackTrace ();
} serverIn=new Input (in); inputThread=new Thread (serverIn) ;. start ();
} catch (IOException e) {.out.println ( З'єднання розірване. );
}
} ClientPlayer () {(); (); ();
} void movement () {(moveUp amp; amp; yPos gt; 0) {-=3;
} (moveDown amp; amp; yPos + pHeight lt; getHeight ()) {+=3;
}
} void tick () {(); {. writeInt (yPos);
} catch (IOException e) {.printStackTrace ();
}
} void render () {bs=getBufferStrategy ();
(bs == null) {(3) ;;
} g=bs.getDrawGraphics () ;. drawImage (image, 0, 0, getWidth (), getHeight (), null) ;. setColor (Color.WHITE) ;. fillRect (xPos, yPos, pWidth, pHeight) ;. fillRect (sXPos, sYPos, pWidth, pHeight) ;. fillOval (bX, bY, bSize, bSize) ;. drawString ( P1 Score: + serverScore, 40, 10) ;. drawString ( P2 Score: + clientScore, getWidth () - 105, 10) ;. dispose () ;. show ();
} void keyPressed (KeyEvent e) {(e.getKeyCode () == KeyEvent.VK_W) {= true;
} void keyReleased (KeyEvent e) {(e.getKeyCode () == KeyEvent.VK_W) {= false;
} void keyTyped (KeyEvent e) {
}
} Input implements Runnable {in; Input (DataInputStream in) {.in=in;
} void run () {(true) {{.bX=in.readInt () ;. bY=in.readInt () ;. sYPos=in.readInt () ;. serverScore=in.readInt () ;. clientScore=in.readInt ();
} catch (IOException e) {.out.println ( З'єднання втрачено. ) ;. exit (0);
}
}
}
}
Додаток 2
java.awt.BorderLayout;java.awt.Canvas;java.awt.Color;java.awt.Dimension;java.awt.Graphics;java.awt.Rectangle;java.awt.event.KeyEvent;java.awt.event.KeyListener;java.awt.image.BufferStrategy;java.aw...