CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Programmation C] Aidez moi !

Muggles
Muggles
Niveau 10
09 août 2012 à 15:07:08

Bonjour, alors je programme en C depuis quelques jours maintenant.
Je me débrouille plutôt bien, je peux faire un petit jeu deux joueurs avec un système d'attaque, soins etc. (Tout ça en invité de commandes biensur. :rire: ).
Alors voilà mon problème, comment puis-je instaurer un système de blocage?
D'habitude j'avais :
1. ATTAQUER
2. SOINS
3. POTION DE VIE (3 PDV)

Mais comment puis-je mettre une autre option qui permet de bloquer la prochaine attaque?
Quelqu'un pourrait me faire la ligne de code et m'expliquer?

(Voici mes lignes de codes sans l'option blocage : )

printf("===TOUR JOUEUR N. 1===\n");
printf("PDV Joueur 1 = %d\n", PDV);
printf("PDV Joueur 2 = %d\n", PDV2);
printf("1. Attaquer (2')\n2. Soigner (1')\n3. Boire une potion de soins (%d potions restantes) (4')\n\n", potion);
scanf("%d", &action);

switch (action)
{
case 1:
printf("Vous attaquez le joueur N. 2 !\nIl perd deux precieux points de vie !\n");
PDV2 = PDV2 - 2;
printf("Il reste %d points de vie au joueur N. 2 !\n", PDV2);
break;
case 2:
printf("Vous decidez de vous soigner !\nVous regagnez un point de vie !\n");
PDV++;
printf("Vous avez actuellement %d points de vie !\n", PDV);
break;
case 3:
printf("Vous decidez de boire une precieuse potion de soins !\n");
potion--;
PDV = PDV + 4;
printf("Vous regagnez 4 points de vie, vous avez actuellement %d points de vie.\n", PDV);
printf("Il ne vous reste plus que %d potions !\n", potion);
break;
default:
printf("Action non reconnue.\n");
break;

Merci d'avance ! :)

harudu77
harudu77
Niveau 5
09 août 2012 à 15:33:39

Je comprend pas bien le problème, tu rajoutes une option et un case 4: et le problème est réglé non ?

Twilo
Twilo
Niveau 7
09 août 2012 à 15:40:05

Je ne suis pas sûr que ce soit la meilleure façon de le faire mais je pense que ça devrait marcher comme ça :

- Tu rajoutes une variable (par exemple 'int bloquer') égale à 1 ou 0 (vrai ou faux).
- Tu rajoutes un case 4 pour bloquer où la variable 'bloquer' prends la valeur 1.
- Et du coup tu fais une vérification avant que l'autre joueur attaque :
if (bloquer)
{
printf("Le joueur 1 bloque le coup");
bloquer = 0; // On réinitialise 'bloquer' pour un prochain tour
}
else
{
//Là tu mets ce qui te permet de faire perdre de la vie à ton joueur, comme tu veux/
}

Voilà mon idée, j'espère avoir été assez clair :)

Muggles
Muggles
Niveau 10
09 août 2012 à 15:49:57

Dans ma case 1 j'ai :
case 1:
if (block1)
{
printf("The ennemi has blocked your attack !\n\n");
break;
block1 = 0;

}
else
{

printf("You decide to attack, player n.1 loses 2 HP.\n\n");
PDV1 = PDV1 - 2;
printf("Player 1 has %d HP left.\n", PDV1);
break;

Pourquoi utiliser une case 4 si j'ai le blocage et l'inverse dans celle-ci?
Et pourriez vous me donner un exemple? :)

Twilo
Twilo
Niveau 7
09 août 2012 à 16:44:13

Je ne suis pas sûr de comprendre ce que tu voudrais, une sorte de blocage aléatoire ?

tbop2
tbop2
Niveau 10
09 août 2012 à 20:06:11

"Quelqu'un pourrait me faire la ligne de code et m'expliquer? "

Toi tu viens du sdz où je ne m'y connais pas....

Non on ne va pas te faire ton code à ta place, c'est à toi de coder sinon c'est strictement inutile et c'est du recopiage bête et méchant.

Il faudrait que tu postes ton code entier sur pastebin en fait pour être sûr de ce que tu veux faire.
Dans ton problème tu sembles vouloir retenir l'action précédemment effectuée par le joueur opposant au tour n-1. Il y a pas mal de façons de faire ça mais à ton niveau vraisemblablement rien de très joli et élégant. Dans le doute je te conseille de créer un tableau qui stocke l'état de tous les joueurs courant. Ce tableau pourrait stocker par exemple un enum custom que tu auras créé - genre CharacterState - après coup tu dois juste mettre à jour dans ton switch ce tableau en fonction du joueur courant et de son état correspondant.

Et c'est à TOI de le faire, et d'aller chercher un peu les informations tout seul sur Google avant toute chose aussi. La programmation nécessite énormément d'indépendance et pour cela il faut savoir rechercher une information de manière effective. :ok:

chris_27
chris_27
Niveau 10
09 août 2012 à 20:09:59

« Dans le doute je te conseille de créer un tableau qui stocke l'état de tous les joueurs courant. » :d) +1000 pour le tableau. C'est peut-être la structure de donnée la plus simple qui soit, mais c'est surtout l'une des plus utile en pratique ! :oui:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment