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

Tentative de création de jeu sous C++

MathieuN7
MathieuN7
Niveau 10
17 décembre 2003 à 11:35:21

Salut!
J´ai besoin d´infos paske je voudrais créer un petit jeu en C++; je ne connais strictement rien à opengl et autres, je ne maitrise pas les classes, je ne connais que les variables les fonctions et un peu les tableaux...
Et je voudrais créer un jeu entièrement sous forme de txt ( je peux pas faire autrement)...
Pour cela je voudrais proposer au joueur de jouer contre un auter joueur ou contre l´ordinateur...

Questions:

  • Comment créer une sorte d´intelligence artificielle mais très très basique?
  • Comment attribuer une valeur aléatoire à une variable, mais la valeur étant comprise entre 0 et 10 par exemple,
  • Comment faire une fonction sans nommer de variable, par exemple faire une fonction qui comparera les points de vie, ou des point d´attaque, mais en reprenant automatiquement la dernière valeur utilisée, ou je sais pas comment ça marche, il y a pa un trus avec les %?

Voilà je ss au bahut dc ce sont les seules questions qui me viennent à lesprit dès ke je rentre chez moi j´en retrouve et je vous les pose...

Merci beaucoup à ceux qui répondront à ce sujet parce que le pti jeu me tient à coeur ( j´aimerais le développer au fur et à mesure de mes capacités et finir avec un jeu graphique, je le développerais donc pendant longtemps!)

@ ++, Morpheus

Vive le C++ c´est passionnant et aux possibilités infinies...

fantometteninja
fantometteninja
Niveau 6
17 décembre 2003 à 12:38:12

Salut!

1/ Le domaine de l´intelligence artificielle est assez vaste! et il n´y a pas de solutions miracles ni universelles.
Il faudrait donc que tu précises un peu plus les differentes fonctions que devra remplir celle de ton jeu ( par exemple si c´est un jeu du genre morpion, dames, etc... tu peux aller voir du coté du min-max et de ses optimisations ( il m´a semblé voir trainer de la doc sur www.alrj.org)).
Mais je te conseil d´attendre un peu de maitriser le langage et les differentes structures de données avant de t´y attaquer.

2/ man rand:

RAND(3) Manuel du programmeur Linux RAND(3)

NOM
rand, srand - Générateur de nombres aléatoires.

SYNOPSIS
#include < stdlib.h>

int rand ( void);

void srand ( unsigned int seed);

DESCRIPTION
La fonction rand() renvoie un entier pseudo-aléatoire entre 0 et
RAND_MAX.

La fonction srand() utilise son argument comme " graine" pour la
génération d´une nouvelle séquence de nombres pseudo-aléatoires, qui
seront fournis par rand(). Ces séquences sont reproductibles en
appelant srand() avec la même valeur de graine.

Si aucune graine originale n´est fournie, la fonction rand() commence
en utilisant la valeur 1.

VALEUR RENVOYÉE
La fonction rand() renvoie un nombre entier entre 0 et RAND_MAX. La
fonction srand() ne renvoie aucune valeur.

NOTES
Les versions de rand() et srand() de la bibliothèque C de Linux
utilisent le même générateur de nombres aléatoires que random() et
srandom(), ainsi les bits de poids faibles sont tout aussi imprévisi-
bles que les bits de poids forts. Ceci n´est pas le cas avec les anci-
ennes implémentations de rand(), où les bits de poids faibles n´étaient
pas " aussi aléatoires" que ceux de poids forts.

Dans Numerical Recipes in C: The Art of Scientific Computing ( William
H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling;
New York: Cambridge University Press, 1990 ( 1st ed, p. 207)), le com-
mentaire suivant apparaît :
" Si vous désirez engendrer un entier aléatoire entre 1 et 10,
vous devez toujours procéder en utilisant les bits de poids
forts, comme dans :

j=1+(int) ( 10.0*rand()/(RAND_MAX+1.0));

et jamais ainsi :

j=1+(rand() % 10);

( car cette derniere version utilise les bits de poids faibles)."

La génération de nombres aléatoires est un domaine complexe. Le livre
Numerical Recipes in C ( référence ci-dessus) fournit une excellente
présentation pratique d´un générateur aléatoire dans le chapitre 1
( Random Numbers).

Pour une discussion plus théorique, qui aborde également en profondeur
d´autres domaines, voir le chapitre 3 ( Random Numbers) du livre de Don-
ald E. Knuth The Art of Computer Programming, volume 2 ( Seminumerical
Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing
Company, 1981.

[NDT] : Les 3 volumes de " Art of Computer Programming" n´existent pas
en version française à ma connaissance. C´est néanmoins un ouvrage que
je recommande fortement, même si la lecture en version anglaise le rend
un peu aride...

Je ne sais pas si " Numerical Recipes in C" est disponible en traduction
francaise.

CONFORMITÉ
SVID 3, BSD 4.3, ISO 9899

VOIR AUSSI
random(3), srandom(3), initstate(3), setstate(3)

TRADUCTION
Christophe Blaess, 1997.

GNU 5 Novembre 1996 RAND(3)

comme graine pour srand(), tu peux utiliser la fonction time() dans l´en-tete time.h

3/ je ne suis pas sur d´avoir tout compris

désolé si je me suis trompé mais je suis a la bourre...

JeanYvesYves
JeanYvesYves
Niveau 10
17 décembre 2003 à 13:13:39

pour completer la réponse de fantomeninja :

l´IA est tres vaste en effet
cependant, dans ton cas, je t´imagine des cas simples :

tu veux faire un ennemi qui essaie de te suivre.
Sa position a tout moment est Ex, Ey
Ta position a toi est Px, Py

Un jeu est une boucle, a chaque itération ( = chaque fois qu´on parcours une fois la boucle), tu vas faire calculer la nouvelle image :

tu mets :

if ( Cx<Px) Cx++; // augmente Cx de 1
if ( Cx>Px) Cx--;
if ( Cy<Py) Cy++;
if ( Cy>Py) Cy--

crois moi qu´avec ça, l´ennemi te suit ! !

bref, a toi apres de réfléchir a cela :)
Si tu veux faire des choix, c´est a dire que tu veux décider que l´ennemi va faire un truc ou l´autre, utilise rand()

