Joystick, fenetre qui ne s'ouvre pas.

Signaler
Messages postés
1
Date d'inscription
dimanche 6 avril 2014
Statut
Membre
Dernière intervention
6 avril 2015
-
Bonjour,

Je suis débutant, et je tente d'écrire une programme utilisant deux Form et un joystick. J'ai un problème que je ne comprend pas, car en utilisant les codes que je trouve sur internet, alors que mes deux fenêtres s'ouvre correctement, mais dés que je tape l'instruction


 foreach( DeviceInstance di in Manager.GetDevices(DeviceClass.GameControl,EnumDevicesFlags.AttachedOnly))
    {
    joystick = new Device(di.InstanceGuid);
        break;
    } 


les 2 fenêtres ne se lancent plus et Visual C# me dis que le programme est lance. J'ai passe tout l'Après midi a chercher ce qui n'allait pas.
Je viens de ré-installer mon PC sous windows 7. j'utilise directX. Voici le code complet que j'ai un peu dépoussiéré.


Merci

Pascal


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectInput;

using Microsoft.DirectX.AudioVideoPlayback;
using System.Collections;

// Mettre la propriete Keypreview a true
// et l'evenement Keypress sur la fonction form_keypress
// la fonction qui est utilise quand on utilise la barre espace est : Form_KeyPress
// la Form1 est coté Arbitre, 
// la form2 est coté Combattant
// la barre espace fonctionne, mais je ne peux pas utilise d'autre touche. ce n'est pas grave, dans le logiciel de DAE DO, seul la barre espace est utilise
// il n,e me reste plus qu'a utilise le joystick, et je pourrai ré-ecrire le programme


namespace Tae_kwon_do_Training_Machine
{
    public partial class Form1 : Form
    {
        //  Declarer ici les variables


        private Hashtable joy;  // variable pour le joystick
        int toto;
        bool touchePressee;
        Form2 Form2;


        public Form1()           
        {
            InitializeComponent();
            Form2 = new Form2();
            Form2.Show();
            // Initialiser ici les variables
            toto = 0;

            //-------------- Détection du joystick

 Device joystick = null;      // Pour l'acquisition des boutons     

            joy = new Hashtable();   //private Hashtable joy;  // v pour le joystick
            int i = 0;


 foreach( DeviceInstance di in Manager.GetDevices(DeviceClass.GameControl,EnumDevicesFlags.AttachedOnly))
    {
    joystick = new Device(di.InstanceGuid);
        break;
    }
           

        }  //   public Form1()

    

        private void button_son_Click(object sender, EventArgs e)
        {
            if (CheckBoutonPressee())
                return;
            System.Media.SoundPlayer player = new System.Media.SoundPlayer(Application.StartupPath + @"\sons\son_1.wav");
            player.Play();

        }

        private void button_compteur_Click(object sender, EventArgs e)
        {
            if (CheckBoutonPressee())
                return;
            toto++;
            Form2.label1.Text = toto.ToString("d2");
        }

        void Form_KeyPress(object sender, KeyPressEventArgs e)
        {
        
            if (e != null)
             
                F_utilisation_barre_espace();
             
        }

          void F_utilisation_barre_espace()
  {
      // {
             //  if ( e.KeyChar == (char)Keys.Space)
              //{
                  System.Media.SoundPlayer player = new System.Media.SoundPlayer(Application.StartupPath + @"\sons\son_2.wav");
                 player.Play();
                 Form2.label1.Text = " la  touche espace est la seul  a etre selectionne";
                 touchePressee = true;    // ne pas oublier cette ligne
}

          
        private bool CheckBoutonPressee()
        {
            if (touchePressee)
            {
                touchePressee = false;
                return true;
            }
            else
            {
                return false;
            }

        }

 
        private void Form1_Load_1(object sender, EventArgs e)
        {

        }
 // Device joystick = null;
    
           private void timer1_Tick(object sender, EventArgs e)
           {
               /*  
                string info = "";
                for (int y = 0; y < joy.Count; y++)
                {
                    joystick = (Device)joy[y];
                    info += "Joystick[" + y.ToString() + "]: ";

                    //recupere l'etat du joystick.
                    JoystickState state = joystick.CurrentJoystickState;

                    byte[] buttons = state.GetButtons();
                    for (int i = 0; i < buttons.Length; i++)
                    {
                        // info += "Button[" + i + "]=" + buttons[i];

                        if (i == 4 )                    
                            Form2.label1.Text = " le bouton 4 fonctionne";
                  
               
                    } // ifor(int i = 0; i < buttons.Length; i++)
      
                }   //for(int y = 0; y<joy.Count;y++)
      
          */
           }  //Timer1Tick(object sender, EventArgs e)
    



    }  //  public partial class Form1 : Form
}  //  namespace Tae_kwon_do_Training_Machine


EDIT: Ajout de la coloration syntaxique.