Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 220 612

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Tuto Shoot sous hollywood

Tuto Shoot sous hollywood#1495

6Contributeur(s)
artblinksinisruszzd10hYesCopTarzinLio
3 Modérateur(s)
K-LElwoodcorto
artblink artblinkicon_post
Bonjour,

Voici un tuto Hollywood que j'ai créé, vous en pensez quoi?

Merci

A+



/*
************************************************************
**
**?Created?by:?CodeBench?0.23?(17.09.2011)
**
**?Project:?Routine?de?Tir?Sous?Hollywood
**
**?File:?Tir.hws
**
**?Date:?12-02-2012?12:29:40
**
************************************************************
*/
;?C'est?important?de?bien?préparer?un?script
;?Voici?donc?l'une?des?façon?de?bien?identifié?son?programme
@VERSION?5,0?;?Version?d'hollywood?minimum?à?avoir
@APPTITLE?"Shoot?Test"?;?Titre?du?programme
@APPAUTHOR?"ArtBlink"?;?Auteur?du?programme...?Moi?;-)
@APPVERSION?"$VER?:?0.1"?;?Numéro?de?version,?pour?craner?j'en?ai?mis?une?:-P
@APPDESCRIPTION?"Routine?qui?peut?être?utilisé?dans?vos?propres?jeux"?;?tout?est?dit
;?Attention,?le?code?à?proprement?parler?commence
;?On?créer?un?écran,?sur?la?fenêtre?sera?écrit?se?que?l'on?indique?dans?Title?=?"Bla?Bla"
;?Width?=?Largeur?de?la?fenêtre?et?Height?=?La?hauteur?de?la?fenêtre
;?On?peut?ouvrir?un?écran?UNIQUE?en?full?screen?ou?plusieurs?fenêtre,?tout?dépend
;?de?se?que?l'on?recherche
@DISPLAY?{Title?=?"Shoot?Test?-?ArtBlink?-?Utilisé?cette?routine?pour?vos?futures?Jeux?;-)",?Width?=?640,?Height?=?480}
;?Je?créé?mes?propres?sprites,?ou?plutôt?des?Brush?(Brosses?comme?sous?DPaint)
;?Je?préfère?les?Brosses?qui?permettent?plus?de?liberté,?un?meilleur?moteur
;?de?rendu?et?une?plus?grande?vitesse?d'affichage?surtout?depuis?l'insertion
;?dans?Hollywood?d'un?Moteur?DoubleBuffer?en?Hardware...
;?SetFillStyle?défini?le?type?de?remplissage?de?mes?formes?vectorielles
;?que?je?vais?tracer?dans?les?Brosses?(Brush)
SetFillStyle(#FILLCOLOR)?;?#FILLCOLOR?=?Remplissage?par?une?couleur?(Unie,?pas?d'effet)
;?Ici,?je?créé?la?Brosse?1?qui?est?le?triangle?Bleu?=?le?vaisseau
CreateBrush(1,32,32,$000000,{HardWare=True})
;?Createbrush?créé?une?forme?rectangulaire?ou?un?carré
;?Ici?je?créé?un?carré?de?32x32?pixel?de?couleur?noir?et?je?le?sauvegarde
;?directement?dans?la?mémoire?GFX?(plus?rapide)
;?Pour?sauvegarder?ma?Brosse,?j'utilise?l'item?{Hardware=True}
;?Pour?les?couleurs,?c'est?du?RVB,?un?code?hexadécimale,?le?$?est?important
SelectBrush(1)
;?SelectBrush?me?permet?d'ouvrir?ma?brosse?pour?y?faire?n'importe?quelle?modification
;?N'oublier?pas?que?pour?l'instant,?j'ai?une?brosse?qui?est?de?la?forme?:
;?Carré?Noir?de?32x32?pixels,?plutôt?sommaire?le?vaisseau?;-)
;?Donc?j'ouvre?ma?brosse?pour?y?ajouter?un?triangle?Bleu
Polygon(0,0,{0,32,16,0,32,32},3,$0000ff)
;?Ah!?une?commande?de?traçage,?polygon?est?une?commande?qui?permet?de?tracer
;?autant?de?droite?que?l'on?veut
;?ATTENTION?:?Polygon?reliera?toujours?la?première?coordonnée?à?la?dernière?par?un?trait
EndSelect
;?Je?referme?ma?Brosse?1?pour?ne?plus?y?faire?de?modification
;
;?Ici,?la?Brosse?2?qui?est?le?triangle?vert?=?Missile
CreateBrush(2,16,16,$000000,{HardWare=True})
SelectBrush(2)
Polygon(0,0,{0,16,8,0,16,16},3,$00FF00)
EndSelect
;?C'est?la?même?chose?qu'avec?la?création?de?la?Brosse?Vaisseau
;?Evidemment,?on?peut?remplacer?facilement?mes?Brosses...?euh...?pas?belles
;?Par?de?belle?Images?Bmp,Iff,etc...?avec?la?commande?LoadBrush?tout?en?gardant?en?tête
;?de?rajouter?l'item?{Hardware=True},?sinon?pas?d'accélération?2D
;
;?Je?dois?finaliser?mes?2?brosses,?et?pour?cela,?je?dois?enlever?le?fond?de?la?brosse,
;?C'est?à?dire?la?couleur?Noir,?seul?le?triangle?Bleu?dois?être?visible,?important?si?vous
;?Mettez?une?image?de?fond?;-)
;
;?Une?boucle?de?2?car?j'ai?2?Brosses
For?I=1?To?2
????;?Je?configure?la?couleur?Noir?comme?une?couleur?Transparente?donc?invisible?;-)
????SetBrushTransparency(I,$000000)
Next
;---------------------
;-??variable?globale?-
;---------------------
;
;?Ces?variables?sont?quasi?inutile,?mais?efficace?pour?comprendre?le?script
;?on?peut?facilement?transformer?ces?variables?globales?en?locale?et?ainsi
;?faire?gagner?ENORMEMENT?de?temps?au?script?et?donc?accélérer?le?rendu
;?grâce?a?cette?otpimisation,?on?pourrait?rajouter?bien?plus?d'ennemis?ou?d'effets
;?à?l'écran
;
;?Largeur?d'écran?du?jeux?(Peut?être?plus?petit?que?la?Taille?de?l'écran?ou?fenêtre
;?Principale,?ici,?j'ai?prix?la?taille?de?la?résolution
LargeurDEcran=640
HauteurDEcran=480
;
;?===?Variable?pour?le?vaisseau?===
;
;?Position?de?départ?en?X?du?Triangle?Bleu?=?Vaisseau
XTriangleBleu=320
;?Position?de?départ?en?Y?du?Triangle?Bleu?=?Vaisseau
YTriangleBleu=420
;?Vitesse?de?déplacement?du?Triangle?Bleu?=?Vaisseau?(4?pixels?par?4?pixels)
VitesseDuTriangleBleu=4
;
;?===?Variable?pour?les?Missiles?===
;
;?Nombre?maximum?de?missile?visible?à?l'écran
NombreDeTirMaxiSurLEcran=4
;?Hauteur?maximum?du?missile?=?après?c'est?effacement?de?la?Brosses?missiles
;?On?créé?une?frontière?car?si?on?ne?touche?pas?d'ennemis,?celui?ci?ne?sera?jamais
;?initialisé?et?il?n'arrêtera?pas?de?monter?jusqu'a?-l'infinie
;?Ici?je?définie?100?pixels?à?partir?du?haut?de?l'écran
HauteurMaxiDuTir=100
;?Vitesse?de?déplacement?des?missiles?(2?pixels?par?2?pixels)
VitesseDuTir=2
;?J'initialise?le?numéro?de?missile
NumeroDeMissile=0
;?Et?ici?le?temps?entre?chaque?tir,?sinon,?si?on?reste?appuyé?sur?la?barre?espace,
;?les?missiles?partiraient?quasi?tous?en?même?temps
TempDeRechargement=25
;
;?===?Tables?pour?les?Missiles?===
;
;?On?initialise?3?tables,?pourquoi?je?n'ai?pas?fait?une?table?avec?3?types?de?données?
;?Eh!?Oh!?c'est?qui?qui?code?
;?Oui,?j'aurai?pu,?mais?j'ai?pas?voulu,?car?le?code?aurait?était?pas?très?facile?à
;?comprendre,?rien?ne?vous?empêche?de?faire?une?seule?table?à?3?dimensions,?mais?attention
;?3?tables,?en?accès,?c'est?plus?rapide?qu'une?table?à?3?dimensions...?et?oui,?et?l'optimisation
;?Alors??un?
;
;?Table?1?:?Pour?le?numéro?des?Missiles
NumeroDuMissile={}
;?J'initialise?car?une?table?initialisée?est?une?table?plus?rapide?;-)
For?NombreDeTirSurLEcran=0?To?NombreDeTirMaxiSurLEcran-1?Do?NumeroDuMissile[NombreDeTirSurLEcran]=0
;?Table?2?:?Pour?la?coordonnée?en?X?des?missiles
MissileEnX={}
;?J'initialise?car?une?table?initialisée?est?une?table?plus?rapide?;-)
For?NombreDeTirSurLEcran=0?To?NombreDeTirMaxiSurLEcran-1?Do?MissileEnX[NombreDeTirSurLEcran]=0
;?Table?3?:?Pour?la?coordonnée?en?Y?des?missiles
MissileEnY={}
;?J'initialise?car?une?table?initialisée?est?une?table?plus?rapide?;-)
For?NombreDeTirSurLEcran=0?To?NombreDeTirMaxiSurLEcran-1?Do?MissileEnY[NombreDeTirSurLEcran]=YTriangleBleu
;?Pourquoi?j'utilise?NombreDeTirMaxiSurLEcran-1?pour?faire?la?boucle?
;?Si?je?dit?que?je?veux?4?missiles,?tous?le?monde?compte?comme?sa:
;?1,2,3?et?4
;?Or,?les?tables?commencent?à?0?donc?les?tables?se?présentent?comme?cela?:
;?0,1,2?et?3?=>?donc?c'est?4-1=3?pour?avoir?4?missiles
;?Voici?un?petit?schéma?de?mes?tables
;
;?????????????????Table?1??????? ???Table??2??? ????Table??3
;?????????????NumeroDuMissile?????MissileEnX?????MissileEnY
;?Ligne?[0]??????????0?????????? ?????? 0??????????? ???0
;?Ligne?[1]??????????0???????? ?????? ?0??????????? ???0
;?Ligne?[2]??????????0????????????? ?? ?0????????????? ?0
;?Ligne?[3]??????????0???????????????? 0???????? ??? ???0
;
;?J'espère?que?se?schéma?vous?fais?comprendre?un?peu?mieux?le?système?que?je?met?en?place
;
;?-?Fonction?principale?que?je?Boucle?à?l'infinie?-
;
Function?Tir()
;?Impératif?et?de?suite?;-)
;?Je?flip?l'écran
Flip(True)
;?et?je?l'efface
Cls
;?------------------------------------------------------------------------
;?Hors?Tuto
Box?(0,YtriangleBleu+32,LargeurDEcran,HauteurDEcran-YTriangleBleu,$226622)
Box?(0,0,LargeurDEcran,YtriangleBleu+32,$000044)
TextOut?(0,0,"Appuyez?sur?Flèche?gauche?pour?aller?à?gauche")
TextOut?(0,10,"Appuyez?sur?Flèche?Droite?pour?aller?à?Droite")
TextOut?(0,20,"Appuyez?sur?Barre?espace?pour?Tirer")
TextOut?(0,30,"Appuyez?sur?Ctrl+C?pour?QUITTER")
;?Fin?Hors?Tuto
;?------------------------------------------------------------------------
;?Maitenant?sa?commence?:
;
;?Et?hop,?je?met?en?route?mon?compteur?qui?défini?l'intervalle?entre?chaque?tir
TempDeRechargement=TempDeRechargement-1
;?Evidement,?si?celui-ci?descend?en?dessous?de?0,?je?le?bloque?à?0?sinon,?ma?routine
;?ne?se?validerait?jamais?du?fait?que?je?test?si?TempDeRechargement=0?alors?je?valide
;?un?tir,?voir?la?commande?suivante
If?TempDeRechargement<0?Then?TempDeRechargement=0
;?Ici,?c'est?assez?simple?à?comprendre,?je?test?les?touches?du?clavier?:
Local?Tir=IsKeyDown("SPACE")
Local?Droite=IsKeyDown("RIGHT")
Local?Gauche=IsKeyDown("LEFT")

