je viens de commencer un jeux c'est un petit Shoot'Em Up

Programmation avancée de jeux en PureBasic
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

je viens de commencer un jeux c'est un petit Shoot'Em Up

Message par Micheao »

Bonsoir
je viens de commencer un jeux c'est un petit Shoot'Em Up il est pas fini il manque encore la gestion des ennemis la vie et le score
J'utilise l'excellent module Lixu.pbi de falsam que je remercie au passage ainsi que microdevweb pour leur aides

Executable + source ici : ( j'ai inclus le module Lixu.pbi et j'ai crée un fichier .pbi pour le jeux lui-même. )
Mise à jour du fichier du 09/11/15
https://www.dropbox.com/s/2uxx0rhsgu84l ... r.zip?dl=0


Aperçu :
Image

J'attends vos avis et conseils
Dernière modification par Micheao le lun. 09/nov./2015 11:27, modifié 2 fois.
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par GallyHC »

Bonjour,

Déjà ce est vraiment sympa, pour les petites critiques ou erreur, je dirais que perso la musique ne va pas du tout avec le style (avis perso). Le double parallaxe me perturbe vu son mouvement. Et enfin le tire du vaisseau au dirais qu'il et a 10 mètres du vaisseau lui même.

Sinon ce n'est que de petite critique et après quelques modifs et l'ajout du code manquant pense que ce sera bien.

Cordialement,
GallyHC
Dernière modification par GallyHC le dim. 08/nov./2015 21:01, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par falsam »

GallyHC a écrit :je dirais que perso la musique ne va pas du tout avec le style
C'est une musique d'intro et je ne vois pas ce qui ne va pas. J'aime bien
GallyHC a écrit :Le double parallaxe me perturbe vu son mouvement
Un seul paralax de bas en haut et peut être suffisant. Mais je ne connais pas la suite du jeu.
GallyHC a écrit :Et enfin le pire du vaisseau au dirais qu'il et a 10 mètres du vaisseau lui même.
Il faut savoir parler le Gallycien. Le parlant plutôt mal je vais essayer de donner une bonne traduction:

Ce que voulait dire Gally, c'est que la taille de la police est trop grande par rapport à la taille du vaisseau spatial. Ce qui donne cette impression d'une vue éloignée du vaisseau.

Bon et bien on attend la suite avec impatience :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Micheao »

Merci pour vos conseils les gars

GallyHC voulait parler du tir du vaisseau , j'ai pas encore résolu ce probleme à savoir faire partir le tir prés du vaisseau
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Ar-S »

Je n'ai pas encore regardé ton code mais je suppose que ton tir commence à une position x y
ton vaisseau est aussi à une position x y
ton x à l'air de coller, c'est ton y qui chie.

Donc change ton tir(N)\y pour qu'il soit = vaisseau\y -5 par exemple (la position de l’écran commençant à 0 en haut, si ton vaisseau y = 500, ton tir peut commencer à 500-5)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Micheao »

Ar-S a écrit :Je n'ai pas encore regardé ton code mais je suppose que ton tir commence à une position x y
ton vaisseau est aussi à une position x y
ton x à l'air de coller, c'est ton y qui chie.

Donc change ton tir(N)\y pour qu'il soit = vaisseau\y -5 par exemple (la position de l’écran commençant à 0 en haut, si ton vaisseau y = 500, ton tir peut commencer à 500-5)
Merci AR-S

Code corrigé :
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par microdevweb »

Salut Micheao,

Pas mal, c'est codé de manière propre. Mes petites remarques qui je l'espère seront constructive.

Il y avaient des différences entre ton exe et ton code (départ des balle en Y) bien aligné dans ton code mais pas dans ton exe. Par contre pas bien aligné en X par rapport au vaisseau, j'ai fais quelques testes et corrections

Dans le dessin des tes balles, essaie de prendre une base divisible par 2 (2,3,4,6,8,10 etc)
moi j'ai fais ceci

Code : Tout sélectionner

;--On crée les munitions pour le tir 
  CreateSprite(#Bulet,6,6)
  StartDrawing(SpriteOutput(#Bulet))
  Circle(0,0,3,RGB(255,255,255))
  StopDrawing() 
Pour l'affichage des balles, tu dois prendre également en considération le sprite (bulet)

comme ceci

Code : Tout sélectionner

 If KeyboardPushed(#PB_Key_Space) And ShotOn ; MCW
   PlaySound(#Sound,0 ,30)
   AddElement(myBulet())
   myBulet()\X=ShipX+(SpriteWidth(#Spr_Ship)/2-(SpriteWidth(#Bulet)/2))
   myBulet()\Y=ShipY-0
   ; On ne peut plus tirré avant le temps écoulé
   ShotOn=#False
 EndIf 
Voila mais sinon tu est sur la bonne voie :wink:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Micheao »

Merci microdevweb pour tes conseils
j'ai mis à jour l'exe et le fichier source
je cherche à crée des vaisseau ennemis qui démarront en dehors de la fenetre écran pour bouger en verticale
je sais comment afficher et bouger un sprite sur l'écran mais pas le faire bouger en dehors de la fenetre écran .
que me conseil tu pour la gestion du score et de la vie ?

Merci
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Ar-S »

Pense X Y Micheao !
Ton ecran va de 0 (haut de l'ecran en y, gauche de l'ecran en x)

si tu veux placer/bouger un sprite en dehors de l'ecran, place le
- soit AVANT 0 (ex : -40 )
- Soit Après la taille de ton ecran (si ton screen fait 800, place ton sprite à 820 par ex.)

Un peu de logique que diable !

Pour tes vies, décrémente le nbre de vie de 1 à chaque fois qu'un vaisseau ennemi touche le tiens ou que ton vaisseau se prend une balle ennemie (si les ennemis tirent)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par microdevweb »

@Micheao,

Pour tes vaisseaux ennemis tu peux sans problème les afficher hors écran, le moteur de sprite de Pb fera le travaille. Tu les stocke dans une structure suivant les niveaux tu en ajoute une Certaine quantité, tu peux également joué sur la vélocité, et si tu veux qu'il descente en biais il va falloir jouer avec de trigono.

J'essayerais de te faire une petit exemple fin d'après midi
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Cool Dji »

Hello,

Attention à ne pas afficher ton sprite trop en dehors car des bugs peuvent apparaitre sur certains ordi avec les dernières versions de PB.

Il semble que l'on puisse afficher un sprite en dehors de l'écran mais dans la limite de la taille du sprite.

Avec un ecran de 1024x768 pixels
Si le sprite à une largeur de 20 pixels et une hauteur de 10 pixels :
il faut que l'affichage du sprite soit compris dans la zone :
-20 à 1024 pour les x
-10 à 768 pour les y

si tu affiches ce sprite trop à gauche, trop à droite, trop en bas ou en trop en haut, les sprites sont déformés...
Only PureBasic makes it possible
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par microdevweb »

@Cool Dji,

Ha bon je ne savais pas
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par microdevweb »

Bon voila un genre de code (a modifier et améliorer)

Code : Tout sélectionner

Enumeration 
      #Invader
EndEnumeration
Structure Invader
      X.i
      Y.i
      Velocity.i
      Angle.i
EndStructure
Global NewList myInvader.Invader()
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,800,600,"Ship",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600)
CreateSprite(#Invader,64,64,#PB_Sprite_AlphaBlending|#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Invader))
Box(0,0,SpriteWidth(#Invader),SpriteHeight(#Invader),$00FF00)
StopDrawing()
; Création des ennemis
With myInvader()
      AddElement(myInvader())
      \X=0
      \Y=-100
      \Angle=Random(160,130)
      \Velocity=1
EndWith
Repeat
      Repeat
            Event=WindowEvent()
            If Event=#PB_Event_CloseWindow
                  End
            EndIf
      Until Event=0
      ExamineKeyboard()
      If KeyboardPushed(#PB_Key_Escape)
            End            
      EndIf
      ClearScreen(RGB(0,0,0))
      ForEach myInvader()
            With myInvader()
                  \X=\X-Cos(Radian(\Angle)) *\Velocity
                  \Y=\Y+Sin(Radian(\Angle)) *\Velocity
                  If (\X-(SpriteWidth(#Invader)*2))>ScreenWidth() Or  (\Y-(SpriteHeight(#Invader)*2))>ScreenHeight()
                        \X=0
                        \Y=-100
                  EndIf
                  If \X>=(0-SpriteWidth(#Invader)) And \X<=(ScreenWidth()+SpriteWidth(#Invader))
                        If \Y>=(0-SpriteHeight(#Invader)) And \Y<=(ScreenHeight()+SpriteHeight(#Invader))
                              DisplayTransparentSprite(#Invader,\X,\Y)
                        EndIf
                  EndIf 
            EndWith
      Next
      FlipBuffers()
ForEver 

Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Cool Dji »

microdevweb a écrit :@Cool Dji,

Ha bon je ne savais pas
Moi non plus, j'ai remarqué ça récemment. Le même code marchait bien sur certains ordi et "beuguait" sur d'autres, c'est en analysant que j'ai trouvé ce truc.
Maintenant, j'ai une procedure AfficheSprite(sprite,x,y) qui test si le sprite est dans la zone avant de l'afficher avec un DisplaySprite(sprite,x,y).
Only PureBasic makes it possible
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: je viens de commencer un jeux c'est un petit Shoot'Em U

Message par Micheao »

Merci microdevweb pour cet exemple
malheureusement je pas doué en math pour les cosinus et les sinus .
Répondre