begin process at 2012 02 13 04:54:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > LABYRINTHE

LABYRINTHE


 Information sur la source

Note :
9,29 / 10 - par 7 personnes
9,29 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Initié Date de création :29/11/2002 Date de mise à jour :29/11/2002 02:08:07 Vu / téléchargé :3 111 / 232

Auteur : yawa

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

 Description

Cliquez pour voir la capture en taille normale
Voici ma première source... un petit labyrinthe.. il est vraiment petit, très simple, mais ça donne une bonne idée de comment faire ! En passant, j'ai mis des lignes de code qui seront peut-être inutile à vos yeux... comme par exemple, les mangauche et compagnie servent si on veut utiliser 4 images pour le personnage (4 directions). Dans l'exemple, ce n'est qu'un smiley. J'ai aussi utilisé des matrices (.txt) pour faire les chemins.

Source

  • ' PROGRAMMATION DE LA FORM (MODULE DANS LE ZIP)
  • ' Dans la matrice, le chiffre 0 est un chemin et 1 est un mur. 2 est une clef
  • Option Explicit
  • Const NbLignes = 7
  • Const NbColonnes = 8
  • Const Dimension = 480
  • Const X = Dimension / 2
  • Const Y = Dimension / 2
  • Dim Fichier As String
  • Dim bye As Byte
  • Dim Planche(1 To NbLignes, 1 To NbColonnes) As Integer
  • Dim Ligne As Byte, Colonne As Byte
  • Dim J As Byte
  • Dim Mur As Picture
  • Dim ManHaut As Picture, Manbas As Picture
  • Dim ManGauche As Picture, mandroite As Picture
  • Dim Clé As Picture
  • Dim L As Byte, C As Byte
  • Private Sub Form_Load()
  • ' Charger les images
  • Set Mur = LoadPicture(App.Path & "\Mur_rouge.bmp")
  • Set ManHaut = LoadPicture(App.Path & "\face02.ico")
  • Set Manbas = LoadPicture(App.Path & "\face02.ico")
  • Set ManGauche = LoadPicture(App.Path & "\face02.ico")
  • Set mandroite = LoadPicture(App.Path & "\face02.ico")
  • Set Clé = LoadPicture(App.Path & "\Secur07.ico")
  • DsnBonhomme.Picture = mandroite
  • ' Charger la *belle* musique :P
  • MMControl1.FileName = App.Path & "\Bond.mid"
  • MMControl1.Command = "open"
  • MMControl1.Command = "play"
  • bye = 1
  • ' Déterminer le chemin de la matrice du niveau 1
  • Fichier = "\promenade1.txt"
  • ' Sous Programmes
  • OuvrirFichier
  • CréerCanevas
  • Afficher
  • End Sub
  • 'Ce code permet de déterminer lorsque l'utilisateur appuie sur une flèche
  • Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  • Select Case KeyCode
  • Case vbKeyLeft
  • DsnBonhomme.Picture = ManGauche
  • gauche
  • Case vbKeyUp
  • DsnBonhomme.Picture = ManHaut
  • haut
  • Case vbKeyRight
  • DsnBonhomme.Picture = mandroite
  • droite
  • Case vbKeyDown
  • DsnBonhomme.Picture = Manbas
  • bas
  • End Select
  • TestPosition
  • End Sub
  • Private Sub Form_Unload(Cancel As Integer)
  • MMControl1.Command = "Close"
  • End Sub
  • Public Sub OuvrirFichier()
  • ' Permet de charger en mémoire la matrice du niveau où le joueur est rendu
  • Dim Texte As String
  • Open App.Path & Fichier For Input As #1
  • For L = 1 To NbLignes
  • Input #1, Texte
  • For C = 1 To NbColonnes
  • Planche(L, C) = Mid(Texte, C, 1)
  • Next C
  • Next L
  • Close #1
  • End Sub
  • Public Sub Afficher()
  • ' Public sub permettant d'afficher le niveau et de placer le personnage principal selon le niveau
  • Dim Place As Integer
  • For L = 1 To NbLignes
  • For C = 1 To NbColonnes
  • Place = Place + 1
  • If Planche(L, C) = 1 Then
  • DsnCase(Place).Picture = Mur
  • End If
  • If Planche(L, C) = 2 Then
  • DsnCase(Place).Picture = Clé
  • End If
  • Next C
  • Next L
  • If bye <> 3 Then
  • Colonne = 1
  • Ligne = 4
  • DsnBonhomme.Move (Colonne - 1) * Dimension + X, (Ligne - 1) * Dimension + Y
  • ElseIf bye = 3 Then
  • Colonne = 6
  • Ligne = 1
  • DsnBonhomme.Move (Colonne - 1) * Dimension + X, (Ligne - 1) * Dimension + Y
  • End If
  • End Sub
  • Public Sub gauche()
  • ' Quand l'utilisateur a appuyé sur la touche gauche...
  • If (Colonne - 1) < 1 Then Beep: Exit Sub
  • If Planche(Ligne, Colonne - 1) = 0 Then
  • End If
  • If Planche(Ligne, Colonne - 1) <> 1 Then
  • For J = 1 To 8
  • DsnBonhomme.Left = DsnBonhomme.Left - (480 / 8)
  • Sleep 30 ' Effet de glissement (voir module)
  • Next J
  • Colonne = Colonne - 1
  • End If
  • End Sub
  • Public Sub droite()
  • ' Quand l'utilisateur a appuyé sur la touche droite...
  • If Colonne + 1 > 8 Then Beep: Exit Sub
  • If Planche(Ligne, Colonne + 1) <> 1 Then
  • For J = 1 To 8
  • DsnBonhomme.Left = DsnBonhomme.Left + (480 / 8)
  • Sleep 30 ' Effet de glissement (voir module)
  • Next J
  • Colonne = Colonne + 1
  • End If
  • End Sub
  • Public Sub haut()
  • ' Quand l'utilisateur a appuyé sur la touche haut...
  • If (Ligne - 1) < 1 Then Beep: Exit Sub
  • If Planche(Ligne - 1, Colonne) <> 1 Then
  • For J = 1 To 8
  • DsnBonhomme.Top = DsnBonhomme.Top - (480 / 8)
  • Sleep 30 ' Effet de glissement (voir module)
  • Next J
  • Ligne = Ligne - 1
  • End If
  • End Sub
  • Public Sub bas()
  • ' Quand l'utilisateur a appuyé sur la touche bas...
  • If (Ligne + 1) > NbLignes Then Beep: Exit Sub
  • If Planche(Ligne + 1, Colonne) <> 1 Then
  • For J = 1 To 8
  • DsnBonhomme.Top = DsnBonhomme.Top + (480 / 8)
  • Sleep 30 ' Effet de glissement (voir module)
  • Next J
  • Ligne = Ligne + 1
  • End If
  • End Sub
  • Public Sub CréerCanevas()
  • ' Public Sub permettant de créer le niveau
  • Dim Z As Integer, nombre As Integer
  • For Z = 1 To (NbLignes * NbColonnes)
  • Load DsnCase(Z)
  • DsnCase(Z).Height = Dimension
  • DsnCase(Z).Width = Dimension
  • Next Z
  • For Ligne = 0 To NbLignes - 1
  • For Colonne = 0 To NbColonnes - 1
  • nombre = nombre + 1
  • DsnCase(nombre).Left = X + (Colonne * Dimension)
  • DsnCase(nombre).Top = Y + (Ligne * Dimension)
  • DsnCase(nombre).Visible = True
  • Next Colonne
  • Next Ligne
  • DsnBonhomme.Height = Dimension
  • DsnBonhomme.Width = Dimension
  • Me.Height = Dimension * (NbLignes + 2)
  • Me.Width = Dimension * (NbColonnes + 1)
  • End Sub
  • Public Sub TestPosition()
  • ' Permet de dire quelle clef est bonne (niveau 1) puis de dire les événements aux sorties
  • If Ligne = 3 And Colonne = 7 Then
  • Beep
  • DsnCase(23).Picture = LoadPicture()
  • DsnCase(40).Picture = LoadPicture()
  • Planche(5, 8) = 0
  • End If
  • If Ligne = 5 And Colonne = 8 And bye = 1 Then
  • bye = 2
  • Fichier = "\promenade2.txt"
  • vidercase
  • OuvrirFichier
  • Afficher
  • ElseIf Ligne = 7 And Colonne = 7 And bye = 2 Then
  • bye = 3
  • Fichier = "\promenade3.txt"
  • vidercase
  • OuvrirFichier
  • Afficher
  • ElseIf Ligne = 7 And Colonne = 4 And bye = 3 Then
  • MsgBox "Félicitations!"
  • Unload Me
  • End
  • End If
  • End Sub
  • Public Sub vidercase()
  • ' Permet de "nettoyer" le niveau
  • For J = 1 To NbLignes * NbColonnes
  • DsnCase(J).Picture = LoadPicture()
  • Next J
  • End Sub
' PROGRAMMATION DE LA FORM (MODULE DANS LE ZIP)
' Dans la matrice, le chiffre 0 est un chemin et 1 est un mur. 2 est une clef
Option Explicit
Const NbLignes = 7
Const NbColonnes = 8
Const Dimension = 480
Const X = Dimension / 2
Const Y = Dimension / 2
Dim Fichier As String
Dim bye As Byte
Dim Planche(1 To NbLignes, 1 To NbColonnes) As Integer
Dim Ligne As Byte, Colonne As Byte
Dim J As Byte
Dim Mur As Picture
Dim ManHaut As Picture, Manbas As Picture
Dim ManGauche As Picture, mandroite As Picture
Dim Clé As Picture
Dim L As Byte, C As Byte

Private Sub Form_Load()
    ' Charger les images
    Set Mur = LoadPicture(App.Path & "\Mur_rouge.bmp")
    Set ManHaut = LoadPicture(App.Path & "\face02.ico")
    Set Manbas = LoadPicture(App.Path & "\face02.ico")
    Set ManGauche = LoadPicture(App.Path & "\face02.ico")
    Set mandroite = LoadPicture(App.Path & "\face02.ico")
    Set Clé = LoadPicture(App.Path & "\Secur07.ico")
    DsnBonhomme.Picture = mandroite
    ' Charger la *belle* musique :P
    MMControl1.FileName = App.Path & "\Bond.mid"
    MMControl1.Command = "open"
    MMControl1.Command = "play"
    bye = 1
    ' Déterminer le chemin de la matrice du niveau 1
    Fichier = "\promenade1.txt"
    ' Sous Programmes
    OuvrirFichier
    CréerCanevas
    Afficher
