Voilà j'ai fait un petit programme en console (en C) pour m'entrainer :
int main(int argc, char *argv[])
{
int choixattaque = 0, niveau = 0, hasard = 0, pvsauvage = 80, pv = 80;
char nom[50] = "", nompokemon[50] = "";
printf("Quel est votre nom ?\n");
scanf("%s", &nom);
printf("Bonjour %s ! Le but de ce jeu est de faire monter son pokemon au niveau 10 !\n Choisissez-lui un prenom :\n", nom);
scanf("%s", &nompokemon);
printf("Vous vous appelez donc %s et votre pokemon %s !\n Il est pour l'instant au niveau 0.\n Le jeu commence !\n", nom, nompokemon);
while(niveau != 10)
{
printf("Entrez un chiffre entre 1 et 4 :\n");
scanf("%d", &hasard);
switch(hasard)
{
case 1:
printf("Un Yalomcombi sauvage vous attaque !\n");
break;
case 2:
printf("Un Baroula sauvage vous attaque !\n");
break;
case 3:
printf("Un Lomatok sauvage vous attaque !\n");
break;
case 4:
printf("Un Xomatalo sauvage vous attaque !\n");
break;
default:
printf("FATALE ERREUR\n");
exit(EXIT_SUCCESS);
break;
}
while(pvsauvage != 0 || pvsauvage > 0 && pv != 0 || pv > 0)
{
printf("Choisissez une attaque :\n\n 1.Charge 2.Rugissement\n Inflige 30 degats Inflige 40 degats tout en vous en enlevant 20\n\n");
scanf("%d", &choixattaque);
switch(choixattaque)
{
case 1:
pvsauvage -= 30;
printf("Le pokemon sauvage a maintenant %d PV !\n", pvsauvage);
break;
case 2:
pvsauvage -= 40;
pv -= 20;
printf("Le pokemon sauvage a maintenant %d PV !\n\n %s en perd 20 et en a donc %d !\n", pvsauvage, nompokemon, pv);
break;
default:
printf("FATALE ERREUR\n");
exit(EXIT_SUCCESS);
break;
}
if(pvsauvage == 0 || pvsauvage < 0)
{
printf("Bravo %s !\n Vous avez mis KO le pokemon sauvage !\n%s gagne un niveau !\n\n\n", nom, nompokemon);
niveau ++;
pv = 80, pvsauvage = 80, hasard = 0;
}
pv -= 30;
printf("Le pokemon sauvage vous attaque !\n Il utilise charge ! %s perd 30 PV ! Il en a maintenant %d !\n\n", nompokemon, pv);
if(pv == 0 || pv < 0)
{
printf("GAME OVER !!!");
exit(EXIT_SUCCESS);
}
if(niveau == 10)
{
printf("Bravo %s !\nVous avez fini le jeu !!!\n", nom);
exit(EXIT_SUCCESS);
}
}
}
return 0;
}
Le problème c'est que quand le pokemon sauvage est KO je remet les vies à 80 pour qu'un autre combat commence mais justement la boucle redevient vraie car les PV sont à 80, donc un autre combat ne commence pas.
Comment faire pour contourner le problème ? ![]()
Il faut que tu reinitialise ces variables APRES la boucle d'un combat. un truc du genre:
while (niveau != 10) {
//choix de l'adversaire
//combat a proprement parler
while (pv > 0 && pv_adversaire>0) {
}
//reinitialise varaible de combat.
}
Pas de rapport, mais tu peux aussi te renseigner sur la fonction rand() qui te donne un nombre aléatoire entre 0 et 1.
Ca te permettra de faire un choix vraiment aléatoire de l'adversaire, et de faire des attaques qui ne renvoient pas toujours le même résultat
Par exemple au lieu d'enlever "40", tu peux enlever "(int) 30 + 20*rand()" qui fera un entier entre 30 et 50.
Salut
J'ai chipoté un peu dans ton code, j'ai amélioré certaines choses, j'ai résolu ton problème et j'ai enlevé tous tes warnings.
Je n'ai cependant pas vraiment changé ta structure logique pour que tu puisses t'y retrouver.
http://pastebin.com/AFTXD8X1
Compile, joue, et ensuite analyse-le pour voir ce qu'il y a de différents ![]()
Désolée du double poste, mais des j'ai des suggestions à te proposer. Tu pourrais :
---
- Indiquer à quel niveau se trouve le pokémon du joueur à la fin d'un combat
- Utiliser la fonction de nombre pseudo-aléatoires citée ci dessus au lieu de laisser le choix au joueur
- Demander au joueur si il veut recommencer une partie quand le jeu se fini, c'est à dire soit si tu gagnes, soit si tu perds
- Indiquer à la fin d'un combat combien de tours ont été nécessaire pour tuer le pokémon
- Indiquer si le joueur a gagné combien de tours ont été effectués au total
- Faire attendre le programme quand tu effectues une action (pour que ça soit plus joli)
---
Plus tard quand tu auras vu les pointeurs :
---
- Créer un fichier qui contiendra le nom de tous tes pokémons. Effectuer un seul printf pour dire quel pokémon t'attaque.
---
Voilà, on pourrait encore trouver pleins de trucs de ce genre ![]()
Coucou ![]()
Même si ça ne va servir à rien je me suis amusée à refaire ton code C# en Java!
http://pastebin.com/UxVNmGex
C'est comme ça que je fait passer le temps quand je m'ennuie
Sinon tu en as de la chance @lebosspokemon, @VampireGirl t'a donner de beau petit exercices moi je sauterais sur l'occasion de les faire ![]()
Pour un passionné de Programmation c'est toujours amusant de ce faire des petits exercices comme ceux là
Bref, bye bye Mrs lebosspokemon et Mlle VampireGirl ^,...,^
N’empêche pensez à faire attention à la convention de nommage,
il y en à une en Java et je suppose qu'en C# aussi, et je pense qu'il faut quand une variable est composé de plusieurs mot écrire les premières lettres des autres mot en majuscule :
Exemple:
"pvsauvage"
"pvSauvage"
"nompokemon"
"nomPokemon"
"petitevoiturerouge"
"petiteVoitureRouge"
Bon j'y vais cette fois
Il se fait tard ![]()
dxtreme01, c'est clair, je n'ai rien changé à ce niveau pour ne pas qu'il s'embrouille
Mais en effet pour la clarté du code il vaudrait mieux que tu adoptes des conventions l'auteur. Par exemple :
pv_sauvage ou pvSauvage
Pas mal sinon en java
Je n'en ai jamais fait mais c'est vrai que sa syntaxe ressemble fort au C.
@VampireGirl Oui justement
quand j'ai lut le code de @lebosspokemon ça m'a rappeler quand je commencais à programmer au tout début en console (Que de bon souvennir
) Et c'est ce qui m'a donner en plus d'avoir du temp libre envie de refaire son code en Java ![]()
Oui je comprends ![]()
Moi ça me donne envie de faire un jeu en console.
J'ai un ami qui a beaucoup d'idées en plus (choses qui me manque).
Juste une remarque au passage pour le code Java : le exit(1) signifie une sortie d'erreur, ce qui n'a pas l'air d'être le cas ![]()
@VampireGirl Pourtant tu en à lister pas mal dans ton commentaire plus haut! ![]()
https://www.jeuxvideo.com/forums/1-47-95617-1-0-1-0-c-aide.htm#message_95657
J'ai du mal à croire que tu manque d'idée facilement toi. ![]()
Mais c'est vrais que c'est toujours mieux de coder à partir d'une idée déjà toute prête, de ne pas coder au fur et à mesures quoi
@Dark_drow Merci pour l'info
Personnellement j'utilise jamais les System.exit() on m'a dit que c'était trop "brutale" et donc la plus part du temps je m'arrange avec des procéder en cas d’erreurs ![]()
Peut-être que j'utiliserais plus souvent les exit() maintenant qui sait ![]()
Ça pourrais rendre mes code plus léger ![]()
Dark_drow, je crois savoir pourquoi il a fait cette erreur, ça vient du code original de l'auteur. La sortie en cas d'erreur était mise sur "EXIT_SUCCESS". Je me trompe peut être m'enfin
dxtreme01, c'est surtout les idées d'histoire, de contexte qui me manque ![]()
Merci pour tout, et si j'ai appris les pointeurs et je suis en train d'apprendre à se servir de la SDL mais j'avais envie de refaire un petit programme console ![]()
Ah oui et comment faire attendre le programme ? En faisant un :
for(repeteur = 0 ; repeteur ‹ 99999999999999999999999999999999999999999999999999
99999999
; repeteur ++);
![]()
Il y a pleins de façon de faire, j'imagine que certaines sont à éviter car trop de calculs demandés au processeur.
Tu pourrais utiliser la fonction delay par exemple.
Si tu as déjà vu les pointeurs, j'imagine que tu as déjà vu les structures alors.
Ca serait cool pour la clarté de ton code de créer une structure "entité" qui contiendrait le nom, la vie et le niveau de l'entité par exemple.
Il existe apparemment la fonction sleep() mais elle est valable pour les environnements qui respectent la norme POSIX.
Ouais c'est vrai pour les structures, mais bon...
+ Je n'ai appris ni sleep() ni delay() (mais que je vais apprendre bientôt)
Est-ce que tu pourrais m'expliquer leur fonctionnement s'il-te-plaît ? ![]()
Ah je te raconte n'importe quoi
La fonction existe bien mais n'est pas intégrée au langage en tant que tel. Sinon elle est simple d'utilisation. Il suffit de lui indiquer en milliseconde l'attente désirée.
Je vais te cherche autre chose.