If?Droite=True?Then?XTriangleBleu=XTriangleBleu+VitesseDuTriangleBleu
;?Je?bloque?le?Triangle?Bleu?(Vaisseau)?au?bord?droit?de?l'écran?si?je?suis?au?bout?de?celui-ci
If?XTriangleBleu>LargeurDEcran?Then?XTriangleBleu=LargeurDEcran

If?Gauche=True?Then?XTriangleBleu=XTriangleBleu-VitesseDuTriangleBleu
;?Je?bloque?le?Triangle?Bleu?(Vaisseau)?au?bord?gauche?de?l'écran?si?je?suis?au?bout?de?celui-ci
If?XTriangleBleu<0?Then?XTriangleBleu=0
;
;?-?Test?du?tir?-
;
If?TempDeRechargement=0
????If?Tir=True?;?Si?j'appuie?sur?espace
????????;?Je?fais?une?boucle?pour?tester?la?table?MissileEnY
????????For?Local?ValiderUnTir=0?To?NombreDeTirMaxiSurLEcran-1
????????????;?Si?dans?la?ligne?de?la?table?numéro?ValiderUnTir?=?YTriangleBleu,?sa?veux?dire
????????????;?que?le?missile?ne?bouge?pas,?c'est?qu'il?est?donc?activable?pour?un?tir
????????????If?MissileEnY[ValiderUnTir]=?YTriangleBleu
????????????????NumeroDuMissile[ValiderUnTir]=1
????????????????;?J'utilise?la?table?MissileEnX?pour?garder?la?position?en?X?du?vaisseau,?la
????????????????;?ou?le?missile?dois?partir,?SI?je?n'utilisai?pas?cette?table,?les?missiles
????????????????;?suiverai?mon?vaisseau,?se?qui?serait?ridicule.
????????????????MissileEnX[ValiderUnTir]=XTriangleBleu
????????????????;?Dès?que?je?trouve?un?Missile?activable,?je?casse?la?boucle

????????????????Break
????????????EndIf
????????Next

EndIf
????;?Comme?j'ai?valider?le?tir,?je?remet?le?compteur?à?25
????TempDeRechargement=25
EndIf
;
;?Ah!?Enfin,?l'affichage?des?missiles
;
;?Je?boucle?pour?visualiser?dans?ma?table?NumeroDuMissile,?lesquels?sont?activés
;
For?Local?Tir=0?To?NombreDeTirMaxiSurLEcran-1
????;?SI?dans?la?table?NumeroDuMissile?la?ligne?Tir?=?1,?cela?veut?dire?que?le?missile?Tir?est
????;?lancé
????If?NumeroDuMissile[Tir]=1
????????;?Comme?ils?sont?lancés,?il?faut?décompter?pour?que?ceux-ci?montent?jusqu'en?haut?de?l'écran
????????MissileEnY[Tir]=MissileEnY[Tir]-VitesseDuTir
????????;?Si?les?missiles?atteignent?la?limite?de?la?hauteur?alors?ceux-ci?sont?initialisés
????????If?MissileEnY[Tir]????????????NumeroDuMissile[Tir]=0?;?hop,?le?missile?numéro?Tir?est?désactivé
????????????MissileEnY[Tir]=?YTriangleBleu?;?Hop,?on?initialise?le?point?de?départ?de?ce?même?missile
????????EndIf
????????;?Remarque?:?Lors?d'une?collision?avec?un?ennemies?ou?un?mur?ou?peux?importe,?la?méthode?est?la?même
????????;????????????qu'au?dessus.
????;?Pour?éviter?de?petits?bugs?graphiques,?on?affiche?le?missile?que?si?sa?coordonnées?en?Y?est?strictement
????;?INFERIEUR?à?la?coordonnée?en?Y?du?triangle?bleu
????If?MissileEnY[Tir]EndIf
Next
;?On?affiche?le?Vaisseau?(Triangle?Bleu)
DisplayBrush?(1,XTriangleBleu,YTriangleBleu?,{AnchorX=0.5,AnchorY=0});?Hyper?important,?on?contrôle?le?vaisseau?depuit?son?centre
EndFunction
;?On?lance?le?moteur?de?rendue?DoubleBuffer?en?Hardware
BeginDoubleBuffer(True)
;?Un?interval?de?temps?entre?chaque?image?bloqué?a?50?FPS?maxi
SetInterval(1,?Tir,?20)
;?Et?la?boucle?infinie?classique?de?Hollywood,?sinon?le?programme?s'arrête?après?la?première?image
Repeat
????WaitEvent
Forever



Poster du code, c'est pas évident, mais bon...

Voici le résultat :

l'Exe AOS :
http://jeannoel.roueste.free.fr/TirTuto.exe
Le Script Hollywood :
http://jeannoel.roueste.free.fr/Tir.hws


Message édité par : artblink / 13-03-2013 01:15
sinisrus sinisrusicon_post
c'est cool :-) faudrait que je pense y m'y mettre. un jour peut être
--
Coin coin... amitheme.amiga-ng.org
Sam460 1,15Ghz - OS4.1FE - Radeon Saphir HD7750 R7 250E - 2Go de ram
zzd10h zzd10hicon_post
Sympa,
c'est pour quand ton Art-Invader ?
artblink artblinkicon_post
@Sinisrus: Si tu as Hollywood rejoins nous, il y a Tarzin, moi et Steff28xxxx (je sais plus), on essai de finaliser un jeu, mais l'IA est un peut trop chiader et casse pied a réaliser, une quatième tête, c'est des idées en plus et surtout, JE CHERCHE UN GRAPHISTE PURE AMIGA, pas un de ceux qui nous font des grafs en vecto sa m'énerve lol

@Zzd10h: Oula, je fais des routines, je les posts sous forme de Tuto pour aider et après on verra, j'aimerais bien faire plein de jeux, mais pas de graphiste et pas de musicien donc... c'est po évident et si c'est pour sortir du DP que les gens vont lancé une fois car c'est nouveau mais qui efface le jeux parcequ'il est nul (visuel et sonore) se serais dommage. Bref, je continue mon code et je m'éclate comme un gosse ;-)

