begin
//bmp := TBitmap.Create;
//bmp.Width := dim;
//bmp.Height := dim;
bmp := RotImage(bma, DegToRad(rangle),
Point(dim div 2, dim div 2), clWhite);
ec := (bmp.Width - dim) div 2;
...
end;
en effet la fonction RotImage crée et renvoie un TBitmap en Résultat ...
il est donc très déconseillé de créer un objet dans le but de récupérer le résultat de cette fonction.
l'explication en est très simple:
// BMP est crée ... un espace mémoire a été alloué
BMP := TBitmap.Create;
// ici c'est RotImage qui crée le TBitmap dans son code
// Result := TBitmap.Create;
// et tu affectes le résultat à BMP !!!!!
BMP := RotImage(bma, DegToRad(rangle),
Point(dim div 2, dim div 2), clWhite);
...
// ici tu libère BMP !!!
// à ton avis c'est quelle instance de TBitmap qui est libérée ?????
BMP.Free;
je te le donne en mille c'est celle de la fonction.
Result := TBitmap.Create;
du coup la première instance créée par
//BMP := TBitmap.Create;
est perdue et jamais libérée
il faut faire attention aux fonctions qui renvoient un objet
en fonction des besoins du code on pourrait aussi faire comme ceci:
with RotImage(bma, DegToRad(rangle), Point(dim div 2, dim div 2), clWhite) do
try
...
finally
Free;
end;
voilà on pourrait changer encore 2-3 choses comme les fonctions
de rotation d'images ... il y a moyen de faire beaucoup plus simple
et plus rapide que la rotation par ScanLine ou Pixels[]
mais comme ça ne nuit pas au fonctionnement du jeu ... à toi de voir ;)
@+
Cirec.
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 11 févr. 2013 à 11:16
Pour information, Amaze vient de gagner le Défi Pascal 2012 sur Devellopez.com.
cs_pista
Messages postés9Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention18 octobre 2007 30 avril 2006 à 09:54
Bonjour JP
J'ai perdu votre e-mail
Etienne de Giro
Attestation OK
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 10 mars 2006 à 10:57
C' est encore une oeuvre signée "Debiars"!
Du grand art quoi ... Amazing !!!!
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 2 mars 2006 à 13:56
Il te faudra quand même un peu de patience,Yves...
A+++
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 2 mars 2006 à 11:48
Si c'est à la demande alors la note passe à 10/10
800x600 me convient
Salutations
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 2 mars 2006 à 11:41
Salut Yves,
Veux-tu une version 800x600 ou 640x480 ?
Cordialement
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 2 mars 2006 à 08:54
La fiche est plus grande que mon écran ..
9.99/10
Salutations
Debiars
Messages postés285Date d'inscriptionlundi 16 juin 2003StatutMembreDernière intervention11 février 2018 26 févr. 2006 à 10:43
Salut Cirec,
Pour l'affichage qui frise, tu peux essayer de réduire la vitesse de déplacement en mettant la variable "pas" à 1 dans la procédure DeplacePion. C'est un problème que je n'ai pas rencontré.
En ce qui concerne le clic sur le pion quand il n'y a pas de déplacement possible, il est utile pour passer la main à l'ordi.
Cela permet une respiration, sinon il y aurait deux insertions consécutives, on risque de perdre le fil. Et puis il y a le cas où le déplacement est possible mais non désiré par le joueur...
J'ai remarqué à certain moment quand l'ordinateur joue l'affichage frise (on ne voit pas le déplacement des pièces) et il reprend une fois que son déplacement à été effectué
En suite selon les pièces ajoutées il se peut qu'il n'y ait pas de déplacement possible mais le jeu attend quand même que l'on clique sur le "pion" pour le déplacer (c'est peut être pas nécessaire)
Un petit compteur de point ou de coup serait le bien venu (où les deux)
Si non je me régale il est génial la grande classe quoi
17 févr. 2013 à 15:25
jp
17 févr. 2013 à 14:49
maintenant que le concours est fini ...
on peut corriger une erreur dans le code qui coute
à chaque rotation de pièce pas moins de 6 TBitmap !!!
Heureusement ils sont loin d'être aussi bon qu'il n'y parait chez dvp ...
ils n'ont rien vu ... hahaha
bref pour y remédier c'est simple :
tu mets les 3 premières ligne de la procédure qui suit en commentaire.
procedure TFmain.Angle(bma : TBitmap);
var ec : integer;
bmp : TBitmap;
begin
//bmp := TBitmap.Create;
//bmp.Width := dim;
//bmp.Height := dim;
bmp := RotImage(bma, DegToRad(rangle),
Point(dim div 2, dim div 2), clWhite);
ec := (bmp.Width - dim) div 2;
...
end;
en effet la fonction RotImage crée et renvoie un TBitmap en Résultat ...
il est donc très déconseillé de créer un objet dans le but de récupérer le résultat de cette fonction.
l'explication en est très simple:
// BMP est crée ... un espace mémoire a été alloué
BMP := TBitmap.Create;
// ici c'est RotImage qui crée le TBitmap dans son code
// Result := TBitmap.Create;
// et tu affectes le résultat à BMP !!!!!
BMP := RotImage(bma, DegToRad(rangle),
Point(dim div 2, dim div 2), clWhite);
...
// ici tu libère BMP !!!
// à ton avis c'est quelle instance de TBitmap qui est libérée ?????
BMP.Free;
je te le donne en mille c'est celle de la fonction.
Result := TBitmap.Create;
du coup la première instance créée par
//BMP := TBitmap.Create;
est perdue et jamais libérée
il faut faire attention aux fonctions qui renvoient un objet
en fonction des besoins du code on pourrait aussi faire comme ceci:
with RotImage(bma, DegToRad(rangle), Point(dim div 2, dim div 2), clWhite) do
try
...
finally
Free;
end;
voilà on pourrait changer encore 2-3 choses comme les fonctions
de rotation d'images ... il y a moyen de faire beaucoup plus simple
et plus rapide que la rotation par ScanLine ou Pixels[]
mais comme ça ne nuit pas au fonctionnement du jeu ... à toi de voir ;)
@+
Cirec.
11 févr. 2013 à 11:16
30 avril 2006 à 09:54
J'ai perdu votre e-mail
Etienne de Giro
Attestation OK
10 mars 2006 à 10:57
Du grand art quoi ... Amazing !!!!
2 mars 2006 à 13:56
A+++
2 mars 2006 à 11:48
800x600 me convient
Salutations
2 mars 2006 à 11:41
Veux-tu une version 800x600 ou 640x480 ?
Cordialement
2 mars 2006 à 08:54
9.99/10
Salutations
26 févr. 2006 à 10:43
Pour l'affichage qui frise, tu peux essayer de réduire la vitesse de déplacement en mettant la variable "pas" à 1 dans la procédure DeplacePion. C'est un problème que je n'ai pas rencontré.
En ce qui concerne le clic sur le pion quand il n'y a pas de déplacement possible, il est utile pour passer la main à l'ordi.
Cela permet une respiration, sinon il y aurait deux insertions consécutives, on risque de perdre le fil. Et puis il y a le cas où le déplacement est possible mais non désiré par le joueur...
Un p'tit compteur, je vais y réfléchir.
Merci pour tes commentaires!
jp
26 févr. 2006 à 01:37
En suite selon les pièces ajoutées il se peut qu'il n'y ait pas de déplacement possible mais le jeu attend quand même que l'on clique sur le "pion" pour le déplacer (c'est peut être pas nécessaire)
Un petit compteur de point ou de coup serait le bien venu (où les deux)
Si non je me régale il est génial la grande classe quoi
@+
Cirec
25 févr. 2006 à 13:40
Comme toujours c'est beau, propre, avec une belle présentation c'est du grand art, forcement c'est du Debiars.
10/10 sans discuter
@+
Cirec