Skip to content

Commit

Permalink
funcionando com banco.
Browse files Browse the repository at this point in the history
  • Loading branch information
gcaraciolo committed May 25, 2016
1 parent 19af131 commit 359c698
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 857 deletions.
23 changes: 3 additions & 20 deletions src/main/java/br/unicap/cardgame/controller/CardController.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,10 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package br.unicap.cardgame.controller;

import br.unicap.cardgame.model.Cards;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
*
* @author gcaraciolo
*/
public class CardController {

@PersistenceContext(unitName = "cardgame")
private EntityManager em;

public int getCorretAnswer(int card_id) {
Cards card = em.find(Cards.class, card_id);
System.out.println(card);
System.out.println(card.getQuestionId().getCorrectAnswerId().getId());
return 1;

public int getCorretAnswer(Cards card) {
return card.getQuestionId().getCorrectAnswerId().getId();
}
}
47 changes: 47 additions & 0 deletions src/main/java/br/unicap/cardgame/controller/DeckController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package br.unicap.cardgame.controller;

import br.unicap.cardgame.model.Cards;
import br.unicap.cardgame.model.Users;
import br.unicap.cardgame.util.Utils;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class DeckController {

@PersistenceContext(unitName = "cardgame")
private EntityManager em;

private List<Cards> userCards(Users u) {
return em.createNativeQuery("select ca.id, ca.question_id, ca.attack, ca.defense, ca.life from users u, chars c, decks d, decks_cards dc, cards ca where \n" +
"u.id = " + u.getId() + " and \n" +
"u.char_id = c.id and \n" +
"c.deck_id = d.id and \n" +
"d.id = dc.deck_id and\n" +
"dc.card_id = ca.id;", Cards.class).getResultList();
}

public List<Cards> randonCards(Users u) {
List<Cards> cards = userCards(u);
if(cards.size() < 1) {
return new ArrayList<Cards>();
}
List<Cards> randon = new ArrayList<Cards>();
for(int i = 0; i < 3; i++) {
randon.add(cards.get(Utils.getRandomNumber(0, cards.size())));
}
return randon;
}

public Cards randonCard(Users u) {
List<Cards> cards = userCards(u);
if(cards.size() < 1) {
return null;
}
return cards.get(Utils.getRandomNumber(0, cards.size()));
}

}
19 changes: 18 additions & 1 deletion src/main/java/br/unicap/cardgame/controller/UserController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package br.unicap.cardgame.controller;

import br.unicap.cardgame.model.Chars;
import br.unicap.cardgame.model.Users;
import br.unicap.cardgame.util.Utils;
import javax.ejb.Stateless;
Expand All @@ -8,7 +9,6 @@
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

@Stateless
public class UserController {
Expand Down Expand Up @@ -37,4 +37,21 @@ public CardGameResponseToken authenticate(String username, String password) thro
private boolean verifyPassword(Users user, String password) {
return user.getPassword().equals(password);
}

public Chars getPlayerChar(String username) {
Users u = em.createNamedQuery("Users.findByUsername", Users.class)
.setParameter("username", username)
.getSingleResult();
Chars c = em.createNamedQuery("Chars.findById", Chars.class)
.setParameter("id", u.getCharId().getId())
.getSingleResult();
return c;
}

public Users getUserByName(String username) {
Users u = em.createNamedQuery("Users.findByUsername", Users.class)
.setParameter("username", username)
.getSingleResult();
return u;
}
}
34 changes: 27 additions & 7 deletions src/main/java/br/unicap/cardgame/engine/BattleField.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package br.unicap.cardgame.engine;

import br.unicap.cardgame.controller.CardController;
import br.unicap.cardgame.controller.DeckController;
import br.unicap.cardgame.controller.UserController;
import br.unicap.cardgame.model.Cards;
import br.unicap.cardgame.model.Chars;
import br.unicap.cardgame.model.Deck;
import br.unicap.cardgame.model.Player;
import br.unicap.cardgame.model.PlayerFighter;
import br.unicap.cardgame.model.Users;
import java.util.LinkedList;
import java.util.Queue;
import javax.ejb.EJB;
import javax.ejb.Singleton;

@Singleton
Expand All @@ -16,6 +19,12 @@ public class BattleField {
private PlayerFighter player1, player2, winner, loster;
private final Queue<Player> audience = new LinkedList<Player>();

@EJB
private UserController userController;

@EJB
private DeckController deckController;

/* getters and setters */
public Queue<Player> getAudience() {
return audience;
Expand Down Expand Up @@ -81,7 +90,7 @@ public void nextFight() {
public boolean play(int answerID) {
boolean match = false;
Cards card = getCurrentPlayer().useCardInGame();
if(checkAnswer(card.getId(), answerID)) {
if(checkAnswer(card, answerID)) {
getCurrentPlayer().increasePower(card);
match = true;
}
Expand All @@ -101,18 +110,29 @@ private void swapPlayers() {
}
}

private void getCardFromDeck() {
Cards card = Deck.randonCard();
private void getCardFromDeck() {
Users u = userController.getUserByName(getCurrentPlayer().getUsername());
Cards card = deckController.randonCard(u);
getCurrentPlayer().addCardToAvailableCards(card);
}

private PlayerFighter createNewPlayerFighter(Player player) {
return new PlayerFighter(player.getUsername(), new Chars(1)); //TODO criar aleatoriedade de personagens
Chars c = null;
PlayerFighter pf = null;
try {
c = userController.getPlayerChar(player.getUsername());
pf = new PlayerFighter(player.getUsername(), c);
Users u = userController.getUserByName(player.getUsername());
pf.setAvailableCards(deckController.randonCards(u));
} catch(Exception e) {
System.out.println(e);
}
return pf;
}

private boolean checkAnswer(int card_id, int answer_id) {
private boolean checkAnswer(Cards card, int answer_id) {
CardController cardController = new CardController();
int correctAnswer = cardController.getCorretAnswer(card_id);
int correctAnswer = cardController.getCorretAnswer(card);
return correctAnswer == answer_id;
}

Expand Down
41 changes: 18 additions & 23 deletions src/main/java/br/unicap/cardgame/engine/BattleFieldController.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,65 +16,60 @@ public class BattleFieldController {
@EJB
private BattleField battleField;

private CardGameResponse response(boolean status, int code, Object msg) {
CardGameResponse response = new CardGameResponse(status, code, msg);
return response;
}

public CardGameResponse addPlayer(Player player) {
if(alreadyJoinned(player, battleField.getPlayer1())
|| alreadyJoinned(player, battleField.getPlayer2())
|| battleField.getAudience().contains(player)) {
return response(true, 1001, "usarname already online");
return new CardGameResponse(true, 1001, "usarname already online");
}

battleField.addAudiencePlayer(player);
if(hasPlayersToPlay() && isBattleFieldEmpty()) {
battleField.firstFight();
return response(true, 1000, "Start fight");
return new CardGameResponse(true, 1000, "Start fight");
} else if(hasSomeOneOnline() && hasNextPlayersToPlay()) {
battleField.nextFight();
return response(true, 1015, "You're going to fight with " + battleField.getPlayer1().getUsername());
return new CardGameResponse(true, 1015, "You're going to fight with " + battleField.getPlayer1().getUsername());
}
return response(true, 1002, "You're in the audience");
return new CardGameResponse(true, 1002, "You're in the audience");
}

public CardGameResponse removePlayer(Player player) {
PlayerFighter winner;
if(player.equals(battleField.getPlayer1())) {
if(battleField.getPlayer2() == null) {
battleField.setPlayer1(null);
return response(true, 1016, "Nobody else online.");
return new CardGameResponse(true, 1016, "Nobody else online.");
}
battleField.getPlayer1().setLife(0);
winner = battleField.getPlayer2();
nextBattle();
return response(true, 1003, "You're lost. " + winner.getUsername() + " win.");
return new CardGameResponse(true, 1003, "You're lost. " + winner.getUsername() + " win.");
} else if(player.equals(battleField.getPlayer2())) {
battleField.getPlayer2().setLife(0);
winner = battleField.getPlayer1();
nextBattle();
return response(true, 1004, "You're lost. " + winner.getUsername() + " win.");
return new CardGameResponse(true, 1004, "You're lost. " + winner.getUsername() + " win.");
} else if(battleField.getAudience().contains(player)) {
battleField.removeAudiencePlayer(player);
return response(true, 1005, "Left from audience");
return new CardGameResponse(true, 1005, "Left from audience");
}
return response(true, 1006, "You're not online");
return new CardGameResponse(true, 1006, "You're not online");
}

public CardGameResponse connectedPlayers() {
return response(true, 1007, new ArrayList<Player>(battleField.getAudience()));
return new CardGameResponse(true, 1007, new ArrayList<Player>(battleField.getAudience()));
}

public CardGameResponse move(Player player, int position) {
if(!isEverybodyAlive()) {
return response(true, 1008, "Nobody online.");
return new CardGameResponse(true, 1008, "Nobody online.");
}
if(canMove(player) && canPutCardInGame()) {
battleField.move(position);
return response(true, 1009, "Moved with success.");
return new CardGameResponse(true, 1009, "Moved with success.");
}
return response(true, 1010, "It's not your time.");
return new CardGameResponse(true, 1010, "It's not your time.");
}

public CardGameResponse play(Player player, int answer) {
Expand All @@ -84,11 +79,11 @@ public CardGameResponse play(Player player, int answer) {
if(!isEverybodyAlive()) {
battleField.setLoster(loster());
nextBattle();
return response(true, 1011, "You win");
return new CardGameResponse(true, 1011, "You win");
}
return response(true, 1012, match);
return new CardGameResponse(true, 1012, match);
}
return response(true, 1013, "It's not your time.");
return new CardGameResponse(true, 1013, "It's not your time.");
}

private void nextBattle() {
Expand Down Expand Up @@ -135,10 +130,10 @@ public CardGameResponse gameStatus(Player requester) {
p2 = battleField.getPlayer1();
} else if(battleField.getLoster() != null &&
requester.getUsername().equals(battleField.getLoster().getUsername())) {
return response(true, 1017, "Game over");
return new CardGameResponse(true, 1017, "Game over");
}
status = new BattleFieldStatus(p1, p2, audience);
return response(true, 1014, status);
return new CardGameResponse(true, 1014, status);
}

//helper methods
Expand Down
Loading

0 comments on commit 359c698

Please sign in to comment.