begin process at 2012 02 11 09:44:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > BATTLE GUN, JEU DIRECT X 7

BATTLE GUN, JEU DIRECT X 7


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Classé sous :jeu, avion, directx Niveau :Débutant Date de création :12/08/2007 Date de mise à jour :12/08/2007 19:43:50 Vu / téléchargé :6 625 / 499

Auteur : simon22

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • '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
'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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 août 2007 19:25:29 :
Corections de quelques petites erreurs
12 août 2007 19:43:50 :
erreur dans la presentation

 Sources du même auteur

Source avec Zip Source avec une capture LYLY HOST
Source avec Zip Source avec une capture BATTLE GUN
Source avec Zip LE COMBAT DU JEDI
Source avec Zip Source avec une capture ENCHAINEMENT D'IMAGES
Source avec Zip Source avec une capture JEU D'AVION

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) DES CHIFFRES ET DES LETTRES par ShayW
Source avec Zip Source avec une capture FAIRE REBONDIR PLUSIEURS BALLES par pierreh51
Source avec Zip Source .NET (Dotnet) JE DES BRIQUES MOUVANTES par alpha5
Source avec Zip Source avec une capture TOWER BATTLE 2 par Softmama
JEU D'ADRESSE ,JEU DE TIR À LA SOURIS par yvesdudu

 Sources en rapport avec celle ci

JEU D'ADRESSE ,JEU DE TIR À LA SOURIS par yvesdudu
Source avec Zip Source avec une capture Source .NET (Dotnet) JEU DU LABYRINTHE EN 3D DIRECTX par banana32
Source avec Zip Source avec une capture BREAKERBAWL par xranto
Source avec Zip Source avec une capture BMW SERIE 7 par serge_saati
Source avec Zip Source avec une capture AIR BOMBER (JEU DX7) par aKheNathOn

Commentaires et avis

Commentaire de Brosske le 13/08/2007 12:13:52

Serait il possible qu'il manque les sous-dossiers dans le zip ?

"Le chemin d'accès spécifié est introuvable" ...

--> Control.RenderFile path dans la function LoadMP3 (il cherche dans .\Data\Music\Jeu Duel.mp3 qui n'est pas dans le ZIP)

Commentaire de simon22 le 13/08/2007 13:48:14

Si tu a télécharger le zip uploader sur vbfrance, j'ai preciser plus haut que le proget etait trop lourd, et donc j'ai donner un lien explication Final qui lui marche parfaitement (je vien de retester) ce qui a dans le zic est le code source sans tout les fichiers

Commentaire de ciberrique le 13/08/2007 14:13:40

Brosske : il serait necessaire de lire l'ensemble des explications de l'auteur parfois, et pas simplement telecharger le zip !!

Simon22 : Première chose, merci pour ton eloge de met tuto, toutefois directx 7 commence à etre depassé (de pars le fait qu'il ne gere pas l'acceleration materielle ce qui est un gros manque). Qui sais je ferais peut etre une explication sur comment passer à DirectGraphic pour ses jeux 2d.

Ensuite, niveau de l'ensemble du code ca commence à ressembler à quelque chose, meme si c'est encore trop embrouillé, trop de fonction dans tous les sens, et pas de reel harmonie dans le code.

Le code n'est pas entierement formaté...


Au niveau du code en lui même, quelques optimisation n'ont pas étaient faites :
Select case c'est joli mais c'est plus lent qu'une if elseif

L'utilisation de variable de type string dans tes boucles et pour verifier quel est le type de variable est une horreur, c'est bien trop lent.

Quand on a if etat = true then on met if etat then,
et quand on a if etat = false then on met if not etat then, bien plus rapide au traitement.

Déclare tes variables en début de fonction est pas en plein milieu.

Manque quelque With qui rendent plus propre et plus rapide.

Les for i = 0 to Ubound(machin) dans une boucle sont à prohiber.

L'utilisation de With Backbuffer est interressante du fait que les objets directx sont lourds, même si ca a pas était fait partout...

Les boucles genre for i = 0 to 1 c'est inutile...

Je rajouterais une chose, quand vous poster un code reduisait la taille de vos fenêtre vb à une taille convenable tout le monde n'a pas un ecran en 20000*50000 c'est vraiment desagreable de devoir redimensionner à chaque fois.

Enfin, le code fonctionne, le resultat est plutot joli, pas de lag graphique, conclusion une source interressante.

7/10

ps : La prochaine fois ne desactive pas le vsync mais utilise un systeme en frameskipping.

Voili voilou.

Commentaire de Renfield le 13/08/2007 14:14:56 administrateur CS

pourquoi utiliser des images en BMP, t'etonnes pas si ca te fait un gros zip en sortie ^^

idem pour les sons, rend les optionnels (que le jeu fonctionne sans)

Commentaire de ciberrique le 13/08/2007 14:16:03

Haha pas d'accord avec Renfield, le Bmp en 256 couleur (indexé) est moins lourd ou équivalent une fois compressé que le jpg ou le gif...

Commentaire de Renfield le 13/08/2007 14:17:36 administrateur CS

je viens de lire tes commentaires, ciberrique, ca m'evite de les repeter ^^

je vais voir ce que je peux encore en dire...

++ l'ami

Commentaire de ciberrique le 13/08/2007 14:19:24

Haha Renfield, ouep ^^
Je tiens a rajouter une chose, lorsqu'on voit la progression des sources de Simon, on voit une net evolution, If Simon = progression Then Bravo ^^.

A bientot.

Ps: Renfield lit tes mp j'aurais besoin de tes connaissances :p

Commentaire de Renfield le 13/08/2007 14:32:05 administrateur CS

j'ai fait un Zip, et j'ai tenté d'en réduire la taille

repertoire music supprimé
Interface jeu\Interface Gestion Solo\interface.JPG
et
Interface jeu\Interface Gestion Solo\Affichage Gestion.JPG
passées en JPG

peut etre passer les images en 256 couleurs (en BMP)

quite a mettre en téléchargement ailleurs des ressources en plus haute qualité.

Commentaire de simon22 le 13/08/2007 14:37:32

merci  ciberrique de tes conseils, je pren tout ca en compt, merci a toi aussi Renfield de t'interesser a ma source^^
mais, si tu enleve la music, forcement c'est plus leger, mais c'est quelque chose d'important pour l'abmiance dans ce genre de jeu non ?

Commentaire de Renfield le 13/08/2007 14:39:44 administrateur CS

important pour l'ambiance, certes, mais si on peut tester ta source c'est un bon début...

possible aussi que le jeu télécharge les resources au lancement, si nécessaire ^^

Commentaire de simon22 le 13/08/2007 14:41:32

oui, ca pourais etre envisagable tu  raison, pour télécharger faudrais que je mette en place un FTP ca doit etre fesable mais ca va me demander un peu de temp, vue que j'ai pas encor travailler dans ces orizons

Commentaire de benjionline le 16/08/2007 18:39:41

Trop cool!!!!!! Impressionnant. Bien joué Simon :)

Commentaire de lard le 17/09/2007 22:22:56

J'aime bien ceux qui se cassent les méninges pour que leurs jeux en VB soient le plus beau possible graphiquement, que la jouabilité soit d'un bon niveau... enfin faire que notre vieux VB arrive au niveau du C ou autres langages plus dédiés développement de jeu... (j'en faisait partie...) Donc bravo à tous ceux la et à toi en particulier SIMON22...
10/10 !

Bonne continuation !

A plus...

LARD

Commentaire de simon22 le 23/09/2007 10:55:06

Merci Benjionline, et merci Lard, ca fait plaisire de voir que le travail fournis est aprecier^^
mais c'est encor loin d'etre parfait, j'ai remarquer que sur les machinnes faibles, il y avais souvent des enormes lags graphique, ce qui est inpardonnable pour un jeu qui devrais etre si leger logiquement
enfin, le temp de l'apprentissage est loin d'etre revolue, et c'est loin d'etre ma dergniere source de jeu.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

aide jeu sans directx [ par sammy918 ] bonsoir, premièrement, comment on fait pour quand tu appui sur la flèche gauche tel image ce déplace vers la gauche, pour flèche d Directx Strategie [ par bilaloch ] Svpje voudrais demander si pour faire un jeu type warcraft3 il fallait utiliser directdraw pour les menus,barre du jeu, etc... et direct3D pour le jeu Créer son premier jeu avec DirectX 9 et Visual Basic 2008 Express [ par Diable11 ] Bonjour,Quelqu'un peut m'aider à créer mon propre premier jeu avec DirectX 9 et Visual Basic 2008 Express ?Je ne sais pas comment on utilise les DLL d Gérer les colision d'un perso avec DirectX [ par Charles Racaud ] SalutG commencé à faire un jeu style 'Mario'Pour cela, G utiliser DirectX.G réussi à faire bouger le jeu mais je ne parviens pas à gérer les collision VB 2005 ou C/C++ ? [ par Kite37 ] Bonjour !Souhaitant avec des amis nous lancer dans un projet de jeu assez conséquent, nécessitant l'utilisation de DirectX 9.0, nous sommes confrontés gta san andreas [ par andreas1 ] Bonjour bon voila mon probleme je joue sur san andreas sur PC mais pandent le jeu le jeu recontre un probleme vous povez me dire commant jouer sans qu Transfert d'un jeu d'enregistrement vers excel [ par ordynho ] Bonjour tout le monde.Je suis en train de programmer en visualbasic 6.0 mais je suis bloqué.En faite j'ai un jeux d'enregistrement contenu dans un rec Programmation événementielle [ par Kite37 ] Bonjour !Je suis actuellement en train de développer un petit jeu fonctionnant via socket en mode asynchrone, et afin de gagner en automatisme tout en Triangles DirectX [ par Ballistic ] Bonjour,Je cherche un exemple ou un tutoriel pour l'affichage de triangles texturés et "éclairés" par leurs 3 côtés, le tout en DirectX 8 ou 9.J'ai un Référence DirectX [ par Marneus73 ] Bonjour à tous,Je n'arrive pas à trouver la référence de DirectX sur VB 2008 : "Microsoft.DirectX.AudioVideoPlayback" anciennement disponnible sous VB


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,642 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales