Battle gun, jeu direct x 7

Description

Après avoir passé pas mal de temps à apprendre je poste une nouvelle source, c'est un jeu en Direct X,
Je me suis basé sur les Tutoriaux de Ciberrique, et de quelques autres fonctions.
C?est donc un jeu qui vous propose un seul mode, l'escarmouche direct avec des adversaires, le terme escarmouche est légèrement ironique,
Car ici l'on est dans l'espace, vous avez un vaisseau et les adversaires son également des vaisseaux, le but est d'en tuer un maximum en un minimum de temps,
La réussite de la mission et votre score en dépend.
Le Code n'a rien d'extraordinaire, il reste des incongruités, il reste surement des légers bugs, c'est ma première source Direct X
Je demande donc votre indulgence ^^.
Il va s'en dir que dans les explications, pour les comprendre il vous faudra au moin la connaissance de Direct X de base
je vous recommande les Tuto de Ciberrique si ce n'est pas le cas

Source / Exemple :


'Je vais ici vous expliquez le fonctionnement global de mon programme
'Donc, ici mon Code utilise le célèbre Direct X, la version 7 pour être précis
'J'ai crée un System particulier, qui n'est pas forcement le meilleur choix mais je vais vous expliquez tout de même
'Cela a largement suffis pour un jeu comme celui qu'il y a ici, a par un léger problème de son

' Nous avons donc une sub main qui gère les différents types d'affichages

Sub Main() 

'ici nous avons les premières actions du programme, j'ai donc mis l'initialisation même de Direct X, et ensuite la boucle multi affichage^^

Call Initialisation_Dx 'on Initialise DirectX pour avoir un affichage

Affichage_Actuel = "Affichage plus Calcules Chargement" 'puis on lance le chargement, qui metra en mémoire tout les images et autre

Do

If Timers(Timer_Music) Then PlayMp3 DScontrol(0), IPosition(0) 
Select Case Affichage_Actuel 'ici les diferants affichage

Case "Solo Mod"

Call Affichage_plus_Calcules_Solo_Mod

Case "Menu"

Call Affichage_Menu

Case "Affichage plus Calcules Chargement"

Call Affichage_plus_Calcules_Chargement

Case "Affichage Gestion Solo Mod"

Call Affichage_Gestion_Solo_Mod

End Select

DoEvents

Loop Until Affichage_Actuel = vbNullString

End Sub

'ca me permet de passer facilement d'un menu a l'autre et de gère l'affichage

'Chaque Session D'affichage a plusieurs sous Sub
'Celles ci son en gros les actions dont l'affichage en lui même qui doivent se produire quand l'affichage en est la
'Je prend comme exemple le menu

Public Sub Affichage_Menu()

Backbuffer.BltColorFill ddRect(0, 0, 0, 0), vbBlack 'je met un fon noire

Call Affichage_Interface_Menu 'j'affiche l'interface du menu

Call UpDateBB 'je met en place les collisions dont j'ai besoin pour faire fonctionner les boutons

Call Collision

Primary.Flip Nothing, DDFLIP_WAIT

End Sub

passons au jeu en lui même, j'ai un System de Création d'objets, les objets étant en réalité des surface attaquer a des variables Type, approprier a l'objet de la création

Par exemple : 

Public Type Projectil_Stats

PosY As Integer
PosX As Integer
sens As Integer
Dommage As Integer
VitesseX As Integer
VitesseY As Integer
Type As Integer
Etat As Boolean

End Type

Le Type de Création de Projectiles, c'est a dire tout les missiles et autre du jeu, qu'ils soit ennemie ou allier
Se son les données modifiable d'après la fonction de création suivante 

Public Function Création_Projectil(PosX As Integer, PosY As Integer, sens As Boolean, Dommage As Integer, VitesseX As Integer, VitesseY As Integer, Types As Integer)
Dim i As Integer 'chaque elements servant a une option de plus modifiable pour un maximium de possibilitée

Call Update_Ubound 'je charge ici l'actualisation de variables qui servent dans la boucle

    For i = 0 To Ubound_Projectils
      
        If Projectils(i).Etat = False Then
        
        With Projectils(i) 'et ici on met les donnée modifiable comme demander audessu
        
            .Etat = True
            .Dommage = Dommage
            .PosX = PosX
            .PosY = PosY
            .sens = sens
            .Type = Types
            .VitesseX = VitesseX
            .VitesseY = VitesseY
        
        End With
        
        Exit For
        
        End If
        
    Next i
    
End Function

Les animations de surface son également gère de façon particulière
Une seul variable, tableau par objet, une surface par case du tableau, et je prend les images dedans celons leurs ID
J?ai également crée une fonction de pré chargement pour les animations du jeu

Public Function PréChargementSurface(Surface() As DirectDrawSurface7, SurfaceDesc() As DDSURFACEDESC2, Psurface As Integer, Dsurface As Integer, path As String, Nom_Animation As String)
'Ici on pren toute les surfaces tableau, et on esseil de se repéré dans l'index du tableau pour savoir ou placer les images
ReDim Preserve Surface(Dsurface) As DirectDrawSurface7 'on redimentionne les surfaces
ReDim Preserve SurfaceDesc(Dsurface) As DDSURFACEDESC2
Dim Nombre_Image As Integer
Dim i As Integer
Dim e As Integer
Nombre_Image = Dsurface - Psurface
e = Psurface

For i = 0 To Nombre_Image 'puis dans la boucle on met les images une par une

   
    If e > Dsurface Then Exit For
    Set Surface(e) = dd.CreateSurfaceFromFile(path & "\" & Nom_Animation & i & ".bmp", SurfaceDesc(e))
    Surface(e).SetColorKey DDCKEY_SRCBLT, ck
    e = e + 1
     
Next i

End Function

Les Boutons du jeu son également sur ce même principe, une variable d'animation, des pré chargements, des collision, mais ils utilisent une fonction spécial, qui définis les actions de chaque bouton par rapport au nom qu'on leurs a donner quand on les a crée

Conclusion :


Le jeu en lui meme etant trop gros pour être poster, donc je vous donne ce lien séparement,
le zip ne contien que la source, et le lien contien le jeu entier, avec EXE, Source et tout les fichuier qui von avec^^
http://anonyme.archive-host.com/battleship_z35q6yt3xg.rar

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.