Dites moi si vous comprenez le tuto, c'est sa le plus important car j'ai toujours du mal a m'expliquer (pour un travailleur sociale c'est pas top mais bon, j'arrive a me faire comprendre a mes petits gars/filles)

J'attend vos impression (n'utiliser pas trop de papier ;-) )
YesCop YesCopicon_post
ArtBlink,
merci de partager des connaissances.
J'ai quelques remarques sur ton code.
Puisque c'est un tuto, je te conseillerai avant d'afficher le source de décrire succintement chaque fonction que tu crées. Ainsi lors de la lecture, lorsqu'on lit le nom de la fonction, on sait à quoi elle sert.
Ensuite, pour une meilleure lecture, tu devrais décaler le code par rapport aux commentaires.
Ainsi si on veut lire en diagonale pour avoir une idée du comment on utilise Hollywood, on peut lire juste le code et ainsi avoir une meilleure vision de la structure de ton programme.

Je ne suis pas assistant social mais j'espère avoir été clair.
sinisrus sinisrusicon_post
Artblink : je n'ai pas hollywood en plus j'ai pris un nouvelle emploi apres 1 ans de chomage et j'ai beacoup à apprendre (joomla2.5 virtuemart2) je suis novice alors c'est chaud

Je suis graphiste je sais que tu cherche quelu'un mais je n'ai pas le temps malheureusement j'ai déjà pas mal de projet perso (RxMui) en stand by. par contre si tu as besoin d'un ptit visuel, icon y a pas de problème.
--
Coin coin... amitheme.amiga-ng.org
Sam460 1,15Ghz - OS4.1FE - Radeon Saphir HD7750 R7 250E - 2Go de ram
Tarzin Tarzinicon_post
"il y a Tarzin,"
Heu, clairement, il faut que je m'y remette.
J'avoue avoir lâché (par manque de temps) quelque peu.

Je continue de chercher tout ce que je peux trouver pour mettre dans notre DropBox.
Ca servira tôt ou tard. ;-)

Pour le graphiste, as-tu contacté Anarkhya (forum AmiGame)?
---
A500/A600/A1200/SAM 440 OS4.1 FE upd1/WinUAE AmliKit/Amiga Forever
https://twitter.com/TarzinCDK
artblink artblinkicon_post
@tarzin: La source est su Dropbox/hollywood/2D/Tir.hws

Moi j'ai plus de temps maintenant.. hihi..

@Sinisrus: Pas grave, tu verra sa plus tard, pour l'icones, merc ;-) (si je fini quelque chose)

@Yescop: Ok, je vois comment modifier... J'aimerais bien faire un site Holly en FR, mais bon, d'abord le code ;-)
Au prochain tuto, je pense que je serai pas mal ;-)
Message édité par : Creols / 13-03-2013 14:53
Lio Lioicon_post
fonctionne ici mais 2.9Mo ???

le tir n est pas très rapide et si je reste appuyé sur la barre espace et que je fais des allers retours, le tir s arrete parfois durant un aller ou un retour. est ce normal ?
A1G4/Radeon9000PRO/1Go RAM; X5000/RadeonR7-250x/2Go RAM; AOS4.1FE
artblink artblinkicon_post
2.9 Mo, c'est normal, l'interpréteur hollywood est enregistré avec le code, on peut rien y faire, un exe hollywood fera toujours au minimum environ 3 Mo.

La vitesse du tir est paramétrable dans le code ainsi que la vitesse du vaisseau, le nombre de missile, l'intervalle de temps entre chaque missiles ;-)

C'est normal que le tir s'arrête, il faut jouer avec le code ;-)
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme