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

J´aide les personne en C/C++

cobradu94
cobradu94
Niveau 6
18 février 2005 à 16:51:12

J´avais vu une fois sur un site il expliquer l´algorithme d´une ai d´un jeu de pong, il expliquer qu´il faut donner un facteur ou l´ordinateur arrete de suivre la balle pendant quelque secondes, j´essaye de trouver le site et jte lenvoi ( par contre c´est pas sure que jle trouve le site jlavais trouver sur google mais jmen souvien plus avec quel mot clef)

cobradu94
cobradu94
Niveau 6
18 février 2005 à 17:08:29

Ce que je veut est ecris dedans http://www.allegro.cc/manmanual/view_category.php?_id=5 mais ayant des lacune en anglais quelqune pourais m´aider svp

cobradu94
cobradu94
Niveau 6
18 février 2005 à 17:37:48

J´ai trouver un truc qui peut tinterresser jejej,
http://www.ifrance.com/arthurbro/devcpp.html
tu clique sur pong dans le menu jeu et ensuite sur comment programmer le jeu ( le jeu et fait sous allegro mais sa doit pas etre trop difficile d´adapter) et a la fin il texplique une partit pour faire une ia non parfaite

supra_boulet
supra_boulet
Niveau 5
18 février 2005 à 17:40:32

poukoi on a supprimer tous mes topics?
c´etait bien sur RPGmaker!
on m´en veut?

cobradu94
cobradu94
Niveau 6
18 février 2005 à 17:40:55

et aussi sur le lien que je vien de donner il explique que pour que le jeu va a la meme vitesse sur tout les ordi, il faut faire deux boucle principale, une logic qui gere les deplacement et qui sera executer selon le timer, et une boulce d´affichage qui sera executer selon la vitesse de l´ordi, mais je sais pas comment faire

cobradu94
cobradu94
Niveau 6
18 février 2005 à 17:47:44

il dise sa sur le site:

"

Si vous programmez des jeux, il vous est déjà sûrement arrivé de voir un jeu tourner à une vitesse parfaite sur votre ordinateur, mais trop lentement ou trop rapidement sur un autre. La solution est d´utiliser un timer.

Vous devez tout d´abord diviser votre code en 2 parties :

La boucle " logique" ( qui déplace les sprites, détecte les collisions...)
La boucle " graphique" ( qui affiche tout sur l´écran)
Pour que la vitesse d´un jeu soit constante quel que soit l´ordinateur, il faut que la boucle logique soit exécutée en priorité ( car c´est elle qui gère toutes les données), et ce un certain nombre de fois par secondes.
Quant à la boucle graphique, elle sera exécutée à chaque fois qu´on le pourra : c´est à dire souvent sur un ordinateur rapide, et moins souvent sur un ordinateur moins rapide.

Voilà à quoi doit ressembler votre code :

volatile int target_game_time = 0;

void increment_target_game_time()
{
target_game_time++;
}
END_OF_FUNCTION(increment_target_game_time);

int play_game()
{
int actual_game_time = 0, ok_to_draw = TRUE;

LOCK_VARIABLE(target_game_time);
LOCK_FUNCTION(increment_target_game_time);

install_int_ex(increment_target_game_time, BPS_TO_TIMER(50));

while(!done)
{
while(actual_game_time < target_game_time)
{
logic_loop();
actual_game_time++;
ok_to_draw = TRUE;
}

if(ok_to_draw)
{
graphics_loop();
ok_to_draw = FALSE;
}
}

remove_int(increment_target_game_time);
return 0;
}

Commentaires :

Les variables et fonctions relatives au timer doivent être verrouillées, d´où l´utilisation des macros LOCK_VARIABLE() et LOCK_FUNCTION().

La fonction ´install_int_ex()´ installe un timer de telle manière que le fonction ´increment_target_game_time()´ sera appelée 50 fois par seconde.

La variable ´target_game_time´ est un compteur, qui est incrémenté par ´increment_target_game_time()´. A tout moment, il indique combien de fois le programme devrait avoir exécuté la boucle logique ( "logic_loop()").

La variable ´actual_game_time´ est aussi un compteur, qui est incrémenté à chaque exécution de la boucle logique ( "logic_loop()"). Il permet donc de mesurer le nombre d´exécutions de cette boucle.
Comme vous pouvez le voir, tout se joue à travers les variables ´actual_game_time´ et ´target_game_time´ : la première " essaie" de rattraper la seconde. Si elle y parvient, la boucle graphique est exécutée.
La variable ´ok_to_draw´ sert uniquement à empêcher le programme d´exécuter la boucle graphique 2 fois de suite ( ou plus) : cela ne servirait à rien car rien n´aurait eu le temps de bouger sur l´écran.
"

cobradu94
cobradu94
Niveau 6
18 février 2005 à 17:52:06

je crois avoir compris, je vous dit sa demain soir ou apres demain, mais une explication suplementaire ne serais pas de refus

mik009
mik009
Niveau 4
18 février 2005 à 17:56:49

slt je voudrais savoir si quelqu´un connais un site ou je pourrais trouver des chipset de golden sun j´en trouve pas :merci: bcp

supra_boulet
supra_boulet
Niveau 5
18 février 2005 à 18:02:23

demain je tle diré ^^

mik009
mik009
Niveau 4
18 février 2005 à 18:03:49

ok

Rikkuman4
Rikkuman4
Niveau 10
18 février 2005 à 18:14:02

Merci Jeanyvesyves, pour les fonctions sur les puissances $1.9 je comprend je pence :-)))

Rikkuman4
Rikkuman4
Niveau 10
18 février 2005 à 18:30:41

golder sun att je crois ^^ att

Rikkuman4
Rikkuman4
Niveau 10
18 février 2005 à 18:43:15

nan j´ai révé sorry ^^

dnob700
dnob700
Niveau 10
18 février 2005 à 18:56:07

pour ce qui est de l´heure si vous voulez un truc super précis, mais qui ne donne que des différence de temps et non pas une heure réelle, il faut utiliser les fonction

QueryPerformanceFrequency et QueryPerformanceCounter dont la fréquence est aproximativement la même que celle de votre processeur.

Par contre il faut utiliser des long long. Leur support est natif sous VC++ ( il faut utiliser le type __int64) mais sous dev c++ je ne sais pas comment faire autre qu´en utilisant le type de windows LARGE_INTEGER qui n´est pas très pratique car il n´y a pas d´opération dessus.

Si quelqu´un sait comment utiliser des entier de 64 bits avec Dev C++ ça m´arrangerait bcp.
Car j´ai une lib que j´essaye d´écrire de manière à ce que je puisse la compiler sous dev c++ et sous vc++ mais depuis que j´ai besoin de large_integer c´est plus possible.
( je la releaserai pour vous bientot).

JeanYvesYves
JeanYvesYves
Niveau 10
18 février 2005 à 19:35:12

Il me semble que c´est
long long
car c´est sur une base de gcc :)

Sinon, en effet QueryPerformanceFrequency est tres précis.
timegettime de mmsystem.h l´est aussi également.
La truc a proscrire pour les calcul précis, c´est time.h

-kivan57-
-kivan57-
Niveau 10
18 février 2005 à 19:39:51

C´est quoi le " C/C++" ? ?

jejej
jejej
Niveau 9
18 février 2005 à 19:48:52

sisi , Dno700 , je crois que le long long est supporte aussi par dev-cpp
en tout cas , il ne produit pas d´erreur à la compilation . ..

jejej
jejej
Niveau 9
18 février 2005 à 19:51:15

ah par contre , il est que de 8 bit
( ou alors c´est des octets je sais pas , ca donne en quoi sizeof ? )

sonic66
sonic66
Niveau 10
18 février 2005 à 20:34:04

qd on passe des tableau ds les fonctions :
void fonc2(int t[][6])
{
t[2][1]=20;
}

void fonc3(int t[][3][2])
{
t[2][1][1]=30;
}
a un
tablo a une dimension , on met rien mais pour la 2eme 3eme dimension , on met un chiffre :
ce chiffre est til important ou ne sert til qua remplir la case []?
ceci " void fonc3(int t[][3][2]) " peut til avoir le meme resultat si on met
" void fonc3(int t[][2][3]) " ? ??

LGV
LGV
Niveau 28
18 février 2005 à 20:38:52

pour éviter de te mélanger comme ça arrivera toutes les 22 secondes avec ce genre de tableaux, tu devrais plutot penser à n´utiliser que des tableaux unidimensionnel ( avec offset pour les différentes composantes). Dans ton cas, le fait que ça puisse marcher dépend de la façon dont tu as initialiser tout ça...

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