Microsoft Small Basic

Program Listing: FND630
Nb_Joueur = 2 ' Nombre de joueurs

Nb_Cartes_Distribuees = 1 ' Nombre de cartes distribuées par joueur

Nb_Cartes_Total[1] = 32 ' 1 jeu de 32 cartes
Nb_Cartes_Total[2] = 54 ' 1 jeu de 54 cartes
Nb_Cartes_Total[3] = 64 ' 2 jeux de 32 cartes
Nb_Cartes_Total[4] = 96 ' 2 jeux de 54 cartes
Nb_Cartes_Total[5] = 108 ' 3 jeux de 32 cartes
Nb_Cartes_Total[6] = 128 ' 4 jeux de 32 cartes
Nb_Cartes_Total[7] = 160 ' 5 jeux de 32 cartes
Nb_Cartes_Total[8] = 162 ' 3 jeux de 54 cartes
Index_CT = 2 ' Index pour balayer le tableau Nb_Cartes_Total

LCD.Clear()
LCD.Text(1,0,0,0,"DISTRIBUTEUR DE CARTES")

' Choix du mode de fonctionnement
LCD.Text(1,0,20,0,"Choix du mode :")
LCD.Text(1,0,30,0,"1. Melange seul")
LCD.Text(1,0,40,0,"2. Melange + Distribue")
bouton_presse=""
Mode = 1
While bouton_presse<>"E"
If bouton_presse="U" then
Mode=Mode+1
If Mode>2 Then
Mode=2
EndIf
EndIf
If bouton_presse="D" then
Mode=Mode-1
If Mode<1 Then
Mode=1
EndIf
EndIf
LCD.Text(1,24,50,0," ")
LCD.Text(1,24,50,0,Mode)
Buttons.Flush()
Buttons.Wait()
bouton_presse=buttons.GetClicks()
EndWhile

If Mode=1 then
Motor.Start("B",-100)
Program.Delay(30000)
Motor.Stop("B","False")
Goto fin
EndIf

LCD.Clear()
LCD.Text(1,0,0,0,"DISTRIBUTEUR DE CARTES")

' Choix du nombre de cartes constituant le jeu
LCD.Text(1,0,18,0,"Nbre de cartes total ?")
bouton_presse=""
While bouton_presse<>"E"
If bouton_presse="U" then
Index_CT=Index_CT+1
If Index_CT>8 Then
Index_CT=8
EndIf
EndIf
If bouton_presse="D" then
Index_CT=Index_CT-1
If Index_CT<1 Then
Index_CT=1
EndIf
EndIf
LCD.Text(1,64,30,0," ")
LCD.Text(1,64,30,0,Nb_Cartes_Total[Index_CT])
Buttons.Flush()
Buttons.Wait()
bouton_presse=buttons.GetClicks()
EndWhile

' Choix du nombre de joueurs
LCD.Text(1,0,40,0,"Nbre de joueurs ?")
bouton_presse=""
While bouton_presse<>"E"
If bouton_presse="U" then
Nb_Joueur=Nb_Joueur+1
If Nb_Joueur>Nb_Cartes_Total[Index_CT] Then
Nb_Joueur=Nb_Cartes_Total[Index_CT]
EndIf
EndIf
If bouton_presse="D" then
Nb_Joueur=Nb_Joueur-1
If Nb_Joueur<2 Then
Nb_Joueur=2
EndIf
EndIf
LCD.Text(1,72,52,0," ")
LCD.Text(1,72,52,0,Nb_Joueur)
Buttons.Flush()
Buttons.Wait()
bouton_presse=buttons.GetClicks()
EndWhile

' Choix du nombre de cartes par joueur
Nb_Cartes_Max = Math.Floor(Nb_Cartes_Total[Index_CT]/Nb_Joueur)
LCD.Text(1,0,62,0,"Nbre cartes/joueur ?")
bouton_presse=""
While bouton_presse<>"E"
If bouton_presse="U" then
Nb_Cartes_Distribuees=Nb_Cartes_Distribuees+1
If Nb_Cartes_Distribuees>Nb_Cartes_Max Then
Nb_Cartes_Distribuees=Nb_Cartes_Max
EndIf
EndIf
If bouton_presse="D" then
Nb_Joueur=Nb_Joueur-1
If Nb_Cartes_Distribuees<1 Then
Nb_Cartes_Distribuees=1
EndIf
EndIf
LCD.Text(1,72,74,0," ")
LCD.Text(1,72,74,0,Nb_Cartes_Distribuees)
Buttons.Flush()
Buttons.Wait()
bouton_presse=buttons.GetClicks()
EndWhile

' Choix de l'amplitude de rotation
Amplitude_Rotation = 360 ' Valeur angulaire de l'amplitude totale de distribution
LCD.Text(1,0,84,0,"Amplitude Rotation ?")
bouton_presse=""
While bouton_presse<>"E"
If bouton_presse="U" then
Amplitude_Rotation=Amplitude_Rotation+30
If Amplitude_Rotation>360 Then
Amplitude_Rotation=360
EndIf
EndIf
If bouton_presse="D" then
Amplitude_Rotation=Amplitude_Rotation-30
If Amplitude_Rotation<90 Then
Amplitude_Rotation=90
EndIf
EndIf
LCD.Text(1,72,96,0," ")
LCD.Text(1,72,96,0,Amplitude_Rotation)
Buttons.Flush()
Buttons.Wait()
bouton_presse=buttons.GetClicks()
EndWhile
Amplitude_Rotation=Amplitude_Rotation*7.5
Pas_Rotation=Amplitude_Rotation/(Nb_Joueur-1)

boucle_principale:

LCD.Clear()
LCD.Text(1,16,45,0,"Attente Depart !!!")
while Sensor.ReadPercent(2)=0
EndWhile

Motor.Start("B",-100)
Program.Delay(25000)
Motor.Stop("B","False")

Index_Distri_cartes=1
Index_Distri_Joueurs=1

boucle_distribution:

Carte_Donnee="False"

Motor.Move("A",100,680,"True")
Motor.Move("A",-100,450,"False")

verification_donne:

If Sensor.ReadPercent(1)=0 Then
Carte_Donnee="True"
Index_Distri_Joueurs=Index_Distri_Joueurs+1
If Index_Distri_Joueurs<=Nb_Joueur Then
Motor.Move("C",100,Pas_Rotation,"True")
Goto boucle_distribution
Else
Index_Distri_cartes=Index_Distri_cartes+1
Motor.Move("C",-100,Amplitude_Rotation,"True")
Index_Distri_Joueurs=1
If Index_Distri_cartes<=Nb_Cartes_Distribuees Then
Goto boucle_distribution
Else
Goto boucle_principale
EndIf
EndIf
Else
Motor.Move("A",100,170,"True")
Motor.Move("A",-100,450,"False")
Goto verification_donne
EndIf

fin: