Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 26 oct. 2005 à 15:13
JulioDelphi ( Membre Club )
:=
"
hello
bah si ton bateau est dans un TImage tu as la propriété TRANSPARENT et tu mets TRUE, saches ke la couleur transparente sera la pixel inférieure gauche (ds le cas de ton bateau ça ne doit pas poser de soucis), et si c'est dans un TBitmap tu as la propriété TRANSPARENTCOLOR (ki attend un TColor)
voila mon ami :) bon coding ! "
Ben voila je pense que Juliodelphi a repondu indirectement a ma question ...
Slt
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 24 oct. 2005 à 22:57
Ca je sais mais je voulais te dire(en tt cas ac Delhi7) que qd tu ne definis pas manuellement ta couleur de transparence et que tu mets juste ds l inspecteur d object ton Timage a transparent := true Je pense que ca prend la couleur la + dominante et que ca la mets en couleur de transparence ...
Suis je fou ???
Ciao
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006 21 oct. 2005 à 20:15
Slt,
La transparence fonctionne comme pour une image GIF. C'est toi qui décide la couleur qui ne sera pas afficher. C'est très pratique pour utiliser des sprites.
Pour cela, tu dois déclarer que tu veux la trasparence et définir la couleur :
Var BMP : TBitmap;
BMP.Transparent := True;
BMP.TransparentColor := RGB(255, 0, 0); // Pour choisir la couleur rouge
A mon avis, pour ton vert, je pense que ce n'est qu'une valeur qui se trouvait là par hasard. cela aurait pu être n'importe la quelle.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 19 oct. 2005 à 20:46
J aurai une petite question a te poser :
la transparence Ac deplhi est elle gerer par rapport a la couleur la plus dominate ds l image?
Je veux dire par la que par exemple s il y a plus de vert ds une image par rapport aux autres couleurs alors le vert sera transparent ?
Parce que j ai fait plusieurs test et c est cela qu il m est sorti comme conclusion...
NB: en mettant juste ds le Timage transparent a true
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006 19 oct. 2005 à 19:43
Slt,
Je n'avais pas fait attention que tu "stretchais" les bonus. Pour ça, j'utilise la fonction CopyRect. Mais contrairement à Draw, le CopyRect ne reconnais pas la transparence.
Je ne connaissais pas la fonction StretchDraw, j'vais essayer ça et voir ce que cela donne avec
la transparence.
Merci à toi.
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006 19 oct. 2005 à 19:42
Slt,
Je n'avais pas fait attention que tu "stretchais" les bonus. Pour ça, j'utilise la fonction CopyRect. Mais contrairement à Draw, le CopyRect ne reconnais pas la transparence.
Je ne connaissais pas la fonction StretchDraw, j'vais essayer ça et voir ce que cela donne avec
la transparence.
Merci à toi.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 18 oct. 2005 à 21:09
j ai trouve il suffit d utiliser
bonus1.Canvas.StretchDraw
pr faire ce qu on veut
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 18 oct. 2005 à 21:06
Oui ca marche pas de prob g essayer ac un bonus ...
le seul inconvenient est qu ac la fonction Draw , il n y a pas moyen de faire respecter la fonction Strech donc je dois re dimensionner ou tt mes bitmap ou tt mes t images sauf si ta une sol
Merci
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 18 oct. 2005 à 20:55
Oh excuse c est moi qui est fait une faute qd tu m a ecris ca
Bonus1.Canvas.Draw(0, 0, Bonus[1, 1]);
je pensais a ca
form1.Canvas.Draw(0, 0, Bonus[1, 1]);
Et donc la pas moyen sans ce prendre la tete ...
Sinon c est clair que ca va marcher normalement
je vais faire ca tt de suite
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006 18 oct. 2005 à 19:35
Slt,
Pour ta détection, j'ai respecté ton algorithme. Je sauve les sprites dans un tBitmap et je les balance dans ton tImage "Bonus1". Tu peux donc toujours utiliser le "top" et "Left" de "Bonus1" qui reste un tImage.
Bonus1.Canvas.Draw(0, 0, Bonus[1, 1]);
\-> mettre le tBitmap "Bonus[1, 1]" dans le tImage "Bonus1" aux coordonnées (0, 0)
J'avoue que je n'ai pas testé mais je ne vois pas ce qui pourrait coincer.
Pour rendre le PC moins performant, j'ai pensé à :
- vitesse de la raquette plus lente que la balle
- démarrage plus lent
- régler la vitesse par un random
C'est vrai que ce n'est pas évident de le ralentir tout en restant crédible.
Peut-être regarder un humain jouer et noter ses défauts pour les reprogrammer.
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 17 oct. 2005 à 21:44
Oh les gars vis a vis de la note je m en fous pas mal des sales points mais dites au moins prq
ca serait cool comme ca j essayerai d ameliorer ...
C est comme ca que ca marche je pense , non ???
Merci
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 17 oct. 2005 à 21:09
Slt Eddithehead,
Tout d abbord je voudrais te dire que ta methode est assez interressante mais ds ce cas ci ne me convient pas car la methode de detection de collision utilise la place des images(donc: left top) et la largeur et hauteur de celles ci(...)
Donc il faudrait remettre des variables supplementaires a chacun des bonus pr savoir detecter les collisions (du - ac cette methode si tu en connait une autre je prends !!!) , ce qui serait possibles mais assez contraignant et pas fort interressant je pense .
Deuxiemement je n arrive pas a trouver une technique pr rendre "+ nul " le PC !!!
J ai essaye plusieurs trucs mais rien ne marche ...
Slt
nico
EddiTheHead
Messages postés58Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention 2 juin 2006 15 oct. 2005 à 21:41
Slt,
Pendant le déroulement du jeu, tu recharges tes bonus à chaque fois à partir du disque dur.
Même s'ils se stockent dans la mémoire cache, prend l'habitude de les charger une seul fois.
Tu devrais plutot faire quelque chose de ce genre (+ faire jouer le CPU avec la raquette2) :
Déclaration :
-----------
Var Bonus : Array [1..3, 1..4] Of TBitmap; // 3 bonus, 4 animations par bonus
...
Procedure TForm1.FormCreate(Sender: TObject);
Const NomBonus : Array [1..3, 1..4] Of String = (('bonus1a', 'bonus1b', 'bonus1c', 'bonus1d'),
('bonus2a', 'bonus2b', 'bonus2c', 'bonus2d'),
('bonus3a', 'bonus3b', 'bonus3c', 'bonus3d'));
Var CptBonus, CptAnim : Byte;
Begin
...
// Chargement des Sprites "Bonus"
For CptBonus := 1 To 3 Do
For CptAnim := 1 To 4 Do
Begin
Bonus[CptBonus, CptAnim] := TBitmap.Create;
Bonus[CptBonus, CptAnim].LoadFromFile(NomBonus[CptBonus,CptAnim]+'.bmp');
End;
...
End;
Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction);
Var CptBonus, CptAnim : Byte;
Begin
For CptBonus := 1 To 3 Do
For CptAnim := 1 To 4 Do
Bonus[CptBonus, CptAnim].Free; // Très important, libérer la mémoire
End;
Procedure TForm1.DeplacementTimer(Sender: TObject);
Begin
...
// pour garder ton algorithme
If TextBonus1 = 10 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 1]);
If TextBonus1 = 20 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 2]);
If TextBonus1 = 30 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 3]);
If TextBonus1 = 40 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 4]);
...
// A la place de la procédure TForm1.FormKeyPress
// La raquette suit la balle
// A faire : trouver un algorithme pour pénaliser le CPU, sinon le ne va jamais perdre
Raquette2.Left := Balle.Left - (Raquette2.Width Div 2);
// Test de dépassement du bord gauche
If Raquette2.Left <= 0 Then Raquette2.Left := 0;
// Test de dépassement du bord droit
If Raquette2.Left+Raquette2.Width >= Width Then Raquette2.Left := Width - Raquette2.Width;
...
End;
Bon jeu ...
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 13 oct. 2005 à 22:21
Je viens de me rendre compte d une erreur % au Bonus3
La vitesse n augmente pas vu que je la remet a chaque fois a 5(ou-5) qd elle touche le mur ...
+ si la vity:=-5 elle diminue(plus que je fait+1)
Enfin voila ...
Je corrigerais ca demain pas le tps today !
Ciao
Nicolas___
Messages postés992Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 avril 20131 13 oct. 2005 à 21:13
Bon ce prog c est vraiment pr passer ou meme TUER le tps donc ...
Les touches pr le Joueur2 sont Q(gauche) et D(droite)
La liste des Bonus devrait bientot augmenter ...
Ciao
26 oct. 2005 à 15:13
:=
"
hello
bah si ton bateau est dans un TImage tu as la propriété TRANSPARENT et tu mets TRUE, saches ke la couleur transparente sera la pixel inférieure gauche (ds le cas de ton bateau ça ne doit pas poser de soucis), et si c'est dans un TBitmap tu as la propriété TRANSPARENTCOLOR (ki attend un TColor)
voila mon ami :) bon coding ! "
Ben voila je pense que Juliodelphi a repondu indirectement a ma question ...
Slt
24 oct. 2005 à 22:57
Suis je fou ???
Ciao
21 oct. 2005 à 20:15
La transparence fonctionne comme pour une image GIF. C'est toi qui décide la couleur qui ne sera pas afficher. C'est très pratique pour utiliser des sprites.
Pour cela, tu dois déclarer que tu veux la trasparence et définir la couleur :
Var BMP : TBitmap;
BMP.Transparent := True;
BMP.TransparentColor := RGB(255, 0, 0); // Pour choisir la couleur rouge
A mon avis, pour ton vert, je pense que ce n'est qu'une valeur qui se trouvait là par hasard. cela aurait pu être n'importe la quelle.
19 oct. 2005 à 20:46
la transparence Ac deplhi est elle gerer par rapport a la couleur la plus dominate ds l image?
Je veux dire par la que par exemple s il y a plus de vert ds une image par rapport aux autres couleurs alors le vert sera transparent ?
Parce que j ai fait plusieurs test et c est cela qu il m est sorti comme conclusion...
NB: en mettant juste ds le Timage transparent a true
19 oct. 2005 à 19:43
Je n'avais pas fait attention que tu "stretchais" les bonus. Pour ça, j'utilise la fonction CopyRect. Mais contrairement à Draw, le CopyRect ne reconnais pas la transparence.
Je ne connaissais pas la fonction StretchDraw, j'vais essayer ça et voir ce que cela donne avec
la transparence.
Merci à toi.
19 oct. 2005 à 19:42
Je n'avais pas fait attention que tu "stretchais" les bonus. Pour ça, j'utilise la fonction CopyRect. Mais contrairement à Draw, le CopyRect ne reconnais pas la transparence.
Je ne connaissais pas la fonction StretchDraw, j'vais essayer ça et voir ce que cela donne avec
la transparence.
Merci à toi.
18 oct. 2005 à 21:09
bonus1.Canvas.StretchDraw
pr faire ce qu on veut
18 oct. 2005 à 21:06
le seul inconvenient est qu ac la fonction Draw , il n y a pas moyen de faire respecter la fonction Strech donc je dois re dimensionner ou tt mes bitmap ou tt mes t images sauf si ta une sol
Merci
18 oct. 2005 à 20:55
Bonus1.Canvas.Draw(0, 0, Bonus[1, 1]);
je pensais a ca
form1.Canvas.Draw(0, 0, Bonus[1, 1]);
Et donc la pas moyen sans ce prendre la tete ...
Sinon c est clair que ca va marcher normalement
je vais faire ca tt de suite
18 oct. 2005 à 19:35
Pour ta détection, j'ai respecté ton algorithme. Je sauve les sprites dans un tBitmap et je les balance dans ton tImage "Bonus1". Tu peux donc toujours utiliser le "top" et "Left" de "Bonus1" qui reste un tImage.
Bonus1.Canvas.Draw(0, 0, Bonus[1, 1]);
\-> mettre le tBitmap "Bonus[1, 1]" dans le tImage "Bonus1" aux coordonnées (0, 0)
J'avoue que je n'ai pas testé mais je ne vois pas ce qui pourrait coincer.
Pour rendre le PC moins performant, j'ai pensé à :
- vitesse de la raquette plus lente que la balle
- démarrage plus lent
- régler la vitesse par un random
C'est vrai que ce n'est pas évident de le ralentir tout en restant crédible.
Peut-être regarder un humain jouer et noter ses défauts pour les reprogrammer.
17 oct. 2005 à 21:44
ca serait cool comme ca j essayerai d ameliorer ...
C est comme ca que ca marche je pense , non ???
Merci
17 oct. 2005 à 21:09
Tout d abbord je voudrais te dire que ta methode est assez interressante mais ds ce cas ci ne me convient pas car la methode de detection de collision utilise la place des images(donc: left top) et la largeur et hauteur de celles ci(...)
Donc il faudrait remettre des variables supplementaires a chacun des bonus pr savoir detecter les collisions (du - ac cette methode si tu en connait une autre je prends !!!) , ce qui serait possibles mais assez contraignant et pas fort interressant je pense .
Deuxiemement je n arrive pas a trouver une technique pr rendre "+ nul " le PC !!!
J ai essaye plusieurs trucs mais rien ne marche ...
Slt
nico
15 oct. 2005 à 21:41
Pendant le déroulement du jeu, tu recharges tes bonus à chaque fois à partir du disque dur.
Même s'ils se stockent dans la mémoire cache, prend l'habitude de les charger une seul fois.
Tu devrais plutot faire quelque chose de ce genre (+ faire jouer le CPU avec la raquette2) :
Déclaration :
-----------
Var Bonus : Array [1..3, 1..4] Of TBitmap; // 3 bonus, 4 animations par bonus
...
Procedure TForm1.FormCreate(Sender: TObject);
Const NomBonus : Array [1..3, 1..4] Of String = (('bonus1a', 'bonus1b', 'bonus1c', 'bonus1d'),
('bonus2a', 'bonus2b', 'bonus2c', 'bonus2d'),
('bonus3a', 'bonus3b', 'bonus3c', 'bonus3d'));
Var CptBonus, CptAnim : Byte;
Begin
...
// Chargement des Sprites "Bonus"
For CptBonus := 1 To 3 Do
For CptAnim := 1 To 4 Do
Begin
Bonus[CptBonus, CptAnim] := TBitmap.Create;
Bonus[CptBonus, CptAnim].LoadFromFile(NomBonus[CptBonus,CptAnim]+'.bmp');
End;
...
End;
Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction);
Var CptBonus, CptAnim : Byte;
Begin
For CptBonus := 1 To 3 Do
For CptAnim := 1 To 4 Do
Bonus[CptBonus, CptAnim].Free; // Très important, libérer la mémoire
End;
Procedure TForm1.DeplacementTimer(Sender: TObject);
Begin
...
// pour garder ton algorithme
If TextBonus1 = 10 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 1]);
If TextBonus1 = 20 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 2]);
If TextBonus1 = 30 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 3]);
If TextBonus1 = 40 Then Bonus1.Canvas.Draw(0, 0, Bonus[1, 4]);
...
// A la place de la procédure TForm1.FormKeyPress
// La raquette suit la balle
// A faire : trouver un algorithme pour pénaliser le CPU, sinon le ne va jamais perdre
Raquette2.Left := Balle.Left - (Raquette2.Width Div 2);
// Test de dépassement du bord gauche
If Raquette2.Left <= 0 Then Raquette2.Left := 0;
// Test de dépassement du bord droit
If Raquette2.Left+Raquette2.Width >= Width Then Raquette2.Left := Width - Raquette2.Width;
...
End;
Bon jeu ...
13 oct. 2005 à 22:21
La vitesse n augmente pas vu que je la remet a chaque fois a 5(ou-5) qd elle touche le mur ...
+ si la vity:=-5 elle diminue(plus que je fait+1)
Enfin voila ...
Je corrigerais ca demain pas le tps today !
Ciao
13 oct. 2005 à 21:13
Les touches pr le Joueur2 sont Q(gauche) et D(droite)
La liste des Bonus devrait bientot augmenter ...
Ciao