End Sub

'Ce code permet de déterminer lorsque l'utilisateur appuie sur une flèche
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyLeft
            DsnBonhomme.Picture = ManGauche
            gauche
        Case vbKeyUp
            DsnBonhomme.Picture = ManHaut
            haut
        Case vbKeyRight
            DsnBonhomme.Picture = mandroite
            droite
        Case vbKeyDown
            DsnBonhomme.Picture = Manbas
            bas
    End Select
    TestPosition
End Sub

Private Sub Form_Unload(Cancel As Integer)
    MMControl1.Command = "Close"
End Sub


Public Sub OuvrirFichier()
    ' Permet de charger en mémoire la matrice du niveau où le joueur est rendu
    Dim Texte As String
    Open App.Path & Fichier For Input As #1
    For L = 1 To NbLignes
        Input #1, Texte
        For C = 1 To NbColonnes
            Planche(L, C) = Mid(Texte, C, 1)
        Next C
    Next L
    Close #1
End Sub

Public Sub Afficher()
    ' Public sub permettant d'afficher le niveau et de placer le personnage principal selon le niveau
    Dim Place As Integer
    For L = 1 To NbLignes
        For C = 1 To NbColonnes
            Place = Place + 1
            If Planche(L, C) = 1 Then
                DsnCase(Place).Picture = Mur
            End If
            If Planche(L, C) = 2 Then
                DsnCase(Place).Picture = Clé
            End If
        Next C
    Next L
    If bye <> 3 Then
    Colonne = 1
    Ligne = 4
    DsnBonhomme.Move (Colonne - 1) * Dimension + X, (Ligne - 1) * Dimension + Y
    ElseIf bye = 3 Then
    Colonne = 6
    Ligne = 1
    DsnBonhomme.Move (Colonne - 1) * Dimension + X, (Ligne - 1) * Dimension + Y
    End If
