SPACE SHOOT [JEUX]

Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 - 26 août 2008 à 23:35
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 - 19 janv. 2009 à 21:11
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/47766-space-shoot-jeux

Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
19 janv. 2009 à 21:11
Oui mais je parle par exemple pour l'unite ThreadMouvement
(je n'aime pas trop les test pr savoir qu'est ce qu'il y a dans le vecteur de Sprite ... )

Au gameOver :
Le problème qu'il y a c'est que la souris reste invisible , il faut remedier à ce problème : moi j'utilise les raccourci (ctrl+n , ctrl+p et ctrl+q , c'est pour ca que je n'ai remarqué ca...)

Il faudrait que je reprenne ce source en main mais je n'ai pas le courage (d'autant plus que "le moteur 2d" est mauvais pr un jeux (trop de lague) )

Peut-être un portage sur openGL (je suis en train de me pencher dessus , entre 2 petites choses ^^ )
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 janv. 2009 à 19:21
"Tu serais me dire quoi exactement (le message d'erreur)"
en fait j'ai l'énorme pavé "GAME OVER" et là, il faut attendre un peu disons 20 sec avant d'atteindre le menu..
Bien sûr, tu ne le vois pas car toi tu gagnes à tous les coups ! lol
"c'est un réel foutoir pour s'y retrouver !"
non c'est pas si mal rangé que ça, il suffit de suivre les classes et on suit bien le raisonnement d'autant que tu as crée une unité séparée à chaque fois..

Les météorites sont un peu trop grosses.. du moins je ne choppe que les bigs.. sniff..

@+
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
19 janv. 2009 à 18:35
Ce que veut dire Cantador, c'est probablement la raison étendue de notre mort : tir ennemi, météorite, ou maladie à bord ?

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
19 janv. 2009 à 18:18
Quand on perd, ça plante ?
Je n'ai plus se soucis moi ?
Tu serais me dire quoi exactement (le message d'erreur)

"il faut faire alt tab pour avoir de nouveau le menu
on dirait un souci de fin de thread.. "-> je pige pas du tout :(

Quand tu meurs , y'a pas 36 raisons : fPower est < 0 tout simplement ;)

Sélection des lasers , oui et non vu qu'il faut les gagner en chopant les bonus...

De toutes manières, mon prochain gros jeux (maintenant je sais à quoi m'attendre) , je ne m'y prendrais plus du tout comme ça ...

Mal organisé, c'est un réel foutoir pour s'y retrouver !
Et si moi, l'auteur, j'ai déjà du mal, je n'ose imaginer les autres... surtout que le projet n'est pas si petit ... (enfin je trouve)

Pour la musique , y'a moyen de la régler facilement mais seulement dans le code(ça ne t' avance pas)

PlateauObj.pas :
// musique
procedure SetVolumeMusique(vol:integer);
// sons (lasers, explosions ... )
procedure SetSFXVolume(vol : integer);
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 janv. 2009 à 17:01
je n'ai toujours pas beaucoup de temps, mais j'ai jeté un oeil..
Tout semble bon, mais ça rame un peu effectivement..

Les tirs ne vont pas..pas assez rapides..
et puis quand on perd on ne sait pas pourquoi de sorte que on continue à faire les mêmes erreurs..
sinon quelques bricoles, mettre une sélection des lasers
par changement de cadre et/ou de couleur et mettre un seul bouton Ok.
la musique est arrachante..prévoir une modulation du volume
quand on perd le prog se plante..il faut faire alt tab pour avoir de nouveau le menu
on dirait un souci de fin de thread..
il faudrait aussi mettre quelque part en rappel (le ou les) choix sélectionnés..
Si j'ai le temps je regarderai à nouveau.
bon courage
@+
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
18 janv. 2009 à 23:15
je vais encore regarder avant..
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
18 janv. 2009 à 23:12
C'est bizarre que tu es 1 problème par rapport à ca ...
Sinon comment trouves tu le jeux , le code ?

Des idées d'amélioration ?

Ça ne rame pas de trop chez toi ?
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
18 janv. 2009 à 22:13
C'est ce que j'ai fait
"il faut que tu atteigne 1 certain score.."
ok, j'avais cru à un os..
merci.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
18 janv. 2009 à 19:24
C'est normal que tu n'a pas tt de suite les vaisseaux, il faut que tu atteigne 1 certain score avant qu'il n'apparaisse...

Explique moi le problème avec FMod?

Si tu veux avoir plus simple recopie le dossier FMod dans le dossier ou se trouve le Dpr (ou recopie le dossier FMod dans Lib et la dll dans Bin )
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
18 janv. 2009 à 15:17
Quelques soucis de démarrage avec fmod.dll..
j'ai beau mettre un lien ça passe pas..
je recopie tout FMOD dans le source et ça marche mais je n'ai que les météorites pas les vaisseaux spatiaux..

Je suis intéressé par ton programme..
Peux-tu y jeter un oeil ?
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
24 sept. 2008 à 20:34
Désolé pour l'énorme faute : Dans ThreadMouvement , Dans CentralControl , à la place de fPlateau.Refresh , mets fPlateau.Invalidate

Ca poussera peut être à faire une fonction éditer plutôt que de changer 3 fois par an le graphisme du site !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
24 sept. 2008 à 20:31
Salut ,

Dis bacterius , si cette source t'intéresse encore , tu peux tester quelque chose pour moi ?

Dans ThreadMouvement , Dans CentralControl , à la place de fPlateau.Refresh , mais fPlateau.Invalidate

Dans PlateauObj , Dans le Paint , retire inherited Paint

et Dis moi ce que ca provoque chez toi ... chez moi c'est la nuit et le jour !

Merci (j'ai intégrer ton idée mais ya encore des petits problèmes )
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 sept. 2008 à 20:43
Bonsoir,
écoute je vais te concocter une fonction qui remplit une image bitmap (TBitmap) avec un fond "cosmos", et je te laisserai l'intégrer ;) Je pense que les étoiles mouvantes ne sont pas une très bonne idée dans l'avancement actuel du jeu ...

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
16 sept. 2008 à 20:28
beurk je déteste le 16/9 ;)

Oui j'ai lu ton MP , je réfléchis à comment l'intégrer ...

le problème c'est que ce programme est lent , trop lent vu qu'il utilise les fonctions de bases pour dessiner (Tous est dessiner avec Draw ) et qui , de surcroit , n'est certainement pas très optimisé !
...
C'est bizarre que chez toi le fond en mozaique soit plus lent que l'image stretché... bon OK il y a plus de " Sprites " sur le Plateau quand c'est en mozaique mais on n'utilise plus stretchDraw (qui chez moi provoquais d'énorme ralentissement )

...
J'ai essayé quelque chose chez moi (si tu veux le tester ... je te donne l'idée je n'ai plus le code mais c'est pas dur )

J'ai crée une classe Star qui hérite de TObjMovable , je cree 3 types d'étoiles : petite, moyenne et grosse
(les petites vont vites , les grosses sont lentes ... je parle des étoiles , hein ^^)

Direction := 90;
Coord.Y = Random (MoveRect.Bottom)
Coord.X = Random (MoveREct.Right)
// tu les places partout sur l'écran

Dans le CheckOut
(que tu es obligé d'implementé vu que c'est une procedure abstraite dans TObjMovable)
tu dis que quand la coord.y > MoveRect.Bottom , tu remets Coord.y = MoveRect.Top
et tu applique un random sur Coord.x
(ca fait défiler les étoiles de Haut en Bas et quand elles arrivent en Bas elles repassent au Dessus avec une position en X changée , pour éviter la monotonie )

[Bon faut que tu charge une image <> pour chaque type et choisir une Transparence mais je pense que tu avais compris ^^ ]

dans Plateau

Stars : TObjectList ;
tu créé l'object star avec le constructor à True , tu le libère dans le Destroy dans le Load tu crée tes petites etoile

for i:= 0 to MES_ETOILES do begin
Stars.Add(TStar.Create ( le constructor que tu veux mais au moins Canvas et MoveRect ))

end;

Dans le OnPAint tu boucle sur le nombre d'etoile et tu dessine et dans le Thread idem sauf que tu fait sur le Progress (bien sur il faut avoir fait précédemment dans plateau : property VecteurEtoile blablabla ... )

Enfin tous ça pour dire que ça donnait pas grand chose et que le jeu était ralentit pour ... ben ... pas grand chose !

Voila pour la petite histoire (Au fait j'ai fait un peu les étoiles comme dans ton jeu Space Raider ... )

J'ai corrigé encore quelques beugs , je coderais encore 2 types de vaisseau (un qui se calque sur la position du joueur et qui shoot et un autre qui reste sur l'ecran tant qu'il est vivant en se calquant sur la position du joueur et qui le shoot (une sorte de mini-Boss ) , d'ailleurs si j'ai le tps et l'envie je ferais un mini-boss ;) )

Mais le jeu n'avancera plus bcp , l'école recommence et le tps libre disparait ...

Nico
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 sept. 2008 à 19:29
Bonjour,

1280x800 Nicolas ^^
C'est le minimum pour pouvoir y voir clair sur mon LCD.
Et c'est aussi le maximum supporté par ma carte graphique.
Bref, j'ai pas le choix ^^

Tu as lu mon MP ?

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
15 sept. 2008 à 23:33
Au fait , c'est quoi la résolution de ton Ecran ?
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
15 sept. 2008 à 21:19
si tu veux aussi reduire le nombre de mozaique , tu change la constante
DIMENSION_BACKGROUND , et tu modifie l'image Stars.bmp

(ex : Tu mets DIMENSION_BACKGROUND = 250 et tu te fait une nouvelle IMage Stars de 250x250 )

Voila
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
15 sept. 2008 à 21:16
non les vaisseaux sont des Vaisseaux ( c'est l'enforcer ) :)

pas eu de problème de collisions comme tu décris
et pour le fond mosaïque , chez moi y'avait moins de problèmes !

si tu chopes des collisions qd tu es loin des meteores c'est surement du au fait que ca plante et vu que le test de collision est dans le thread ...

Si tu veux réduire le plantage , tu peux mettre en commentaire le Background.Draw dans plateau ou tu reprend l'ancien que j'avais fait ...

je regarderai plus tard ton MP , je regarde un film ... un petit Seven ca fait du bien

Essaye de le coder avec mes classes ...

nico
(je mettrai dans la prochaine maj une option pour choisir le fond mozaique ou non )
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
15 sept. 2008 à 21:00
Les vaisseaux ennemis c'est les trucs ronds ?
Ils ne tirent pas (enfin je ne le vois pas), et je meurs avant d'être touché par quoi que ce soit (les météores sont à 100 parsecs ... pixels de moi, et blam je creve ... assez durs à péter ces météores, surtout en troupeau de 8 ...

Sinon, tu vas trouver ça marrant, mais je rame avec le fond mosaïque ... d'ailleurs je regrette un peu le fond complet ... pourquoi ne pas créer en code les étoiles, leur appliquer un petit halo, etc ...
Je t'envoie un MP avec une idée qui peut être bonne, pour le fond ...

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
15 sept. 2008 à 20:53
Ooohh je finis mon petit test de casse-tête et je teste :p
Ils ont une IA ? (genre si le vaisseau est dans sa verticale il l'allume)

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
15 sept. 2008 à 20:51
Voila la MAJ tant attendue , il y a des vaisseaux ennemis qui tire :)
(plus de detail -> Description )

Nico
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
15 sept. 2008 à 16:39
Non je ne ressens pas de ralentissement quelconque pendant le jeu, je suis sur un Intel Celeron M 1.5 GHz, avec 512 Mo RAM, et comme carte graphique, une Mobil Intel 915GM/GMS, 910 GML Express Chipset Family (infos tirées de mon logiciel systeminfo ;p).

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
13 sept. 2008 à 23:31
Voila , j'ai résolu le problème en procedant de la sorte :

...
BackGround : TObjectList;

(au Create du Plateau )
BackGround :=TObjectList.Create(True);

(Au Load)
var
sBackGround :TObjDrawable;
...
begin
...
// creation du backGround
jpg := TJpegImage.Create;
jpg.LoadFromFile(fAppDir+NAME_BACKGROUND);

// mon image de background fait 125x125

for x:=0 to (ClientWidth div 125) do begin
for y:=0 to (ClientHeight div 125) do begin
sBackGround := TObjDrawable.Create(Canvas,ClientRect);
with(sBackGround) do begin
Image.Assign(jpg);
Coord := Point(125*x,125*y);
Width := 125;
Height := 125;
end;
BackGround.Add(sBackGround) ;
end;
end;

Voila , ca resoud le problème décrit precedement ... Mais c'est vachement plus moche !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
13 sept. 2008 à 22:48
je viens d'essayer ma source sur une "vieille config" :
Amd Athlon Xp 1800+ , 512mb
carte graphique Radeon 9600 (bien qu'on s'en fout de la carte graphique ici je pense ... )
Et le jeu est ... injouable !

@ bactérius (vu que c'est le seul à essayer le jeu) : a tu des ralentissements horribles pendant le jeu , ou le jeu te semble t-il lent ?

Merci

Au fait je me suis rendu compte que ce qui fait fort ramer le jeu , c'est le dessin du background (le fait de le mettre sa propriété Stretch a True, je savais que StretchDraw ralentissait bcp la machine mais pas à ce point ...
je vais donc opter pour un BackGround divise en 4(ou autant d'image qu'il faut) à la place d'1 grande image "Stretcher" )

Ciao Nico ( MAJ Lundi )
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 20:47
Non je vais aller voir dès que j'ai fini ma fonction de comparaison d'images ... pas facile ...

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
10 sept. 2008 à 20:25
ok :)

mais bon à force de faire 50 milles test, je commence à devenir invincible à ce "jeu" ...

Je vais surement encore develloper quelques ennemi suplementaire pour rendre le jeu moins ch**** et puis je m'attaque au gameplay ...

Au fait tu a vu les petites bombes (cfr capture) une fois qu'on dépasse un certain score ?
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 20:20
Ok, pense aussi au niveau de difficulté ;) pour les petits joueurs comme moi :p

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
10 sept. 2008 à 19:47
les bonus disparaissent après un certain temps... c'est jusque quand tu "tue" une grosse météorite, il s'en crée 1 ... faut peut être voir de ce coté la

Bon pour Fmod , dsl g oublié la dll je change ça , en espérant que se sera la bonne ;)
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 19:34
Hmm interessant, surtout les bonus ça donne un ptit + au jeu :

Quelques remarques :

- je n'ai pas réussi a compiler FMod, (donc pas de DLL) et je me suis donc passé du son.

- et le niveau de difficulté on devrait pouvoir le fixer (pas trop difficile à mon avis, on change ton attaque et ta vie, et la résistance des météores), il est trop élevé (1 coup dans une petite météorite et t'es cramé avec le ... le ... le 2eme vaisseau).

- les bonus devraient se détruire (ou se déplacer) après un certain temps, car ça devient irréaliste après un moment ...

Sinon, très bon travail j'ai hâte de voir la suite :)

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 19:11
RPS : j'ai fait mieux : 2 sons et 2 musiques en 1,1 Mo sur le solitaire (statistiquement c'est mieux ... bon je sors).

RPS2 : ok, j'espère que le jeu sera fini à un moment, pour ne pas rester dans l'abandon et dans l'oubli comme pas mal de sources de delphifr (certaines des miennes aussi, je ne le cache pas ...).

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
10 sept. 2008 à 19:07
Voila, j'ai changé le zip, normalement plus de problème

PS : les sons sont pourris mais un zip <1mo c'est dur de faire mieux ;)

PS2 : je n'ai pas abandonné le jeu ... faut juste que je trouve le temps
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
10 sept. 2008 à 19:03
OptionGame.pas ? je pense que tu peux le retirer ... attends je regarde
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 18:46
Aah la il manque OptionGame.pas :p

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 18:45
Oh autant pour moi le FMod est dans le zip, je n'avais pas vu.

Désolé :p
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 18:43
Ohh ... FMod non trouvé ...
mais tu vas arranger ça Nicolas =)

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
10 sept. 2008 à 18:41
Ah ah je ne m'y attendais pas du tout !
Je vais voir direct.

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
10 sept. 2008 à 18:40
Voila, une belle mise à jour ...
Y'en aura encore et toujours , quand j'ai le temps de coder ...
En espérant que certaines personnes trouvent ça intéressant !

Nico
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
30 août 2008 à 21:28
Voila , grosse maj ...

Il y a de l'animation ! Bientot les ennemis seront animés ; il faut que je trouve de beaux sprites ...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 août 2008 à 16:30
Oups même temps ... si tu veux je m'occupe des effets spéciaux ...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 août 2008 à 16:29
Oui mais d'un autre côté utiliser un timer serait se tirer une balle dans le pied.

Je vais essayer de voir ce que je peux faire (je vais essayer d'implémenter des effets spéciaux ;) )

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
29 août 2008 à 16:28
sinon , si quelqu'un a une idée pour faire evoluer le tt et passer a des sprites animés ...
Mais pour le moment je me concentre sur les problèmes , et il y en a deja bcp de trop !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
29 août 2008 à 16:22
Magnifique plantage quand on sélectionne "non" pour continuer quand on a perdu ...

Je sais , c'est la libération qui pose problème ...

"Woah attention : il m'a dit que j'avais perdu alors que j'avais encore la gauge à 80%, et qu'il n'y avait aucun météore autour de moi. "

ca encore jamais vu

La version stable , ben j'essaye mais c trop galère ... je pense que c le thread qui fait vraiment chier !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 août 2008 à 16:17
Woah attention : il m'a dit que j'avais perdu alors que j'avais encore la gauge à 80%, et qu'il n'y avait aucun météore autour de moi.
Il faudrait faire aller les météores noirs, gros un peu plus vite, c'est tellement lent qu'on a le temps de tout nettoyer la zone avant qu'ils n'arrivent en bas ...
J'attends avec impatience la suite :) et une version stable (oui j'ai eu une violation d'accès juste quand j'ai perdu la seconde fois, pointée sur "if FEnabled then Exit" et un long commentaire ensuite)

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 août 2008 à 16:14
Magnifique plantage quand on sélectionne "non" pour continuer quand on a perdu ...

Sinon pas mal les 3 lasers.

J'ai remarqué des problèmes de cadrage du texte, sur le choix des vaisseaux.
Si tu n'arrives pas à les cadrer, utilises l'alignement "taCenter", tu pourras plus facilement les centrer ;)

Et y'a quelques de fautes d'orthographes mais ce n'est pas grave pour le moment :p

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
29 août 2008 à 16:10
Je vais regarder cela.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
29 août 2008 à 16:08
ajout commentaires
nettoyage du code (encore , et il y en aura encore ... )

Possibilité d'avoir plus d'un laser sur le Vaisseau
(j'en ai mis 3 par défaut pour l'exemple )

Il manque encore les bonus mais ca va pas tarder ...

La pause est de nouveau fonctionnel

j'ai tjs un problème quand je fait un Plateau.Free ...


Voila , des avis ? des corrections ?
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 17:59
Je viens de découvrir un beau beug : Dans la classe TObjDrawable

dans la procedure Draw , StretchDraw est à remplacer par ca

StretchDraw(Rect(fCoord.X,fCoord.Y,fCoord.X+fWidth,fCoord.Y+fHeight),fBitmap)

MAJ ce soir ...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 14:57
Ce jeu pourrait être bien parti pour devenir un beau jeu complet ;)
Si tu as besoin d'effets spéciaux vite fait tu peux utiliser mon unité graphique, ya de quoi faire, et c'est la source juste après la tienne ;)

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 14:55
Oui c'était juste un "to-do" ^^
Sinon la fonction éditer serait en effet très utile, ça m'éviterait de passer pour un "bétisier du site CS" (n'est ce pas Cavalier2400) en postant plein de messages car j'oublie beaucoup de choses ...

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 14:54
Oui essaye de faire une base stable, et tu pourras construire autour ensuite.

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 14:54
" Et pourquoi pas une interface très Warcraft pour choisir son vaisseau, 1 page par vaisseau, une image (ptet pas en 3D encore ...), avec ses capacités en vert, sur un fond noir, genre matrix ... bon je m'emballe là ... "

Je préfère d'abord m'attaquer au code , ensuite l'interface suivra ...

