Commit 81e7c71b authored by 9731301's avatar 9731301

complete client networkPlaying

parent 90315b7f
This diff is collapsed.
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -16,7 +16,7 @@ public class Client {
public void run(){
System.out.println("client connected");
try (Socket client = new Socket(InetAddress.getLocalHost().getHostName(),5757)){
try (Socket client = new Socket(InetAddress.getLocalHost().getHostName(),5758)){
OutputStream out = client.getOutputStream();
PrintWriter writer = new PrintWriter(out,true);
writer.println(user_pass);
......
package Server_Client.NetWorkGame;
import UI.GameState.*;
import UI.LogIn.Game.GameFrame;
import UI.Registration.InitialFrame;
import UI.Registration.InitialPanel;
import java.io.IOException;
import java.io.InputStream;
......@@ -15,69 +18,85 @@ public class Client1 {
private int port;
private int myX, myY, myRotate;
private ArrayList<BulletState> myBullets;
private WallState wallState;
private String serverAns;
private String[] enemyComponents;
private int numOfEnemies;
private String wallMap;
private WallState wallState;
private OutputStream out;
private InputStream in;
public Client1(String address , int port) {
this.host = address;
this.port = port;
numOfEnemies = 0;
wallState = new WallState(GameFrame.GAME_WIDTH , GameFrame.GAME_HEIGHT);
}
public void run0() throws IOException {
socket = new Socket(host,port);
out = socket.getOutputStream();
in = socket.getInputStream();
}
public void run(TankState tankState) {
try{
socket = new Socket(host,port);
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();
public void run1wall() throws IOException {
out.write(InitialPanel.userName.getText().getBytes());
out.write("Client1".getBytes());
String clientText = "";
byte[] buffer = new byte[2048];
int read = in.read(buffer);
wallMap = new String(buffer,0,read);
}
public void runToUpdateTank(TankState tankState) throws IOException {
try {
boolean running = true;
do {
clientText = myTankComponents();
running = !clientText.equalsIgnoreCase("over");
out.write(clientText.getBytes());
byte[] buffer = new byte[2048];
int read = in.read(buffer);
serverAns = new String(buffer,0,read);
System.out.println("- From Server : "+serverAns);
}while(running);
System.out.println("Client disconnected.");
socket.close();
}catch (IOException e){
System.out.println("Error : "+e.getMessage());
e.printStackTrace();
// do {
String clientText = "";
clientText = myTankComponents();
running = !clientText.equalsIgnoreCase("over");
out.write(clientText.getBytes());
byte[] buffer1 = new byte[2048];
int read1 = in.read(buffer1);
serverAns = new String(buffer1, 0, read1);
System.out.println("- From Server : " + serverAns);
// }while(running);
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void close() throws IOException {
out.write("over".getBytes());
System.out.println("Client disconnected.");
socket.close();
}
private int getNumOfEnemies(){
String[] s = serverAns.split(" ");
numOfEnemies = s.length/6;
System.out.println(serverAns);
System.out.println(s.length+"ength");
numOfEnemies = (s.length)/6;
System.out.println(numOfEnemies+"num of enemies");
return numOfEnemies;
}
public ArrayList<EnemyTank> createEnemyTanks(){
ArrayList<EnemyTank> enemyTanks = new ArrayList<>();
for (int i = 0 ; i < getNumOfEnemies() ; i ++){
EnemyTank enemyTank = new EnemyTank(wallState);
EnemyTank enemyTank = new EnemyTank(getWallState());
enemyTanks.add(enemyTank);
}
if (enemyTanks == null)
enemyTanks = new ArrayList<>();
return enemyTanks;
}
public void updateEnemyComponents(ArrayList<EnemyTank> enemyTanks){//ToDO separate tanks and each tank bullets
public void updateEnemyComponents(ArrayList<EnemyTank> enemyTanks){
int j = 0;
enemyComponents = serverAns.split(" ");
wallMap = enemyComponents[0];
for (int i = 1 ; i < getNumOfEnemies() ; i++){
for (int i = 0 ; i < getNumOfEnemies() ; i++){
enemyTanks.get(i).locX = Integer.parseInt(enemyComponents[j]);j++;
enemyTanks.get(i).locY = Integer.parseInt(enemyComponents[j]);j++;
enemyTanks.get(i).rotate = Integer.parseInt(enemyComponents[j]);j++;
......@@ -99,6 +118,8 @@ public class Client1 {
private String myTankComponents(){
String tankComponent , bulletComponent = "";
tankComponent = myX +" "+ myY +" " + myRotate ;
if (myBullets == null)
return tankComponent;
for (BulletState bullet : myBullets){
bulletComponent +=" " + bullet.locX + " " + bullet.locY ;
}
......
......@@ -24,7 +24,7 @@ public class Server {
public void runRegistration() {
if (serverSocket!=null) return;
try {
serverSocket = new ServerSocket(5757);
serverSocket = new ServerSocket(5758);
System.out.println("server connected");
} catch (IOException e) {
e.printStackTrace();
......
his2|pp
1|1
4|4
......@@ -90,7 +90,7 @@ public class RewardState {
}
public void runReward(TankState tankState){
switch (1) {
switch (numOfReward) {
case 0:shield(tankState);break;
case 1:extraLife(tankState);break;
case 2:extraBulletDamage(tankState);break;
......
......@@ -27,7 +27,7 @@ public class TankState {
public int locX, locY, diam, rotate;
public boolean gameOver;
protected WallState walls;
protected ArrayList<BulletState> bullets = new ArrayList<>();
protected ArrayList<BulletState> bullets ;
private boolean hasShield;
private boolean hasLaser;
private int tankLife ;
......@@ -39,6 +39,7 @@ public class TankState {
// Initialize the game state and all elements ...
// setFirstLocationOfTank();
setFirstLocationOfTank();
bullets = new ArrayList<>();
rotate = 0;
diam = 32;
keyUP = false;
......@@ -67,7 +68,6 @@ public class TankState {
while (true) {
locX = randomX.nextInt(GameFrame.GAME_WIDTH-20);
locY = randomY.nextInt(GameFrame.GAME_HEIGHT-40);
System.out.println(locX +" "+locY);
if (!walls.isWallForTank(locX , locY) && locX > 10 && locY >10 && locX < GameFrame.GAME_WIDTH-10 && locY < GameFrame.GAME_HEIGHT -10)
break;
}
......@@ -80,6 +80,8 @@ public class TankState {
}
public ArrayList<BulletState> getBullets() {
if (bullets == null)
bullets = new ArrayList<BulletState>();
return bullets;
}
......
......@@ -13,7 +13,7 @@ import java.util.ArrayList;
public class WallState {
private int frameX, frameY;
private String source;
private String source = "C:\\Users\\Lenovo\\IdeaProjects\\JTankTrouble\\maps\\map3.txt";
private String[] lines;
public int numRows, numColumns, w, h;
private ArrayList<WallData> walls = new ArrayList<>();
......@@ -27,7 +27,7 @@ public class WallState {
frameY = GAME_HEIGHT;
try {
source = new String(Files.readAllBytes(Paths.get("C:\\Users\\Lenovo\\IdeaProjects\\JTankTrouble\\maps\\map3.txt")), StandardCharsets.UTF_8);
source = new String(Files.readAllBytes(Paths.get(source)), StandardCharsets.UTF_8);
wall1 = ImageIO.read(new File("C:\\Users\\Lenovo\\IdeaProjects\\JTankTrouble\\pics\\wall1.png"));
wall2 = ImageIO.read(new File("C:\\Users\\Lenovo\\IdeaProjects\\JTankTrouble\\pics\\wall2.png"));
blank = ImageIO.read(new File("C:\\Users\\Lenovo\\IdeaProjects\\JTankTrouble\\pics\\blank.png"));
......
......@@ -59,7 +59,7 @@ public class MainPanel extends JPanel {
super.mouseClicked(e);
Client1 client1 = null;
try {
client1 = new Client1(InetAddress.getLocalHost().getHostName(),5000);
client1 = new Client1(InetAddress.getLocalHost().getHostName(),5001);
run2(client1);
} catch (UnknownHostException ex) {
ex.printStackTrace();
......@@ -116,6 +116,11 @@ public class MainPanel extends JPanel {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
client1.run0();
} catch (IOException e) {
e.printStackTrace();
}
NWGFrame frame = new NWGFrame("Trouble Tank");
frame.setLocationRelativeTo(null); // put frame at center of screen
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
......@@ -123,8 +128,14 @@ public class MainPanel extends JPanel {
frame.initBufferStrategy();
// Create and execute the game-loop
NWGLoop game = new NWGLoop(frame , client1);
game.init();
try {
game.init();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("222222 after init");
ThreadPool.execute(game);
System.out.println("after thearsd");
// and the game starts ...
}
});
......
......@@ -45,10 +45,11 @@ import java.util.ArrayList;
/**
* This must be called before the game loop starts.
*/
public void init() {
public void init() throws IOException {
// Perform all initializations ...
myTank = new MyTank(canvas.wallState);
client1.run(myTank);
myTank = new MyTank(client1.getWallState());
client1.run1wall();
client1.runToUpdateTank(myTank);
enemyTanks = client1.createEnemyTanks();
canvas.addKeyListener(myTank.getMyListener());
canvas.addMouseListener(myTank.getMouseListener());
......@@ -63,6 +64,7 @@ import java.util.ArrayList;
try {
long start = System.currentTimeMillis();
myTank.update();
client1.runToUpdateTank(myTank);
client1.updateEnemyComponents(enemyTanks);
client1.updateMyTank(myTank);
canvas.render(myTank , enemyTanks , client1.getWallState());
......@@ -72,6 +74,11 @@ import java.util.ArrayList;
} catch (InterruptedException | IOException ex) {
}
}
try {
client1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package UI.LogIn;
import UI.Registration.InitialPanel;
import javax.swing.*;
import java.util.ArrayList;
public class Setting {
private float playedTime = 0;
private String userName ;
private String userName = InitialPanel.userName.getText() ;
private int numOfWinsSingle = 0;
private int numOfLoosesSingle = 0;
private int numOfWinsMulti = 0;
......@@ -29,9 +31,6 @@ public class Setting {
else numOfLoosesMulti++;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getNumOfWinsMulti() {
return numOfWinsMulti;
......
......@@ -11,7 +11,7 @@ import java.awt.event.MouseEvent;
import java.io.IOException;
public class InitialPanel extends JPanel {
public static boolean clickOnPlay;
private JTextField userName = new JTextField();
public static JTextField userName = new JTextField();
private JTextField pass = new JTextField();
public InitialPanel(){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment