From 8d0fedf836cfd418f9c05d5c21b3c6cc1875e5c9 Mon Sep 17 00:00:00 2001 From: cirakg Date: Mon, 2 Jan 2023 15:32:29 +0100 Subject: Omoguceno igranje igre. Prikaz rezultata po zavrsetku igre. Postavljanje korisnika da budu dostupni za nove zahteve.TODO(Popraviti progress bar,upisivanje rezultata igre u bazu, povratak korisnika da biranje protivnika,provera unosa web i client, ispit istorije meceva web) --- src/main/java/pokemon/Game.java | 124 ++++++++++++++++++++++++++++++++++++++ src/main/java/pokemon/Server.java | 45 +++++++++++++- 2 files changed, 167 insertions(+), 2 deletions(-) (limited to 'src/main/java/pokemon') diff --git a/src/main/java/pokemon/Game.java b/src/main/java/pokemon/Game.java index 57af464..a4a121e 100644 --- a/src/main/java/pokemon/Game.java +++ b/src/main/java/pokemon/Game.java @@ -7,6 +7,8 @@ import java.io.Serializable; import java.nio.channels.SocketChannel; import java.util.ArrayList; +import models.Ability; +import models.AbilityType; import models.GameStatus; import models.MonsterViewModel; @@ -26,6 +28,128 @@ public class Game implements Runnable, Serializable { public Game() { super(); } + public void player1Move(long abilityId) { + Ability a=null; + player1Turn=false; + double rand=Math.random(); + for(Ability temp :monster1.abilities) { + if(temp.id==abilityId) { + a=temp; + break; + } + } + int abilityResult=(int)(a.power*rand); + if(a.getType()==AbilityType.ATTACK) { + if(shield2>0) { + if(shield20) { + if(shield2=monster1.hp) { + currentHp1=monster1.hp; + } + else { + currentHp1=currentHp1+abilityResult; + } + + }else if(a.getType()==AbilityType.SHIELD) { + shield1=shield1+abilityResult; + + } + + } + public void player2Move(long abilityId) { + Ability a=null; + player1Turn=true; + double rand=Math.random(); + for(Ability temp :monster2.abilities) { + if(temp.id==abilityId) { + a=temp; + break; + } + } + int abilityResult=(int)(a.power*rand); + if(a.getType()==AbilityType.ATTACK) { + if(shield1>0) { + if(shield10) { + if(shield1=monster2.hp) { + currentHp2=monster2.hp; + } + else { + currentHp2=currentHp2+abilityResult; + } + + }else if(a.getType()==AbilityType.SHIELD) { + shield2=shield2+abilityResult; + + } + + } + public int checkWin() { + int res=0; + if(currentHp1<=0) { + res=1; + status=GameStatus.PLAYER2WIN; + } + else if (currentHp2<=0){ + res=1; + status=GameStatus.PLAYER1WIN; + } + + return res; + + } @Override public void run() { diff --git a/src/main/java/pokemon/Server.java b/src/main/java/pokemon/Server.java index 9d56a27..0c8e31e 100644 --- a/src/main/java/pokemon/Server.java +++ b/src/main/java/pokemon/Server.java @@ -217,9 +217,10 @@ public class Server implements Runnable { System.out.println(opponentId); Game game=null; for(Game tempGame :games) { - if(tempGame.player1Id==opponentId) + if(tempGame.player1Id==opponentId) { game=tempGame; - break; + break; + } } game.status=GameStatus.PLAYING; ByteBuffer buff = ByteBuffer.wrap(game.toString().getBytes()); @@ -285,8 +286,48 @@ public class Server implements Runnable { opponentSocket.write(buff); ByteBuffer buff1 = ByteBuffer.wrap(myMsg.getBytes()); sc.write(buff1); + }else if(msg[0].equals("GAMEPLAY")) { + long myId=players.get(sc); + long moveId=Long.parseLong(msg[1]); + + Game game=null; + for(Game tempGame :games) { + if(tempGame.player1Id==myId || tempGame.player2Id==myId) { + game=tempGame; + break; + } + } + long opponentId=-1; + + if(game.player1Id==myId) { + opponentId=game.player2Id; + game.player1Move(moveId); + }else { + opponentId=game.player1Id; + game.player2Move(moveId); + } + SocketChannel opponentSocket=null; + for(Entry player : players.entrySet()) { + if(player.getValue()==opponentId) { + opponentSocket=player.getKey(); + break; + } + } + int gameRes=game.checkWin(); + ByteBuffer buff = ByteBuffer.wrap(game.toString().getBytes()); + opponentSocket.write(buff); + ByteBuffer buff1 = ByteBuffer.wrap(game.toString().getBytes()); + sc.write(buff1); + + if(gameRes==1) { + inGame.remove(sc); + inGame.remove(opponentSocket); + games.remove(game); + System.out.println("GAME FINISHED"+games.size()); + //add game to database + } } -- cgit v1.2.3