JEU SHOOT LE CANARD

Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 - 26 févr. 2009 à 01:26
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018 - 8 mars 2009 à 09:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49362-jeu-shoot-le-canard

Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
8 mars 2009 à 09:40
Pas de problème pour la fenêtre, je rectifie au cas par cas ;)

Ca existe encore le cobol ? J'ai pratiqué pendant 16 ans... alors courage.

Quelqu'un connaitrait-il le cri du lapin crétin ?
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
8 mars 2009 à 00:21
@francky : merci , ça fait plaisir ;)
je t'avoue que j'ai pas mal bossé pour rendre un truc pas trop mauvais comme jeux (ce qui est d'ailleurs est vachement dur !)
dommage pour les FPS , ton jeux doit être 1 peu lent ... tu peux tjs le faire tourner en réso plus petite (comme 640x480) , tu changes le SetSize dans la procedure Init ... en même temps , tout dépends du processeur, d'ailleurs c'est quoi le tiens ?

@ Debiars: j'ai toujours pas changé le prob % à la fenêtre , mais je suis en plein projet cobol , j'ai pas la tête à ça pour l'instant :( dommage !

Coin coin :)
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
7 mars 2009 à 20:15
@Cari : c'est pas un canard au whisky mais aux pruneaux lol.

@Nico : il y a eu un sacré boulot et le résultat est bleuffant. Coté code : Rien à redire à part te féliciter. Et en plus tu n'es pas avare de commentaire : allez hop 10/10.

Perso je plane à 35 FPS.

@Jean-Pierre : va avoir de la concurrence sur delphifr si ca continue ;). T'aurais du déposer un copyright ;).
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
3 mars 2009 à 10:57
Oups ... c'est 1 vieux bidule qui traine , je change ça quand je rentre ;)
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
3 mars 2009 à 08:51
Il faut modifier la procedure SetSize, car en cas de changement de résolution d'écran, la forme se trouve décalée, sa position étant calculée avec l'ancienne résolution...

procedure TDuckForm.SetSize(AWidth , AHeight : integer);
begin
Width := AWidth;
Height := AHeight;
+---------
| if (Screen.Width<>AWidth) or (Screen.Height<>AHeight) then begin
| sSaveWidthScreen:=Screen.Width;
| fSaveHeightScreen:=Screen.Height;
| ChangeResolution(AWidth,AHeight);
| end;
+-> Top := Screen.Height div 2 - Height div 2;
Left := Screen.Width div 2 - Width div 2;
end;