End Sub

Public Sub gauche()
    ' Quand l'utilisateur a appuyé sur la touche gauche...
    If (Colonne - 1) < 1 Then Beep: Exit Sub
    If Planche(Ligne, Colonne - 1) = 0 Then
    End If
    If Planche(Ligne, Colonne - 1) <> 1 Then
        For J = 1 To 8
            DsnBonhomme.Left = DsnBonhomme.Left - (480 / 8)
            Sleep 30 ' Effet de glissement (voir module)
        Next J
        Colonne = Colonne - 1
    End If
End Sub

Public Sub droite()
    ' Quand l'utilisateur a appuyé sur la touche droite...
    If Colonne + 1 > 8 Then Beep: Exit Sub
    If Planche(Ligne, Colonne + 1) <> 1 Then
        For J = 1 To 8
            DsnBonhomme.Left = DsnBonhomme.Left + (480 / 8)
            Sleep 30 ' Effet de glissement (voir module)
        Next J
        Colonne = Colonne + 1
    End If
End Sub

Public Sub haut()
    ' Quand l'utilisateur a appuyé sur la touche haut...
    If (Ligne - 1) < 1 Then Beep: Exit Sub
    If Planche(Ligne - 1, Colonne) <> 1 Then
        For J = 1 To 8
            DsnBonhomme.Top = DsnBonhomme.Top - (480 / 8)
            Sleep 30 ' Effet de glissement (voir module)
        Next J
        Ligne = Ligne - 1
    End If
End Sub

Public Sub bas()
    ' Quand l'utilisateur a appuyé sur la touche bas...
    If (Ligne + 1) > NbLignes Then Beep: Exit Sub
    If Planche(Ligne + 1, Colonne) <> 1 Then
        For J = 1 To 8
            DsnBonhomme.Top = DsnBonhomme.Top + (480 / 8)
            Sleep 30 ' Effet de glissement (voir module)
        Next J
        Ligne = Ligne + 1
    End If
End Sub

Public Sub CréerCanevas()
    ' Public Sub permettant de créer le niveau
    Dim Z As Integer, nombre As Integer
    For Z = 1 To (NbLignes * NbColonnes)
        Load DsnCase(Z)
        DsnCase(Z).Height = Dimension
        DsnCase(Z).Width = Dimension
    Next Z
    For Ligne = 0 To NbLignes - 1
        For Colonne = 0 To NbColonnes - 1
            nombre = nombre + 1
            DsnCase(nombre).Left = X + (Colonne * Dimension)
            DsnCase(nombre).Top = Y + (Ligne * Dimension)
            DsnCase(nombre).Visible = True
        Next Colonne
    Next Ligne
    DsnBonhomme.Height = Dimension
    DsnBonhomme.Width = Dimension
    Me.Height = Dimension * (NbLignes + 2)
    Me.Width = Dimension * (NbColonnes + 1)
End Sub

Public Sub TestPosition()
    ' Permet de dire quelle clef est bonne (niveau 1) puis de dire les événements aux sorties
    If Ligne = 3 And Colonne = 7 Then
        Beep
        DsnCase(23).Picture = LoadPicture()
        DsnCase(40).Picture = LoadPicture()
        Planche(5, 8) = 0
    End If
    If Ligne = 5 And Colonne = 8 And bye = 1 Then
        bye = 2
        Fichier = "\promenade2.txt"
        vidercase
        OuvrirFichier
        Afficher
    ElseIf Ligne = 7 And Colonne = 7 And bye = 2 Then
        bye = 3
        Fichier = "\promenade3.txt"
        vidercase
        OuvrirFichier
        Afficher
    ElseIf Ligne = 7 And Colonne = 4 And bye = 3 Then
        MsgBox "Félicitations!"
        Unload Me
        End
    End If
End Sub

Public Sub vidercase()
    ' Permet de "nettoyer" le niveau
    For J = 1 To NbLignes * NbColonnes
        DsnCase(J).Picture = LoadPicture()
    Next J
End Sub 

 Conclusion

Pour information, je suis québécois (CAN) et j'ai 14 ans. J'adore l'informatique, je suis assez connaissant dans les sytèmes et j'aime jouer à des jeux vidéo pour me détendre de temps en temps. J'aimerais bien que vous testiez ça et que vous disiez ce que vous en pensez. (Critiques constructives S.V.P) Merci et bon "jeu" héhé :P

Yawa

 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


 Sources du même auteur

Source avec Zip Source avec une capture JEU DE DÉS
Source avec Zip Source avec une capture DÉCODEUR DE TEXTE
Source avec Zip Source avec une capture CONVERTISSEUR SIMPLE ASCII

 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

Commentaires et avis

Commentaire de cyrianox le 29/11/2002 04:38:16

pas mal du tout !!!
code clair et simple; prévu pour être évolué.

Félicitations, à 14ans, j'étais loin de savoir faire ça :)

Commentaire de yawa le 29/11/2002 04:41:06

Merci ^^
Ça fait toujours plaisir d'avoir des commentaires comme ceux-ci !

Yawa

Commentaire de DARKSIDIOUS le 29/11/2002 06:35:35 administrateur CS

Bon, c'est vrai que le labyrinthe est tout petit, mais le code est clair, côté graphisme, c'est pas trop mal, et c'est bien fait, donc, je mets 9/10.

DARK SIDIOUS

Commentaire de moustachu le 29/11/2002 09:29:54

J'ai eu du mal à finir le niveau :)
Blagues à part ce n'est pas fréquent de voir un code propre alors 9/10 également

moustachu

Commentaire de SibosisITS le 29/11/2002 12:09:21

Je suis d'accord avec les autres : le code est clair et bien indenté. 9/10 également.

Le code pourrait être un peu condensé (tout en conservant sa clarté). Les fonctions 'haut' et 'bas' d'une part, 'gauche' et 'droite' d'autre part pourraient être réunies en une, en passant un argument à la procédure lui indiquant la direction :

Public Sub gauchedroite(D as Integer)      'D=-1 pour gauche, D=1 pour droite
        ' Quand l'utilisateur a appuyé sur la touche gauche ou droite...
        If Colonne + D &gt; 8 or Colonne + D &lt; 1 Then Beep: Exit Sub
        If Planche(Ligne, Colonne + D) &lt;&gt; 1 Then
                For J = 1 To 8
                        DsnBonhomme.Left = DsnBonhomme.Left + D * (480 / 8)
                        Sleep 30 ' Effet de glissement (voir module)
                Next J
                Colonne = Colonne + D
        End If
End Sub

Public Sub hautbas(D as Integer)     'D=-1 pour haut, D=1 pour bas
        ' Quand l'utilisateur a appuyé sur la touche haut...
        If (Ligne + D) &lt; 1 Or (Ligne + D) &gt; 8 Then Beep: Exit Sub
        If Planche(Ligne + D, Colonne) &lt;&gt; 1 Then
                For J = 1 To 8
                        DsnBonhomme.Top = DsnBonhomme.Top + D * (480 / 8)
                        Sleep 30 ' Effet de glissement (voir module)
                Next J
                Ligne = Ligne + D
        End If
End Sub

Ainsi, dans la fonction keydown, on remplace :
'haut' par 'hautbas -1'
'bas' par 'hautbas 1'
'gauche' par 'gauchedroite -1'
'droite' par 'gauche droite 1'

Même si le 'Copier-Coller' fonctionne très bien - et on aurait tort de s'en priver ;) -, ce genre de regroupements peut s'avérer pratique pour le débogage : Ici, s'il y a une erreur, on n'aura à la corriger qu'une fois au lieu de deux...

(:   Sibo   ;)

Commentaire de miko500 le 29/11/2002 12:37:26

Et ben dis donc, j'ai aussi 14 ans mais je savais pas faire ça, une question, tu prog depuis combien de tmps sur vb ?

Commentaire de yawa le 29/11/2002 14:10:08

Bonjour ^^

Darksidious: Je crois que je vais agrandir les niveaux et en ajouter des mises à jour quand j'aurai terminé. J'ajouterai aussi des méchants et autres...

Moustachu: Merci ^^

SibosisITS: C'est vrai quand même qu'on pourrait regrouper haut et bas ensemble.. j'y avais pas pensé... je vais peut-être modifier le codage de la prochaine version de cette méthode. Merci ^^

Miko500: Ça fait environ 1 an et demi que je programme en VB. Ça fait plusieurs mois que je viens sur VBFrance, mais je ne me suis jamais inscrit ni posté des sources et commentaires. Tu vas voir, avec le temps, ça va venir ! (pense que moi, à 7 ans, je savais naviguer sur internet donc ça fait longtemps que je connais les ordinateurs et je suis assez bon, sans vouloir me vanter !)

Merci à tous.
Je répondrai à tous les autres commentaires s'ils se postent.
Yawa

Commentaire de miko500 le 29/11/2002 15:58:54

Ah ouai...moi j'ai eu un ordinateur il ya seulement 3ans...mais je m'y intéresse depuis au moins la 6ème!! à l'age de 7ans, c'est très tôt!!

à+

Commentaire de yawa le 29/11/2002 23:35:54

Hello à tous,

Miko500: Ben oui, mais j'adore ça, mes parents me disent toujours de lâcher l'ordinateur... mais c'est rare que je les écoute et j'y vais le soir héhé... bon tranche de vie, je vais agrandir les niveaux du labyrinthe et essayer de faire une mise à jour.. on verra :P

Ceux qui voudrait me contacter par MSN Messenger ou par courriel tout simplement: yawa14@free.fr

Bonne fin de soirée !

Commentaire de Skatanic le 04/06/2003 04:10:50

sauf que tu la pris dans le cahier de visual basic ISI-534 hehe je suis en train de faire se cahier et il y a exactemeent le meme code y compris la matrice comment elle est faite et les clef puis il y a tout le code pour les 4 icon :P donc ceci n'est pas ton code. :P

Commentaire de yawa le 04/06/2003 13:23:14

Bonjour,
Le code provient d'un cachier. Mais j'ai fait ça dans un cours, et le prof nous faisait deviner le code. Elle nous a expliqué le principe de la matrice. Et voilà j'ai deviné le code, je l'ai fait. Et le prof m'a expliqué où je pourrais rendre ça plus clair etc... Le code je crois provient de moi. Je crois que l'important c'est que le monde puisse en profiter.

Commentaire de DaRkViRuS le 05/04/2004 18:27:23

Ma puce inc., hein ;)

Commentaire de DaRkViRuS le 05/04/2004 18:27:24

Ma puce inc., hein ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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 : 1,014 sec (4)

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