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++

jejej
jejej
Niveau 9
17 février 2005 à 14:18:48

JYY , je ne comprends pas ta fonction BoxCollide :
je dois lui passer quoi ?

je te montre mon code :

/ / pour les futurs tests de collisions
SDL_Rect balle;
balle.x = Xposb;
balle.y = Yposb;
balle.w = 15; / / balle.bmp = 15*15 pixels
balle.h = 15;

SDL_Rect raquette2;
raquette2.x = Xpos2;
raquette2.y = Ypos2;
raquette2.w = 10; / / raquette1.bmp = 10*50 pixels
raquette2.h = 50;

j´ai donc deux structures balle et raquette

if ( BoxCollide ( & , &2 ) == 0 ) / /collision ?
{

XD=0; / / la balle change de sens
goto next;

}

voila en gros mon code , il compile mais la balle est . .. bizarre :)

elle descend et monte le long de l´écran , a gauche , derriere la raquette 1 . ..

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 14:24:47

hihi, non, c´est l´inverse : c´est quand c´est ==1 que c´est collision, 0 c´est si ça ne touche pas, donc normal que ce soit bizarre, tu la fais rebondir en permanence, lol !

sonic66 > ta structure réponse stocke des int, pourquoi ?

tu n´as pas besoin de cette structure, tu peux faire :
struct fraction rep;
/ / et oui, c´est une fraction aussi ! pas besoin de déclarer un nouveau type de strutcure !

et evidemment, apres, tu fais :
rep.num
et
rep.denom

jejej
jejej
Niveau 9
17 février 2005 à 14:26:18

si tu pouvais m´expliquer rapidement comment marche ta fonction , parceque , commencer avec un
!
des tests , et suivre avec des && et || , j´avoue que je suis perdu :)

j´ai pense que si la focntion renvoyait zero , il y avait collision , sinon elle renvoyait un , c´est bien ca ?

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 14:30:28

1 --> collision
2 --> pas collision

principe en français
j´appelle :
x1,y1 ( coin supérieur gauche boite 1)
w1,h1 ( largeur hauteur boite 1)
pareil pour 2

Le principe : les boites se chevauchent si et seulement si
une ligne horizontal de la boite passe entre les 2 lignes de l´autre
pareil pour les verticales.

ce qui donne :
pour x
x1<x2<x1+w1 OU x1<x2+w2<x1+w1
si tu n´as pas ça, meme pas la peine de tester les y : tu peux sortir, ça ne touche pas ( 1er if)
si tu l´as, alors il faut aussi tester les y
y1<y2<y1+h1 OU y1<y2+h2<y1+h1
si tu n´as pas ce cas, tu sors.

Si tu n´es pas sorti c´est que ça touche ! :)

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 14:36:38

oups, je voulais bien sur dir :

1 --> collision
0 --> pas collision

c´est soit 0, soit 1.

Il s´agit du 2e algo de collision le plus simple.
on parle d´algo de collision AABB ( Axes Aligned Bouding Box)
Il y a la meme chose en 3D : tu ajoutes un 3e if, et tu testes aussi facilement si 2 parallelépipedes se touchent...

XyTiX
XyTiX
Niveau 8
17 février 2005 à 14:40:50

si il fait un if ( (test_x) && ( test_y))

si le premier n´est pas vrai, ca ne regardera pas le second. Donc ca peut simplifier son algo mais je suis pas sur.

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 14:43:01

Deja, on peut le simlpifier avec la loi de Morgan qui dit que :

! (a && b) < => ! a || ! b
et
! (a || b) < => ! a && ! b

ça fait intervenir les algebres de boole :)
mais j´ai fait ça vite fait, lol :)

XyTiX
XyTiX
Niveau 8
17 février 2005 à 14:44:34

oui oui

arrete tu vas leur faire peur !

joke.

XyTiX
XyTiX
Niveau 8
17 février 2005 à 14:46:46

" ensuite, pour ta fraction, n´oublie pas les parentheses ! !

( 1/2.0)*(1/3.0)* . . .."

en ce moment on est en train de travailler la dessus en cours... structures de données abstraites. C´est bien sympthique aussi.

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 14:50:59

XyTiX >
Tien si t´aimes bien les structures de données :
on a parlé de ce cas y´a pas longtemps, compile moi ça, et lance le :)

http://rafb.net/paste/results/DENtz289.html

LGV
LGV
Niveau 28
17 février 2005 à 14:56:16

" la loi de Morgan"

ouhlala ! ! heresie ! ! . . la loi de *De* Morgan bien sur............ comment ca je chipote ? ? ; )

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 16:17:00

En effet, c´est monsieur De Morgan :)

jejej
jejej
Niveau 9
17 février 2005 à 16:17:45

il est si important que ca " De Morgan " LGV ?

parceque , sa loi , elle me parait un peu bidon :
pas de a et b si pas de a ou pas de b , super !

Sinon , JeanYvesYves , j´ai reussi à implémenter ton code , ca marche , mais pas tout le temps bizarrement , parfois la balle passe a travers la raquette ( nan nan , c´est pas moi qui suis mauvais :) ) , il doit y avoir un cas particulier dont ton algo ne tient pas compte . ..

En fait , pour l´effet de rémanence , il disparait si je me met en SWURFACE , FULLSCREEN seulement , c´est bizarre mais le jeu est plus rapide et la balle ne clignote pas si je mets ca a la place de HWSURFACE , DOUBLEBUF et NOFRAME . .. j´aurais cru l´inverse mais bon , les faits sont la :)

pour tout les impatients , une version jouable bientot :)

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 16:20:29

ah ?
en FUllSCREEN, je suis ok, car la carte graphique est faite pour.
Mais, une fois en fullscreen, ça change si on met HW ou SW ? ? en ce qui concerne la balle ?
wow ! !

Bref, sinon, pour mon algo, je l´ai refait de tete, y´a surement une erreur qui a du se glisser, ça se corrige !

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 16:27:56

j´ai relu mon algo, je ne vois pas ou ça peut foirer, enfin bref.
Erreur classique, vérifie ça :

quand tu touches, que fais tu ?
tu changes juste de sens ?
si tu fais juste ça, alors, disons que ta direction vx = -1
tu touches, donc tu changes de sens, donc vx=1
MAIS ! ! Quand tu repars, si tu es DANS la raquette, et que tu retestes, peut etre que a la prochaine fois, la collision te renvoie que tu touches toujours, et la, tu rechanges de sens et tu repars vers la raquette, alors que tu ne devrais pas :)

Tu devrais protéger ta collision :

si vx=-1 && collision_raquette_gauche, alors vx=1
si vx=1 && collision_raquette_droite, alors vx=-1

car si tu entres dans le cas :
if vx=1 && collision_raquette_gauche, la il ne faut rien faire, il faut laisser ta balle partir, tu vois ce que je veux dire ?

jejej
jejej
Niveau 9
17 février 2005 à 16:29:55

Bah , en Software , le jeu est rapide et ne clignote pas

en Hardware , la balle clignote et j´ai des ralentissements

mais mon ordi a peu etre pas de vram aussi , je sais pas trop ce que c´est , il a trois ans et 256 mo de ram , mais apres . ..

par contre , pour ton algo , en fait c´est moi qui suis nul ^^ mais pas dans le jeu , dans la progr ^^ :
j´avais mis :
if ( BoxCollide ( &2 , & ) ==1 )

mais en fait , il semblerait qu´il faille
if ( BoxCollide ( & , &2 ) == 1 ) . ..
bizarre

JeanYvesYves
JeanYvesYves
Niveau 10
17 février 2005 à 16:32:55

non, normalement, l´ordre n´a pas d´importance, si tes boites sont bien faites.
Vérifie ce que j´ai marqué ci dessus.
Etonnant pour l´histoire du HW_SURFACE
essaie de voir si tes images sont chargées en RAM ou en VRAM, car souvent, y´a un
if ( echec VRAM) essaie RAM

faut voir s´il va dans le if.
Bref, peut etre aussi que ton jeu va TROP vite

jejej
jejej
Niveau 9
17 février 2005 à 16:37:47

Ben , j´ajoute un systeme de comptage des points , et je reposte ( j´essaie ) mon jeu sur le site . ..

Mais , je me posais la question d´une intelligence artificielle : meme pour un pong , ca me semble difficile : je dois anticiper les deplacements de la balle c´est ca ?
A la limite , je pense reussir a faire une ai imbattable , mais bon , pour le joueur c´est pas suepr itneressant , alors comment determiner une perte de balle ?

a la limite , un random a chaque fois , mais si le joueur sait que l´ordi fait expres de perdre , c´est pas interessant non plus . ..

LoyalMan
LoyalMan
Niveau 7
17 février 2005 à 16:48:19

Euh bon suis aller mater tes tuto JeanYves et gg mi suis mi la jai comme complilateur Devcpp ^^
mais quand je compile ceci :

  1. include < stdlib.h>
  2. include < iostream>

int main()
{
cout < < " Yop ! ";
cin.get();
cout < < " re ^^";
cin.get();
system("pause");
return 0;
}

( tire du tuto...)et bien sa ne marque pas un mot juste : appuyer sur une touche...etc :s

Rikkuman4
Rikkuman4
Niveau 10
17 février 2005 à 16:52:11

eneleve cin get je vois pas pourquoi tu le mais !

  1. include < stdlib.h>
  2. include < iostream.h>

int main()
{
cout<<"Yop ! "<<endl;
cout<< " re ^^";<<endl;
system("pause");
return 0;
}

pas besoin de mettre cin get et pour passé a la ligne fait endl; :ok:

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