Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Un exemple de gestion d'un sprite vaisseau avec panoramic | |
| | Auteur | Message |
---|
dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Un exemple de gestion d'un sprite vaisseau avec panoramic Sam 13 Nov 2010 - 3:57 | |
| C'est la premiere fois que je fais un programme avec panoramic alors autant que je le teste pour quelque chose qui me plait, comme l'espace et les vaisseaux Voici donc un exemple de ce que j'ai pu sortir, je suis débutant en panoramic alors s'il y a des améliorations dans la façon d'écrire le code je suis preneur Si je l'ai commenté autant c'est juste pour servir d'exemple aux vrais débutants qui découvrent la programmation. - Code:
-
' Exemple de gestion d'un vaisseau ' Cet exemple s'affiche en 800 x 600, agrandissez la fenetre pour bien le voir si besoin. ' Touches de déplacement clavier pour jouer et espace pour quitter. REM Cest mon premier test de panoramic ;)
' --------- définition du nom des routines de gestion du déplacement --------- label gauche label droite label bas label haut
' ------- déclaration des variables de déplacement du vaisseau --------- Dim x,y
' Positionnement du vaisseau au centre d'écran (800 x 600) x=400 y=300
' Création de la scene 2D où va s'afficher le vaisseau scene2D 1
' Dimentionnement de la scène à 800x600 pixels width 1,800 height 1,600
' Chargement de l'image de fond (un espace étoilé) file_load 1,"stars.bmp" : rem image de fond espace étoilé
' agrandissement de mon image de fond qui était plus petite. stretch_on 1
' Création du vaisseau numéro 1 sprite 1
' Chargement de l'image du vaisseau sprite_file_load 1,"vaisseau_d.bmp"
' Début de la boucle de gestion des touches du clavier. ' La boucle se terminera dés que la touche ESC (echap) sera pressée (scancode 27) while scancode<>27 if scancode=37 then gosub gauche : rem fleche gauche if scancode=39 then gosub droite : rem fleche droite if scancode=40 then gosub bas : rem fleche bas if scancode=38 then gosub haut : rem fleche haut
' Mise à jour de la position du vaisseau sprite_x_position 1,x sprite_y_position 1,y
' Fin de la boucle de gestion des touches. end_while
' fin du programme, effacement en mémoire. terminate end
' Routine qui modifie la position X vers la gauche du vaisseau. ' Charge aussi l'image du vaisseau le représentant dirigé vers la gauche. gauche: sprite_file_load 1,"vaisseau_g.bmp" : rem image vaisseau vers la gauche x=x-1
' On s'assure que la position X reste dans le cadre. if x<0 then x=0
' Fin de la routine, les autres ne sont pas commentée, c'est même chose. return
droite: sprite_file_load 1,"vaisseau_d.bmp" : rem image vaisseau vers la droite x=x+1 if x>768 then x=768 return
bas: y=y+1 if y>568 then y=568 return
haut: y=y-1 if y<0 then y=0 return
Pour les images du vaisseau, vue de gauche et vue de droite, un petit coup du logiciel "paint" de windows et vous ferez deux petites images en 32x32 pixels (quelques traits, juste pour tester) il faut que le fond de l'image soit noir, donc dessinez le vaisseau avec une couleur de contour différente du noir. Il faut que les images soient dans le dossier de panoramic (pour l'exemple de mon code). Vous remarquerez que l'animation scintille, lors de l'execution du programme, c'est normal, c'est à cause du chargement des images, pour éviter cela il faut compiler le code sous forme d'application, afin que les images fassent partie intégrante du programme. C'est dans le menu : Fichier/Application(exe) Puis double-cliquez sur le programme qui a été compilé (dans le dossier de panoramic) Pour plus de fun, rien n'empeche que les images du vaisseau soient en 3D (vues en 2D) extraites du net. EDIT : J'ai remplacé la touche espace par la touche Echap (esc) qui est bien plus pratique pour quitter le jeu, espace va servir au tir prochainement. (J'avais mis espace juste pour tester le prog) EDIT 2: Remplacement des REM par l'appostrophe (plus pratique). | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Un exemple de gestion d'un sprite vaisseau avec panoramic Sam 13 Nov 2010 - 21:07 | |
| Nouvelle version avec un timer à la place du while, le résultat est une progression du vaisseau plus logique, le vaisseau va très lentement si la vitesse est de 1 contrairement au code précédent avec le while où son allure était trop rapide. EDIT : - La vitesse variable à été ajoutée - Le traversement (ça se dit ?) d'écran a été ajouté (vaisseau apparaît de l'autre coté) - La téléportation a été ajoutée (touche c minuscule) - le tir a été ajouté (touche t minuscule) - Code:
-
' Exemple de gestion d'un vaisseau ' Cet exemple s'affiche en 800 x 600, agrandissez la fenetre pour bien le voir si besoin.
' Déplacements : Flèches clavier (haut,bas,gauche,droite) ' Tir laser : touche t minuscule ' Téléportation (cloack) : touche c minuscule ' Vitesse 1 : Touche & (voir au dessus du A) ' Vitesse 2 : Touche é ' Vitesse 3 : Touche " ' Quitter : Touche ESC (echap)
REM Cest mon premier test de panoramic ;)
Dim x,y Dim laser_x,laser_y Dim i Dim dir$ Dim vitesse
x=400 y=300 vitesse=1
label cree_vaisseau label gauche label droite label bas label haut label laser label teleporte label tests label affiche
scene2D 1 width 1,800 height 1,600 file_load 1,"stars.bmp" : rem image de fond espace étoilé stretch_on 1
gosub cree_vaisseau
sprite 2 sprite_file_load 2,"laser.bmp" sprite_hide 2
dir$="droite"
timer 2 timer_interval 2,1 on_timer 2, affiche end
affiche: sprite_x_position 1,x sprite_y_position 1,y if dir$="droite" laser_x=x+32 laser_y=y+16 end_if if dir$="gauche" laser_x=x-56 laser_y=y+16 end_if sprite_position 2,laser_x,laser_y if scancode<>27 then gosub tests : else : terminate return
tests: if scancode=37 then gosub gauche : rem fleche gauche if scancode=39 then gosub droite : rem fleche droite if scancode=40 then gosub bas : rem fleche bas if scancode=38 then gosub haut : rem fleche haut if scancode=32 then gosub laser : else : sprite_hide 2 :rem tir laser if scancode=67 then gosub teleporte : rem téléportation du vaisseau if scancode=49 then vitesse=1 if scancode=50 then vitesse=5 if scancode=51 then vitesse=10 return
gauche: sprite_file_load 1,"vaisseau_g.bmp" : rem image vaisseau vers la gauche x=x-vitesse if x<0 then x=768 dir$="gauche" return
droite: sprite_file_load 1,"vaisseau_d.bmp" : rem image vaisseau vers la droite x=x+vitesse if x>800 then x=0 dir$="droite" return
bas: y=y+vitesse if y>600 then y=0 return
haut: y=y-vitesse if y<0 then y=568 return
laser: sprite_position 2,laser_x,laser_y sprite_show 2 return
teleporte: sprite_hide 2 for i=0 to 9 sprite_scale 1,0.5,0.5 wait 20 next i sprite_delete 1 gosub cree_vaisseau x=int(rnd(600)) y=int(rnd(500)) sprite_position 1,x,y return
cree_vaisseau: sprite 1 sprite_file_load 1,"vaisseau_d.bmp" return
Dernière édition par dragonno le Sam 13 Nov 2010 - 22:47, édité 2 fois | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Un exemple de gestion d'un sprite vaisseau avec panoramic Sam 13 Nov 2010 - 22:32 | |
| Mise à jour du code Voilà, je vais l'arreter là pour le moment, vu qu'il n'est pas possible de jouer à deux sur le même clavier (gestion multi-touches absente) j'ajouterais peut-être des ennemis si j'ai le temps. On peut déjà s'en inspirer pour développer son propre jeu panoramic dés que cela sera possible : gestion des collision par pixels et par rectangle, jeu multijoueur hotseat ou réseau. | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Un exemple de gestion d'un sprite vaisseau avec panoramic Ven 19 Nov 2010 - 0:16 | |
| Est-ce que quelqu'un a essayé la dernière version ? j'aimerais bien un petit retour sur la chose.
| |
| | | Contenu sponsorisé
| Sujet: Re: Un exemple de gestion d'un sprite vaisseau avec panoramic | |
| |
| | | | Un exemple de gestion d'un sprite vaisseau avec panoramic | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |