rauks / brutes Goto Github PK
View Code? Open in Web Editor NEWTP "Brutes" - Réseau (Client - Groupe 8)
TP "Brutes" - Réseau (Client - Groupe 8)
Empêcher qu'un joueur puisse jouer contre lui même
FightEntity::findById
PreparedStatement psql = DatasManager.prepare("SELECT * FROM fights WHERE (brute_id1 = ? OR brute_id2 = ?) AND winner_id IS NULL");
Il existe déjà une class dans Lang.* Character prise par défaut dans l'IDE.
Il faut a chaque fois spécifier le chemin brutes.gama.Character
Il serait envisageable de refactor en Brute
Chaque combat nous donne une chance de gagner un bonus et/ou de l'upgrader
Afficher les caractéristiques totale du Character
ex 👍
Nom : Name
Niveau : 2
Vie : 65 (+10)
Force : 5 (+2)
Vitesse : 5 (+0)
Après déconnexion, la brute ne réapparait pas malgré le fait qu'il ait bien les infos (renommer, déco, combats effectifs)
@test Raussin Clément
Bug apparu une fois avec le compte de Bruno.
Lors de la déconnexion, l'application cliente remet par défaut le serveur "localhost".
Il pourrait être agréable que l'application cliente se souvienne du serveur indiqué pour la session :)
Signaler ou au moins aider à la création de la première brute.
Flèche qui pointe vers le menu si aucune brute n'est associée au compte ?
Textes ?
Découper la gestion des findBy dans des objets divers afin de gagner en lisibilité et ergonomie du code
Afin de répartir équitablement le gain d'un bonus, nous devons spécifier plusieurs choses :
Aller op op op !
Gérer l'envoie et l'utilisation d'images pour les Characters & Bonus
Branche dev, au démarrage :
janv. 28, 2013 1:18:47 PM brutes.server.ServerThread$1 run SEVERE: null java.sql.SQLException: no such column: 'image_id' at org.sqlite.RS.findColumn(RS.java:121) at org.sqlite.RS.getInt(RS.java:293) at brutes.server.db.entity.UserEntity.create(UserEntity.java:20) at brutes.server.db.entity.UserEntity.findById(UserEntity.java:38) at brutes.server.db.entity.UserEntity.findOneById(UserEntity.java:44) at brutes.server.db.entity.UserEntity.updateToken(UserEntity.java:82) at brutes.server.net.NetworkLocalTestServer.readLogin(NetworkLocalTestServer.java:316) at brutes.server.net.NetworkLocalTestServer.read(NetworkLocalTestServer.java:98) at brutes.server.ServerThread$1.run(ServerThread.java:46)
Lors des construction des réponses aux demmandes de donnés de Character ou de Bonus aucun identifiant n'est lu. Le message n'est pas lu entièrement et les messages suivants plantent côté serveur.
Dans les requêtes SQL, parfois on a un nom en majuscule ou non.
Sur certains serveurs, ou par exemple avec MySQL, les machines sont sensibles à la case ...
Il faut donc se fixer une norme. Par défaut j'ai adopté celle de java : CamelCase
Modifier le DataManager pour voir un save(User)
, save(Bonus)
, save(Character)
, ...
Améliorer le rendu lorsque le compte n'a pas de brute, afficher un message disant que aucune brute n'est la et qu'il faut en créer une.
Mettre les erreurs a proximité des champs textuels au lieu de a côté du bouton de connexion.
Afficher les erreurs suivant le champ erroné.
Il faut appeler la méthode readGetChallengerBruteId
avant chaque combat.
Afin de respecter les tests, nous devons pouvoir exécuter une suite de combat.
Utiliser les beans de javafx (*Wrapper, *Property)
Le champ est prerempli avec l'ancien nom mais impossible de le modifier.
Encore plus de bonus !
Simplifier le travail de contrôle en cas de donnée Entity nulle
Ajouter un indicateur de chargement pendant les combats avant de recevoir la réponse pour montrer que une communication avec le serveur est en cours.
Afficher d'une manière ou d'une autre (hover tooltip/layer ?) les caractéristiques des Bonus
Nettoyer le code en gérant les Exception -> *Exception
Chaque combat gagnant ou perdant nous fait gagner de l'expérience et/ou du level
Gérer les inscriptions de nouveaux utilisateurs (CRUD)
Afficher si le combat est gagné ou perdu après un combat et non simplement que le combat est terminé.
Retirer les clonages de bonus et le brute_id. Faire une table d'appartenance des bonus aux brutes.
Retirer les bots dont l'user_id est 4, en cas de victoire de l'adversaire, le faire lvl up (Le gagnant lvl up à chaque fois, que se soit sa brute ou le challenger).
Retirer la pioche par tranche (Les pioches de sont plus assez aléatoires, voir plus du tout avec :/)
Les méthodes setWinner & getWinner de Fight ne devrais plus être utilisée.
A remplacer par 4 méthodes pour les 4 types de combats (les 3 cheats et le regular) qui détermine le gagnant et le renvoie.
Dans la situation où l'on ne pourrait pas utiliser une souris, pourquoi pas ajouter une navigation par clavier, voire des raccourcis ?
Par exemple "C" pour lancer un combat loyal...
Mettre en place les différents éléments de la BDD dans le code :
ObjectEntity
avec leurs propres save()
, update()
et insert()
et find*()
brute.id = shop.brute_id AND shop.bonus_id = bonus.id
Ajouter des messages d'erreurs en cas de :
Au niveau 100, seul les bonus doivent encore changer.
Le niveau est bien bloqué à 100, mais les stats montent encore.
Définir une trame de combat pour désigner un gagnant équitable
Ne pas oublier de prendre en compte les bonus
Retravailler l'architecture de la BDD
Le compte n'a pas de brute et doit en créer une avant de jouer. Problème dès la connexion :
Une erreur CHARACTER_NOT_FOUND
devrait être reçue, à la place on a un crash serveur :
`INFO: SEND{4d}
janv. 30, 2013 1:51:57 PM brutes.client.user.Session$1 run
SEVERE: null
brutes.client.net.InvalidResponseException: Erreur du serveur
at brutes.client.net.NetworkClient.sendGetBruteId(NetworkClient.java:120)
at brutes.client.net.NetworkClient.sendGetMyBruteId(NetworkClient.java:124)
at brutes.client.user.Session$1.run(Session.java:53)
janv. 30, 2013 1:51:57 PM brutes.client.user.Session$2 run
SEVERE: null
brutes.client.net.InvalidResponseException: Erreur du serveur
at brutes.client.net.NetworkClient.sendGetBruteId(NetworkClient.java:120)
at brutes.client.net.NetworkClient.sendGetChallengerBruteId(NetworkClient.java:127)
at brutes.client.user.Session$2.run(Session.java:82)`
Quelque soit l'erreur rencontrée au moment du login, une erreur "bad login s'affiche"
Prévoir un affichage dynamique avec les cas "host not found", "unknow login" et "wrong password"
Empêcher une boucle infinie de rounds
An cas de coupure de serveur ou de non réponse à un combat, une fenêtre "Combat terminé" est quand même affichée après le timeout.
Aucune fenêtre ne devrait apparaitre mais la possibilité de faire un combat doit toujours être rendue.
En cas de stats négatives, le texte vert qui donne les stats apportées par les bonus reste vert et l'interface affiche +-
Il faudrait que les stats soient en rouges si négatives et corriger la gestion du +/-
Actuellement non implémenté.
Il faut pouvoir faire une demande d'image au serveur et réceptionner l'image pour la stoker dans un cache.
SI l'image est déja en cache, pas besoin de la charger
Lorsque l'on fait un combat à la loyal, deux combats sont effectués.
Voir ce commit : 286b96f
Ce est dû au fait que l'on appelait les fonctions WIn et Lose qui procédaient elles même à un combat ...
A quoi ça sert et qu'est ce que ça fait la ? x)
C'est pour la gestion serveur/case de données ?
Utiliser une base de donnée pour stocker toutes les données.
(Prévoir si possible un accès distant)
Il faut ajouter une largeur maximale aux champs de textes affichés dans les vues de personnages !
Il semble que le random de java ne soit pas totalement équilibré
Math.random(0,2)
0 = [0 : .5]
1 = [.5 : 1.5]
2 = [.5 : 2]
Utiliser une interface Entity
avec public int getId();
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.