(PS :désolé double post mais la fonction "édité" serait vraiment très utile )
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 14:50
Mais pour ce qui est du nombre de météorites , tt cela est temporaire ...
Pour le moment elle me sert uniquement de " tests " ;
Quand la base sera meilleur , à on avis , je ferais des sortes de level ...

Sinon dans l'unité ThreadMouvement , tu à la constante MIN_ENNEMI , si tu la diminue a 10 voir 5 , tu vois clairement la différence ^^

Pour le moment j'ai encore de sale erreur , comme par exemple commence une nouvelle partie et après fais Quitter la partie , le plateau s'efface bien mais au moment de quitter l'application , ca gueule !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 14:45
Faut arrêter les hooks clavier ça te réussit pas ^^
En faisait ça oui ça marche, pour le vaisseau raptor, c'est bon. Mais ça pourrait être original de faire un vaisseau qui ne regénère pas la gauge d'attaque, mais qui en possède une très grande ? Et pourquoi pas une interface très Warcraft pour choisir son vaisseau, 1 page par vaisseau, une image (ptet pas en 3D encore ...), avec ses capacités en vert, sur un fond noir, genre matrix ... bon je m'emballe là ...
Sinon pour les météorites, je dois m'être mélangé les pinceaux avec les tirs continus, peut-être que j'ai pas vu que j'avais tiré 4 coups en même temps et ça m'a trompé ...

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 14:42
Bon je ne sais pas ce qui c'est passé , il y a un mot sur deux qui a foiré !

Je disais , pour le vaisseau raptor , tu dois mettre fVitesseRecupShoot:=3 dans le case , valeur vtRaptor .

La grosse météorite à pourtant une vie (Power) > à la météorite grise ...

Je regarde , je change
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 14:39
oui k'ai vu % Raptor , c aprce que dans VaisseauObj , dans le case g oublié de mettre un e valeur pour fVitesseRecupShoot , tu la met à 3 ...

% meteorite , la grosse a pourtant un Power plus élevé , 80 alors que les grises (medium) on 50 ...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 14:14
Aaah j'aime beaucoup le choix des 3 vaisseaux :)
Mais je ne sais pas si c'est fait exprès, mais le vaisseau Raptor (polyvalent) ne recharge pas sa jauge d'attaque ?
Peut-être y-a-t-il trop de météorites ?
Et les météorites noires bien grosses sont plus faciles à détruire que les météorites grises ... à corriger ;)
Je note pas, je voudrais voir jusqu'ou tu peux aller x)

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 14:10
^^
Ok, comme ça les collégiens qui sont en pause déjeuner peuvent faire une partie xD
Enfin remarque dans mon collège j'ai pas eu cette chance, le téléchargement était bloqué ... mais c'est rien pour un programmeur ;)

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 14:08
Pour ceux par exemple qui télécharge le zip ; regarde le code mais vu qu'ils n'ont pas delphi installer sur la machine , peuvent qd même essayé

Voilà ;)

donc oui , c'est le savoir mode belge ^^
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 13:21
"qui savent pas compiler" ... savent au sens de "pouvoir" comme les belges, ou qui ne savent savent vraiment pas compiler ?

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 13:15
parce que ainsi ceux qui savent pas compiler peuvent tester ... puis 800 kb avec l'adsl ... et si tu n'as pas l'adsl ben perdu !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
28 août 2008 à 13:06
Pourquoi tu mets l'executable dedans ?
Ca alourdit le zip ...

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
28 août 2008 à 13:00
l'executable est dedans , il faut renommer le .exeX en exe ;
Ce n'est qu'une première partie mais je n'ai plus le temps aujourd hui
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
27 août 2008 à 21:48
Mise à jour demain assez importante : [ cfr Forman ]

+ Explosion + GaugeShoot + Tir continu (si on maintient le bouton enfoncé ) + quelques autres petits trucs

Voila
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 août 2008 à 21:10
De rien ;)

