Les meilleurs développeurs C++ freelances sont sur Codeur.com

Petit Projet en C

 Fermé·30 à 300 €·2 offres·635 vues·2 interactions


Etant en retard monumetalement pour mes cours je recherche une personne capable de me coder ce petit exercice en C , il doit y en avoir 2 heure pour une expert.

1 Spécifications
Le but de ce projet est d’implémenter un programme qui joue automatiquement
au jeu Territory. «Automatiquement» signifie que l’utilisateur n’a aucune
interaction avec le programme, le programme doit jouer seul, avec les informations
dont il dispose.

1.1 Règles du jeu
Le jeu se déroule sur un plateau en deux dimensions de taille arbitraire w×h
où w est la largeur du plateau (width) et h est la hauteur du plateau (height).
Les coordonnées sont numérotées à partir de 0. Le coin en haut à gauche du
plateau a pour coordonnées (0, 0) et le coin en bas à droite a pour coordonnées
(w − 1, h − 1). La figure 1 montre le plateau initial.
Le jeu se joue à deux joueurs, l’un contre l’autre. Le but du jeu est de
contrôler le plus grand territoire sur le plateau. Un territoire est contrôlé quand
le joueur adverse ne peut plus l’atteindre. À chaque tour de jeu, chaque joueur
peut poser un mur sur le plateau, en contact avec un des murs précédemment
posés par le joueur. Au cours du jeu, chaque joueur ne sait pas ce que fait l’autre
joueur. La figure 2 montre un état du jeu avec deux territoires.
Au début du jeu, chaque joueur reçoit sa position initiale sur laquelle est posée
son premier mur. Ensuite, à chaque tour, il doit indiquer comment agrandir
son mur en envoyant les coordonnées du nouveau mur. Plusieurs réponses sont
possibles : le mur est posé ; un mur adverse est déjà posée (aucun mur n’est
posé) ; un rocher est présent (aucun mur n’est posé) ; c’est la fin du jeu ; une
erreur est survenue. À son tour, un joueur peut aussi indiquer qu’il passe son
tour et donc ne pose aucun mur. Si les deux joueurs passent leur tour, la partie
est terminée.

Figure 1 – Le plateau de jeu de taille w × h

Si le joueur ne respecte pas les règles du jeu, il est immédiatement déclaré
perdant.

1.2 Protocole

Votre programme échange les données avec le serveur via son entrée et sa
sortie standard, sous forme textuelle, ligne par ligne.

1. Au début du jeu :

(a) Le serveur envoie la largeur w du plateau
(b) Le serveur envoie la hauteur h du plateau
(c) Le serveur envoie l’abscisse initiale x du joueur (x ∈ [0, w − 1])
(d) Le serveur envoie l’ordonnée initiale y du joueur (y ∈ [0, h − 1])

2. Puis à chaque tour de jeu :

(a) Le joueur envoie la chaîne WALL ou PASS. Si la chaîne envoyée est
WALL, le joueur envoie les coordonnées (x, y) du mur à poser séparées
par un espace, sur une seule ligne.
(b) Le serveur envoie la réponse au joueur parmi WALL (si le mur a été
posé), ENEMY (si un mur adverse était déjà présent), ROCK (si un rocher
était déjà présent), PASS (si le joueur a passé), FINISH (si c’est la fin
de la partie) ou ERROR (si une erreur a eu lieu).
Le squelette suivant est un exemple d’interaction avec le serveur.

#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 256
int main() {
char buf[BUFSIZE];
// get the width
fgets(buf, BUFSIZE, stdin);
int width = atoi(buf);
// get the height
fgets(buf, BUFSIZE, stdin);
int height = atoi(buf);
// get the initial x
fgets(buf, BUFSIZE, stdin);
int x = atoi(buf);
// get the initial y
fgets(buf, BUFSIZE, stdin);
int y = atoi(buf);
// initialize the state of the game
3
for (;;) {
// play
// choose a new x and y
puts("WALL"); // or "PASS"
printf("%i %i\n", x, y);
// get the response: WALL, ENEMY, ROCK, PASS, FINISH or ERROR
fgets(buf, BUFSIZE, stdin);
// update the state of the game
}
return 0;
}

2 Implémentation

Vous êtes totalement libre pour l’implémentation du programme (choix des
structures, choix des fonctions, etc). Cependant, voici quelques conseils qui
peuvent vous être utiles.
Vous aurez besoin d’un tableau à deux dimensions dont vous ne connaissez
pas les dimensions à la compilation. La meilleure façon de faire dans ce cas là
est d’utiliser un tableau à une dimension de taille w ∗ h et de faire comme si
toutes les lignes du tableau à deux dimensions avaient été mises bout à bout.
Pour des coordonnées (x, y), l’indice du tableau à une dimension correspondant
est alors : x + y ∗ w.
Concernant la stratégie, votre programme doit savoir jouer, ce qui signifie
qu’il doit a minima respecter les règles. Il doit donc être capable de fournir un
coup à chaque tour. Les programmes qui ne font que passer ne sont pas considérés
comme fonctionnels. Vous devrez donc être capable de calculer l’ensemble
des cases sur lesquelles vous pouvez poser un mur et choisir parmi cet ensemble
la case qui vous semble la plus adéquate relativement à votre stratégie.
À partir d’un joueur simple qui sait poser des murs au hasard, vous pouvez
élaborer des stratégies plus complexes en fonction des informations que vous
découvrirez au cours du jeu (emplacement des rochers, emplacement de l’adversaire,
etc).

Je possède egalement le serveur qui envoi les reponses .

J'ai 2 jours pour finir ce projet donc si interessé , se manifester rapidement !

Budget indicatif : 30 à 300 €

Publication : 18 mai 2016 à 10h11

Profils recherchés : Développeur C++ freelance

Le profil du client est reservé aux prestataires abonnés

Créer un compte

2 freelances ont répondu à ce projet

2 propositions de devis en moins de 2h

Publier un projet similaire

Chaque jour, des centaines de clients utilisent Codeur.com pour trouver un prestataire. Créez votre compte dès maintenant, remplissez votre profil et trouvez de nouveaux clients.

Trouver des nouveaux clients

Votre navigateur Web n’est plus à jour. Il ne permet pas d’afficher correctement le site Codeur.com.
Nous vous invitons à mettre à jour votre navigateur ou à utiliser un autre navigateur plus récent.