Déja ya un truc qui va pas ( je trouve).
Corrige tes conditions comme ca
void collisions()
{
if( r2.x == r4.x && r2.y == r4.y && sy==1 && sx==-1)
{sy=1; sx=1;}
if( r2.x == r4.x && r2.y == r4.y && sy==1 && sx==-1)
{sy=1; sx=1;}
if( r3.x == r4.x && r3.y == r4.y && sy==-1 && sx==1)
{sy=-1; sx=-1;}
if( r3.x == r4.x && r3.y == r4.y && sy==-1 && sx==1)
{sy=-1; sx=-1;}
}
Ensuite oublie les ==, uniquement des > et < ou > = et < =.
Donc revoi tes conditions avec ca, il te faudra forcement la hauteur de ton image, les 4 résultats de tes conditions devront être
1, 1
1, -1
-1, 1
-1, -1
correspondant aux 4 directions.
Merci loclach mais j´ai trouvé ulterieurement comment gerer les collisions, je me suis mit devant ma feuille, j´ai fait le croquis de ce qu´affichait l´ecran, j´ai mit plein de truc, gribouillé, et je suis arrivé a trouvé comment faire.
Par contre, mon programme a changé malencontreusement, et je l´ai supprimé par ce qu´il affichait plus rien, j´en avait marre de lui, je vais tout recommencer.
Il y a 4 lignes, et j´en met qu´une:
if(r2.x<r4.x>r2.x+l && r2.y<r4.y>r2.y+L && sx==-1 && sy==1)sx=1,sy=1;
Voila, normalement c´est bon, ( j´ai fait 4 lignes il n´y en a qu´une)
l est largeur, L est longueur de la barre.
loclach :
Pour de bon je vais écrire un dico avec tout les dérivés de mon pseudo
La feuille de papier, les croquis et tout ca c´est le top, moi je peux travailler que comme ca, Les choses sont plus claire.
Sinon j´ai jamais vu de
r2.x < r4.x > r2.x+l
dans une condition, mais si ca marche pourquoi pas. ( je reste sceptique qu´en C++ il accepte ce genre de truc mais je connais pas tout non plus. )
J´ai essayé mon truc collision, et ca marche pas il n´y a rien a faire :
void collisions()
{
if(r2.x<r4.x && r4.x<r2.x+10 && r2.y<r4.y && r4.y<r2.y+50 && sx==-1,sy==1)sx=1,sy=1;
if(r2.x<r4.x && r4.x<r2.x+10 && r2.y<r4.y && r4.y<r2.y+50 && sx==-1,sy==-1)sx=1,sy=-1;
if(r3.x<r4.x && r4.x<r3.x+10 && r3.y<r4.y && r4.y<r3.y+50 && sx==1,sy==1)sx==-1,sy=1;
if(r3.x<r4.x && r4.x<r3.x+10 && r3.y<r4.y && r4.y<r3.y+50 && sx==1,sy==-1)sx=-1,sy=-1;
}
La balle fait des diagonales de bas droite a haut gauche, mais rebondit comme ca sur le bas et le haut, et non dans le coin.
r1=image de fond
r2=barre gauche
r3=barre droite
r4=balle
Je pensais vraiment que ca aurait marché, pourtant, d´avance a ceux qui maitrient la collisions et qui m´aideront.
from godrik:
ah les colisions...
il y a des choses a en dire sur les collisions.
dans l´idée ce qu´il faut faire.
tu as un vecteur de deplacement de ton objet.
et la hop, il en touche un autre.
Mais il touche ce dernier objet sur une de ses faces
donc pour faire les choses bien, tu fait que ton objet va jusqu´au mur.
puis tu prend le symetrique de son vecteur deplacement par rapport a la normale de la surface que ton objet a rencontrer.
qu´est ce qui se passe si tu touche deux objets ( disons un coin ? )bah le mieux c´est de prendre comme normale la " moyenne" des normales de tes deux surfaces...
bon, et pour la balle, pour rajouter du fun, tu as interet a en plus rajouter dans le vecteur deplacement l´acceleration de l´objet rencontré ainsi tu peux " changer" la direction de la balle avec la batte...
voila tu sais tout... ( a toi de coder! )
Mais pourquoi mon code est faux, j´ai passé du temps devant ma feuille, et normalement, mon code devrait fonctionner a merveille.
J´ai un pue ti peu de mal a comprendre ce que tu m´as dit pour faire des collisions, dsl.
PS : j´ai mit :
collisions();
dans la boucle while(bQuit).
ce qui est rigolo c´est qu´il ne devrait pas y avoir de coin si tu fais un pong. Mais la n´est pas le problème, la probabilité pour que la balle touche exactement les 2 coins en même temps est moindre, pis dans tout les cas, un programme étant séquentiel il fera une des 2 collisions en premier puis la 2ème après et ne traitera pas les 2 en même temps.
Ensuite il reste des == la où il faut pas.
== Opérateur de COMPARAISON
= Opérateur d´AFFECTATION
Dans l´avant dernier " if", il reste 1 ==
Ta barre restant fixe en coordonnée X, pas la peine de faire un test aussi compliqué :
r2.x<r4.x && r4.x<r2.x+10
Essaye comme ca : ( imaginons que y = 0 est le coin haut gauche, coordonnée windows)
/ /Pour la barre de gauche
if ( r4.x < r2.x && r4.y < r2.y+50 && r4.y > r2.y)
{
sx = -sx; / /si sx=1, sx sera = à -1 et inversement
}
/ /Pas besoin de toucher à la valeur de sy, si la balle descend, bah elle continuera à descendre.
/ /Pour la barre de droite
if ( r4.x > r3.x && r4.y < r3.y+50 && r4.y > r3.y)
{
sx = -sx;
}
Ici tu as juste les conditions pour la balle et la barre, maintenant à toi d´essayer de trouver pour les collisions en haut et en bas avec les limites de ta zone.
Astuce cette fois ci c´est sx qui ne change pas mais sy.
Bon, je te sors ca comme ca mais je pense pas me planter
je vais tout de suite essayer
d´avoir repondu si sympament.
Oh... ca marche...
enormement lockscash
( cette fois ci, c´est pas locklash)
Je deforme pas les psudos des gens qui m´ont aidés
Bon vent a toi lockscash
A plus !
Pourquoi j´ai une petite bande noire en haut et a droite de l´ecran lorsque je lance le jeu pendant le jeu,j´ ai pourtant reconfigurer mon ecran, mais tjs ces bandes noires, qui sait pourquoi ?
ba . ..
Sinon, ds les collisions, il y a quelques problemes quand meme, la balle quand elle est dans l´objet, elle va d´un cote a l´autre, je pense qui faut que je mette une barriere en haut de mes raquettes.
Sinon, j´ai changé tous les graphismes, maintenant facon tennis ( je fait du tennis)
Sinon, en plus des deux questions precedentes, je ne sais pas comment utiliser differentes pages avec devC++, on peut en mettre plusieurs, mais les relieer
Je voudrais sacoir si ds une application SDL, il est possible de rendre inapte ctrl+alt+suppr,
et que pour quitter, l faut appyer sur plusieurs touches au llieu d´une
que de queston, ce serais bien d´y repondre, et puis je utiliser des images et des sons copiercoller via internet pour les mettre dans mon jeu ?
Je voudrais sacoir si ds une application SDL, il est possible de
rendre inapte ctrl+alt+suppr,
LOL c´est le genre de truc qui peut te sauver la vie à n´importe quel moment!
Fais surtout pas ça, il pourra t´être bien utile ainsi qu´aux joueurs ( certains pc ont la magnie de planter tout le temps).
De toute facon je pense pas qu´il soit possible de passer outre ce raccourci
First, Ya pas de quoi pour l´aide
Si tu partagé le jeu ca serai cool, car le problème de la bande noire, ben j´en sais rien du tout et je comprend pas trop le truc
Pour la balle qui va d´un coté à l´autre, c´est pas super bien explicite, mais il est possible que tu ne teste pas la collision au bon moment. Normalement à l´instant ´t ´ tu teste la collision sur où seront les objets à l´instant ´t+1 ´ et SI il n´y a pas de collision, alors tu bouge tes objets, dans le cas contraire, tu fait le necessaire pour éviter un bug
Je connais pas DevC++ donc je peux rien pour ton histoire de page.
Ton PONG n´étant pas réservé pour une futur vente ( je pense), tu peux prendre les sons que tu veux mais si tu distribue ton jeu alors il faudra avertir les auteurs des sons ou images s´il y a un copyright dessus. Mais beaucoup de sons et images sont libres sur le net
sisi c´est possible de passer outre ctrl+alt+suppr dans les faux windows ( j´entend 9x), il suffit de hooker le clavier et explorer n´y voit rien.
dans les post 9x c´est beaucoup plus difficile mais c´est possible quand meme, regarder dans la doc de directx, il y a quelquechose sur le passage en mode plein ecran qui permet de faire cela.
mais apres je vais poser la grande question:
" pourquoi veux tu faire un truc pareil ? ???"
c´est une porte de sortie quandton application delire, pourquoi veux tu l´empecher ?
Tout d´abord, bonjour, En fait je veux bloquer ctrl+alt+suppr pour un petit programme, qu quand j´utilise l´ordinateur, et que je pars 5 minutes, que personne de ma famille puisse fourer son nez dans mes programmes ou meme fermer ma session, voila tout, et pour quitter, beaucoup de touches pour que que moi puisse l´etaidre.
Je vais re ecrire mes questions :
1_ bandes noires :
Quand j´execute mon programme, l´image qui est normalement plein ecran ne l´est pas tout a fait, une bande de 2 cm en haut et a droite noir est toujours presente, et je voudrais savoir si il n´y a que mon PC qui fait cela, donc je laisse comme ca, ou alors, tous les PC font cela, donc je rajoute des barres en bas et a gauche.
La configuration de mon ecran n´a rien a voir dans tout cela.
_______________________________________________
2_ collisions :
Quand la balle arrive par le haut de ma raquette, comme sx=-sx dans cette zone, la balle fait x,-x,x,-x a perpet jusqu´a ce que j´enleve la raquette de son emprise, mais je croit avoir trouvé le probleme, je mettrais une barriere collision en haut et en bas de la raquette.
_______________________________________________
3_ differentes pages :
Je voudrais regrouper dans un fichier dev les chargements d´images, dans un autre les menus, en utilisant plusieurs pages, mais les relier entre elles sous dev C++.
________________________________________________
4_ images et sons :
En fait, j´aimerais bien vendre mon jeu ( prime tres petit se comptant en centimes)
Je ne ferais pas qu´un simple pong, mais un jeu orienté tennis, avec pleins de modes differents, simple, double, et le nombres de joueurs VS l´ordi. A 4 joueurs humains, ca doit etre asser fun.
Donc, je dois soit faire mes propres images, soit demander l´autorisation, mais es ce que l´autorisation est payante, j´ai deja entendu parler des droits d´auteur.
_______________________________________________
Voila finit mon baratin, et merci pour vos reponses anterieurs et peut etre vos reponses posterieurs.
plus de robleme de collisions, j´ai virer :
r4.y>r3.y