Cordialement, Bacterius !
defis91 Messages postés 65 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 8 août 2011
27 août 2008 à 21:06
Merci beaucoup Bacterius, c'est la Unit que j'avais renommée et non le composant. Ca marche maintenant.
(Une fois)
La partie ne s'arrète pas à Power=0.
Sur la seconde partie la souris n'a plus d'action sur le vaisseau.
Les invaiders passe sous le plan étoilé..
Plan étoilé assez joli toutefois.
Nicolas ! on a l'eau à la bouche !
la suite... la suite...
Cordialement
Dom
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 août 2008 à 20:38
Et puis self se traduit par la fiche actuelle, donc tu remplaces "self" par le nom de la fiche.

Cordialement, Bacterius !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 août 2008 à 20:37
Ah non je n'ai eu aucun problème sur le thread ?
J'ai juste dû renommer tous les "Plateau" en "FPlateau" comme précisé ... mais aucun problème sur TThreadMouvement ...
J'aurais dû préciser : Delphi 6 Personal Edition

Cordialement, Bacterius !
defis91 Messages postés 65 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 8 août 2011
27 août 2008 à 20:15
à Bacterius,
>Et je confirme, ça compile sous Delphi 6, avec néanmoins une >petite erreur (faut changer 3-4 trucs),

Quels trucs svp (à part renommer l'unit tableau)
ThreadM := TThreadMouvement.Create(false,self);
génère une erreur à la compilation sur le self.
Merci par avance
Dom
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
27 août 2008 à 16:11
Ok merci Forman , je croyais que le overload passais De la classe mère vers la fille ...
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
27 août 2008 à 16:03
>Il vaut mieux utiliser override à la place de overload dans Create, en utilisant inherited.
>Bon on va pas trop se poser de questions, et on va dire que c'est une convention ...

Je ne suis pas d'accord. Ici overload ne sert strictement à rien puisque la classe TPlateau n'a qu'une seule méthode Create. Overload ne prend pas en compte les méthodes de la classe ancêtre, il faut seulement considérer les méthodes de la classe qu'on définit. Ici, il y a une seule méthode appelée Create donc overload ne fait rien (même si ce n'est pas une erreur de le mettre).

Reintroduce c'est pour indiquer au compilateur que tu souhaites ajouter une nouvelle méthode XXX à ta classe, et que l'ancêtre comporte déjà une méthode virtuelle appelée XXX. Ca sert à indiquer que pour les objets de cette nouvelle classe, la nouvelle méthode XXX, bien qu'elle porte le même nom, n'est pas une méthode héritée. Typiquement, c'est le cas de ta méthode TPlateau.Create: elle n'est pas héritée de TPaintBox.Create (d'ailleurs elle n'a pas le même nombre de paramètres).

Il n'est pas obligatoire d'utiliser reintroduce (en effet si on ne met rien par défaut les nouvelles méthodes de même nom ne sont pas héritées), ça évite seulement des warnings du compilateur, qui te signale que tu as peut-être oublié un override (puisqu'une méthode virtuelle du même nom existe chez les ancêtres).
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
27 août 2008 à 16:00
mouais , conventions d'écriture OK mais % à ca je ne pense pas !

Et puis j'aime savoir le pourquoi du comment du bidule ! Sur ce , je vais me renseigner ...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 août 2008 à 15:48
Override permet de réécrire la routine.
Overload permet de déclarer deux fois la même routine avec des paramètres (et des codes) différents.

"ce que je pige pas c pourquoi utilisé override à la place de overload si j'ajoute des choses dans mon Create de la classe fille puique c'estfaire une sorte de surcharge ..."

Il vaut mieux utiliser override à la place de overload dans Create, en utilisant inherited.
Bon on va pas trop se poser de questions, et on va dire que c'est une convention ...

Voilà ... ^^

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
27 août 2008 à 15:38
Attends ,

overload -> surcharge

function Somme (a,b : integer):integer;overload;
function Somme (a,b,c : integer):integer;overload;

override -> redéfinition

ce que je pige pas c pourquoi utilisé override à la place de overload si j'ajoute des choses dans mon Create de la classe fille puique c'estfaire une sorte de surcharge ...

reintroduce -> ? pas compris
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
27 août 2008 à 15:02
Au sujet de ma dernière remarque:
l'architecture des composants Delphi est telle que si un composant est créé avec un Owner donné (le paramètre donné dans le contructeur virtuel TComponent.Create) dès que cet Owner est détruit le composant fils est aussi détruit. Par conséquent il n'est pas utile de détruire manuellement ta variable Plateau (dans TForm1.OnDestroy) puisque l'objet étant créé avec Owner=Form1 il sera automatiquement détruit lorsque la Form1 l'est.

Toutefois ce que je viens d'écrire est vrai uniquement si tu as défini un destructeur avec override (et non pas overload, comme dans ton code) pour la classe TPlateau. En effet, les composants appellent la méthode dérivée de TComponent.Destroy pour la liste des composants dont ils sont l'Owner, or la tienne est une nouvelle méthode qui (même si certes elle utilise l'ancienne à la fin avec inherited) est considérée comme n'ayant rien à voir avec TComponent.Destroy par le compilateur, et donc ce sera le destructeur de l'ancêtre direct de TPlateau (celui de TPaintBox) qui sera exécuté.

En ce qui concerne le constructeur, si tu veux utiliser des paramètres différents du constructeur d'origine des composants (TComponent.Create(AOwner:TComponent)) il faut utiliser la directive "reintroduce", qui indique au compilateur que même si ta méthode a le même nom elle n'a rien à voir avec l'ancienne méthode virtuelle (ça enlèvera le warning). C'est une pratique tolérée à condition que tu ne souhaites pas enregistrer ton nouveau composant dans un package de design.

Une dernière remarque encore: la directive overload s'utilise uniquement si tu souhaites définir plusieurs méthodes du même nom avec un nombre de paramètres différents. Dans ton cas elle ne sert à rien pour TPlateau.Destroy.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
27 août 2008 à 14:36
Pas mal pas mal, juste un bug de redéclaration (tu appelles ton plateau "Plateau", alors qu'une unité s'appelle déjà comme cela, je l'ai renommée en FPlateau).
Sinon oui, c'est sympa à jouer, le code est bien, mais un peu vide disons ... il manque un truc ... les météorites sont disons trop "plats", et un petit effet genre l'ecran se secoue quand on se fait taper par un météorite, un petit bruit quand on tire ...
Mais tu l'avais précisé, cette source n'est pas complète.
Et je confirme, ça compile sous Delphi 6, avec néanmoins une petite erreur (faut changer 3-4 trucs), mais peut-être que Delphi 7 fait la distinction entre unité et variable, et que donc on peut les appeller pareil ^^, eventuellement tu peux t'inspirer de mon système d'étoiles sur ma source (que tu as gentiment citée), pour mettre un peu de mouvement dans le jeu, voilà.
Sinon bien sûr ce n'est pas original, mais c'est toujours sympatique à jouer, et simple à coder ;)

Cordialement, Bacterius !
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
27 août 2008 à 12:00
En ce qui concerne ta dernière question sur les warnings: ça signifie que tu as oublié "override" à la fin de la redéfinition de Create et Destroy dans la déclaration de la classe.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 août 2008 à 23:42
[Conseil] VaisseauObj.pas(45): La variable 'i' est déclarée mais jamais utilisée dans 'TVaisseau.Create'
[Conseil] VaisseauObj.pas(107): La variable 'i' est déclarée mais jamais utilisée dans 'TVaisseau.Shoot'
[Avertissement] Plateau.pas(29): La méthode 'Create' cache la méthode virtuelle du type de base 'TPaintBox'
[Avertissement] Plateau.pas(30): La méthode 'Destroy' cache la méthode virtuelle du type de base 'TGraphicControl'

bon les 2 premiers c 1 oubli de ma part mais les 2 suivants j'aimerais bien qu'on m'explique ce que ca signifie au juste et comment y remédier

Et n'ayez crainte , ça compile ...
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 août 2008 à 23:35
Si il y a maj ca sera sur les points suivants :

* Les météorites auront une vie (tiny plus petite vie , big plus grosse ) .

* Chaque type de laser infligera un dégât bien définit qui décrémentera la vie de l'objet touché

* Ajout d'une classe Explosion

Après on verra bien mais il y aura surement un nettoyage de code massif et beaucoup d'exemples rigoureux à suivre (enfin j'espère)
Rejoignez-nous