2/ justement voila le rand
pour résumer :

si tu veux que ta variable a devienne un nombre entre 0 et 9 :

a = rand()%10;

entre 0 et 15 :

a = rand()%16

généralement : entre 0 et N :

a = rand()%(N+1)

si tu veux entre 1 et 10, c´est ( 0 - 9 ) +1 :

a = rand()%(10) +1;

voila :)

c´est une maniere qui marche meme si y´a des manieres meilleures :)
n´oublie pas de mettre :

srand(time(NULL));

au début du programme.

3/ il faut toujours nommer une variable :
tu as une variable " vie" qui va contenir la vie du joueur.

si jamais ton joueur se fait toucher :

vie = vie - bobo; // bobo : ça fait mal :)

et pour tester :

if ( vie<0) meurt(); // a toi de dire comment mourir.

La vie pour chaque monstre ? Un tableau :)
tu as 10 monstres ?

int viemonstre[10];

pour savoir si le monstre 3 est mort, tu regardes la valeur de viemonstre[3]

pour lui enlever de la vie, tu fais viemonstre[3]=viemonstre[3]-bobo;

voila !

MathieuN7
MathieuN7
Niveau 10
17 décembre 2003 à 16:07:15

Merci pour vos explications!
Mais je ne comprends pas trop la fonction rand: qu´est-ce qu´il faut faire en fait??
quel fichier faut-il inclure?
et pour ma troisieme question, ke j´ai certainement mal posée, je la reformule:
si je fais une fonction mais qui peut marcher avec nimporte kelle variable je fais comment?
ex:
au lieu de mettre
cout < < " Vous avez" < < viemonstre1 < < " points de vie";
ça cé une fonction simplifiée je vais pas retaper une fonction!
on peu pa mettre:
cout < < " vous avez" < < la variable donnee precedamment < < " points de vie";

faire une fonction générique, enfin jarriv po à expliker :(

merci de vos réponses @ ++

DasHuhn
DasHuhn
Niveau 10
17 décembre 2003 à 18:17:29

Euh moi je comprends rien à ta dernière question, et juge que les autres ont déjà trouvé réponse.

N´oublie jamais que ton jeu, en tout cas, devra être bourré de fonctions s´appelant mutuellement, formant ainsi une boucle de laquelle on sort pour mourir, quitter, ou gagner.

JeanYvesYves
JeanYvesYves
Niveau 10
17 décembre 2003 à 18:41:26

pour rand() : ça te choisis un nombre au hasard ! ça lance un dé si tu préferes !
fait inclure stdlib.h
( et time.h pour le srand(time(NULL)) )

pour ton autre question
Je vois ce que tu veux dire, mais comme je te disais :

met les vies de TOUT le monde dans un tableau !

et par exemple, tu fais une fonction :

void affichevie(int numero_monstre)
{
cout < < " vie monstre :" < < vie[numero_monstre] < < " endl"
}

comme ça, tu fais afficher la vie du monstre que tu veux en donnant juste son numéro.

tu veux mémoriser le dernier appelé ?
tu fais un

int derniermonstre;

et tu appelles

affichevie(dernieremonstre);

puis apres, si tu veux changer de monstre, tu mets derniermonstre = 3;

si ça ne va toujours pas comme explication, dis nous précisément ce que tu veux faire

MathieuN7
MathieuN7
Niveau 10
17 décembre 2003 à 19:32:59

LOOOOL je suis désolé j´arrive pas à dire ce que je veux!!!!

je vais commencer mon jeu et dès ke je suis confronté au pb je vous redemande concrètement...
désolé et merci encore!!!

et pour rand, tu pourrais faire un MOD demploi??? paske là je suis tro con en ce moment je pige ke dall

Morpheus

MathieuN7
MathieuN7
Niveau 10
17 décembre 2003 à 19:35:38

ah nan ayé g compri le rand
et pr mon autre kestion: quelle utilité peut avoir le %?(dites moi tout)

Morpheus

Kelios
Kelios
Niveau 8
19 décembre 2003 à 21:56:41

Le % est le modulo, le reste de la division euclidienne. C´est très efficace pour écrire des algorithmes, par exemple.
Imaginons que tu veuilles remplir un tableau de x éléments par des valeurs par groupe de 5. Ex:
1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5

Mais il se trouve que des fois, le tableau ne tombe pas juste dans des multiples de 5, par exemple 17. En trouvant 17/5, ça donne 3 fois, reste 2, donc il y a deux parties du tableau qui ne pourront être rempli. Pour trouver ce nombre, nous n´avons qu´a faire 17%5, et nous saurons combien de cases il n´y aura rien, à la fin du tableau par exemple. Tu vois?

Kelios
---------

MathieuN7
MathieuN7
Niveau 10
19 décembre 2003 à 22:13:04

ok ok oué merci je vois à peu près!

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