On peut aussi mettre Top et Left tout simplement à zéro puisque maintenant, la forme a toujours la même taille que l'écran...
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
2 mars 2009 à 18:01
j'avais essayé de travailler avec InvalidateRect mais j'ai vite abandonné (c'est pour devenir cinglé ce truc ... )

je ne sais pas si tu as testé ici mais je n'ai plus trop de problème
(et dans ce jeu , je n'utilise quasiment pas la transparence )

De toute façon tout ceci sera un jour en openGl ou DirectX, et la , plus question de ramer avec 65 FPS ;)
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
2 mars 2009 à 17:46
Il faut aussi savoir que la transparence ralentit considérablement.
Peut-être que les Regions Windows seraient une voie à explorer... Mais je ne suis pas sûr car j'ai jamais testé.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
2 mars 2009 à 16:24
Voila , j'ai eu une idée pour résoudre le problème de lenteur
j'ai affecter un bitmap à la procedure SetBackground (ce qui était prévu par ma lib), ce bitmap faisant la taille de votre écran ... donc plus de stretch , et c'est beaucoup plus rapide

je reste toujours au dessus de 60 FPS (62-63)
Le jeu est quand même plus marrant à cette vitesse...

Il y a un TopScore (c'était un petit cadeau :) )

NB : pour les tricheurs , il suffit d'éditer le fichier ini dans Media\Data\conf.ini ;)
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 févr. 2009 à 21:41
et en passant en 640x480 (si ton écran le permet vu que t'es en 16/9)?
As tu pris le dernier zip que j'ai posté ?

Malheureusement (en 1280x1024) moi aussi je stagne à 30 - 35 , dans le menu je suis à 49 ...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 févr. 2009 à 21:13
Moi, sans changer la résolution (chuis en 1280x800 dans le système), je stagne à 32-33 FPS. Héhé mon PC n'a rien à envier à celui de Débiars ^^.

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 févr. 2009 à 17:36
Il y a possibilité de passer en 640x480 au démarrage du jeu (c'est moins beau mais plus rapide )
Nico

(sur mon pc , en 640x480 , 65 FPS )
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
28 févr. 2009 à 12:00
FPS à 35 itou. Me demande pas pourquoi...
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 févr. 2009 à 09:11
@cari : pas de prob ;)

Personne n'a des problèmes de lenteur ?
J'aimerais bien connaitre vos FPS (F1 pdt le jeu )
Parce que j'ai fini le programme sur un autre ordi que le miens, et j'ai tjs 1 FPS>50 mais sur mon ordinateur , je tombe à 30, 35 !

Sur mon pc, j'ai découvert(et je le savais déjà) le problème : la fonction stretchdraw ralentit considérablement le jeu (cette fonction est utilisé pour dessiner le background )

C'est du à quoi ? l'affichage n'est pas géré par la carte graphique ici,si ?
c'est donc le processeur ? ou ce n'est pas si simple ?

Merci
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
28 févr. 2009 à 02:28
RECTIFICATIF !
Y'aura p'têt du canard dans les chevrotines...


PS: Pardon Nico :s
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
27 févr. 2009 à 10:14
Rigolez pas... j'ai dû passer le nombre de cartouche à 10 !
ca arrête pas de bouger, ces bestiaux là.

Quand à la recette du caviar au biscuit, pardon, du... comme y dit Matador, hips!, je... déjà donné.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
27 févr. 2009 à 09:52
@Caribensila:
Est-ce bien raisonnable de lui donner tout de suite la recette du canard au whisky ?
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
26 févr. 2009 à 21:39
AVIS A TOUS !

'va y avoir du canard à la chevrotine chez l'ami Debiars, dimanche...
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 20:58
Voila MAJ, je n'ai plus eu ce problème... il a fallu que je me trompe de zip en plus :(

Ça y est, tu pourras t'acharner dessus, il ne doit plus avoir de problèmes maintenant ;)
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 20:13
Bingo , je pense que c'est ça (ou alors c'est un parmi tant d'autres mais normalement résolut )

dans uDuck.Collide
if isCollide(uMain.fCursor) and (uMain.fCursor.KillShoot) then begin
//Cette ligne a ajouter if (fTypeAnimation DEAD_RIGHT) or (fTypeAnimation DEAD_LEFT) or (fTypeAnimation = FALLING) then exit;
...
end;
...
end;

ou faire un test si fTypeAnimation<>DEAD_RIGHT ... revient au même ...

Je pense que le problème est résolu de cette façon
(Veux tu bien tester avant que je fasse la MAJ , parce que je suis en internet bas débit et ma source fait presque 1mo , c'est une pure horreur ... )
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 20:03
Oui je viens de tester , c'est exactement ça ...
Il ne mérite quand même pas autant de haine ce pauvre canard !
Retirer dessus alors qu'il est déjà touché !
lol

En tout cas merci (ca explique prq je n'ai jamais eu ce problème) , je vais regarder au pourquoi du problème.
Je dirais que ca vient du TSpriteText mais pas sur (c'est la dernière chose que j'ai ajouté, sans réellement bien tester )
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
26 févr. 2009 à 19:50
Une piste : la violation d'accès seproduit quand je clique deux fois de suite sur le canard déjaà touché par le premier coup !?!?

lucky debiars qui clique plus vite que...
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
26 févr. 2009 à 17:34
File moi les liens en MP, je m'occupe de ça :]
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 17:33
@bacterius : dans uDuck
dans le constructeur :
remplace
SpritePtText := TSpriteText.Create('X000X',0,0,RGB(255,255,255));
par
SpritePtText := TSpriteText.Create('X000X',0,0,DEFAULT_TRANSPARENT_COLOR);
// sous Xp sur mon pc il n'y a pas de problème , mais ici sous Vista , j'ai des petits problèmes d'affichages avec cette technique, c'est pour ça que je ne l'ai pas mise dans le jeu ...

Je pige pas les erreurs , j'ai encore testé et je n'ai rien , mais à mon avis ça doit être SpriteEngine.clear qui pose problème
(libération d'objets qui sont utilisés...)

@JulioDelphi : Dsl ! faut-il aussi que je change le nom du projet ds le zip ?
Plusieurs remakes existent sur CS et ils portent les noms originaux...
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
26 févr. 2009 à 17:06
(Désolé j'ai dû renommer le jeu pour éviter un soucis de License avec Nintendo. Ton jeu s'apelle Shoot le canard et non plus D**K H**T qui est deja déposé.)
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 16:56
Une violation d'accès de temps en temps, peut-être écrire les miniscores (quand on shoot un canard, ya un petit libellé "40", "50" qui indique les points) en mode non opaque (le fond blanc dans le rectangle du texte, bon ...).

Cordialement, Bacterius !
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
26 févr. 2009 à 16:06
j'aime bien
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 15:39
moi je suis un grand jeune , ça m'amuse toujours autant ;)
c'est grave docteur ?!

Nico
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
26 févr. 2009 à 15:24
10/10
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
26 févr. 2009 à 15:21
ouf croisement de post..
c'est tout à fait ça Nicolas___
merci pour l'explication mais
cela n'affecte en rien les canards !
c'est très amusant surtout pour les plus jeunes
bravo !
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
26 févr. 2009 à 15:15
A l'ouverture un point d'arrêt sur le TSpriteXY.Create donne AVitesse = 1..
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 15:05
@ cantador : ok , je pense que je viens de comprendre ce que tu me demande ...

dans uSpriteXY (j'avoue , cette classe à été fait à la va vite, qqun voulait un menu mouvant et pas une bette image )

les constructeurs qui s'appellent ici ne sert à rien !

tu as remarqué , dans le 2 ème constructeur , j'appelle le premier puis je répète une portion de code existant dans le premier pour que ça fonctionne (ce qui est très nul )

Dans ce cas , j'aurais encore mieux faire de faire 2 constructeurs bien distincts

C'est parce que après je fais ça (ds le 2ème) , que ça fonctionne :
fVitesse := AVitesse;
SetDeplacement(ATypeDeplacement);

est ce que j'ai plus ou moins compris ce que tu voulais ?
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 14:52
@ cantador , croisement de post ;)

euh... a moins que je sois fou , je vois bien 8 paramètres de transmis... sinon Speed:=5 quand on n'utilise pas AVitesse
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 14:49
oui c'est vrai que ça va fort ! j'ai plus fait gaffe parce que je testais en mute ...ou je mettais très bas le son !

Pour résoudre ça , tu peux placer dans l'init
SpriteEngine.BASS.VolumeStream := 100; //valeur de 0->1000

Bizarre les erreurs ... pr une fois j'étais content, j'en avais encore pas eu !
en même temps j'ai pas D7 ici...
Tu peux me dire quand ça se produit (ma sœur y a joué 1/2h et no problems)

Si tu as des remarques vis à vis du code , ou du jeu , elles sont les bienvenues ;)
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
26 févr. 2009 à 14:48
pas de souci tout compile..
juste un truc que je pige pas :
sur le Oncreate il passe sur :
// ajout de l'image du menu
Choix := TSpriteXY.Create(OPTION_GFX, OPTION_WIDTH, OPTION_HEIGHT, tHORIZONTAL, SpriteEngine.ClientRect.Right div 2 - OPTION_WIDTH, SpriteEngine.ClientRect.Bottom - OPTION_HEIGHT - OPTION_HEIGHT div 4, OPTION_WIDTH, 1);

et il se branche sur :
constructor TSpriteXY.Create(AFileName: string; Width, Height: integer; ATypeDeplacement: TTypeDeplacement; X: Integer; Y: Integer; ADelta: Integer; AVitesse: Integer);

Comment fait-il pour trouver la valeur de Avitesse puisqu'à ce moment là 7 paramètres sont transmis et pas 8 ?
et il ne passe pas avant sur l'autre create à 7 params ?
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
26 févr. 2009 à 14:07
Pas de problème, je compile sous Delphi 7.
Mais la musique...quelle violence!!!
De temps en temps un bug type violation à l'adresse untel...
Mon p'tit fils va se régaler !

Cordialement :)
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 13:00
Est ce que quelqu'un peut me confirmer que le projet compile ?
Merci
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 01:52
voila , ca devrait fonctionné maintenant , sinon je regarderais à ca demain , suis crevé !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 01:41
a mon avis , c'est le fichier dpr qui ne sait pas bien fait (vu que moi je copie dans le dossier LIB de borland , attend je regarde a ca ... j'ai pas l'habitude avec Turbo delphi (d'ailleurs j'aime pas de trop ! )

copie le dans lib en attendant , je resous ce problème

(que de commentaires après si peu de temps ! désolé mais 'vous jure , il compile ! )
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 01:35
avis au modo du site , je ne sais pas c quoi le dossier _history dans mon zip

edit : dossier caché de turbo delphi a mon avis ... je vire

@ bacterius : il fait lire la description avant de râler ;) lol
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 01:31
Ca ne marche tjrs pas, il ne reconnait pas TBassStream ...

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 01:29
Ah ok, je vais voir tout ça.

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 01:27
si uSprite est dans le dossier LIB ... si tu prends celui de l'ancienne source , ca ne compilera pas !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 01:26
T'as pas mis uSprite : pas grave je vais le pomper sur ta précédente source.
Je teste et je te dis.

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 01:26
Pourquoi mon code est desactivé ?
les sprites sont telechargés sur internet !
Rejoignez-nous