Beispiel #1
0
	def ProgDetectCard(self):
		self.th = CardThread(str(self.C1),str(self.C2)) #Initialise le Thread
		self.th.start() #Le lance (sa fonction run())
		lcd = Lcd(1)
		butCache = Button(5)
		estAppuie = False
		afficheTemps = False
		tempsAttente = datetime.now()
		lcd.setText("En attente de   carte ...")
		lcd.setColor("bleu")
		while self.th.valCard == "": #Attends qu'il récupère sa valeur 
			if butCache.estAppuie() and not estAppuie:
				estAppuie = True
			elif not butCache.estAppuie() and estAppuie:
				return -2
			#Si ça fait déjà 4 secondes que le joueur n'a pas mit la carte on annonce que c'est bientôt fini
			elif not afficheTemps and 4 == int((datetime.now() - tempsAttente).total_seconds()):
				lcd.setText("Bientot fini...")
				lcd.setColor("rouge")
				afficheTemps = True
		print("test : ",self.th.valCard[2])
		if len(self.th.valCard[2]) > 2 : # Pas de carte au bout de 10 seconde
			return -2
		else :
			return self.th.valCard[2] #La retourne
Beispiel #2
0
 def ProgDetectCard(self):
     self.th = myThread(str(self.C1), str(self.C2))  #Initialise un Thread
     self.th.start()  #Le lance
     lcd = Lcd(1)
     butCache = Button(5)
     estAppuie = False
     lcd.setText("En attente de   carte ...")
     lcd.setColor("bleu")
     while self.th.valCard == "":  #Attends qu'il récupère sa valeur
         if butCache.estAppuie() and not estAppuie:
             estAppuie = True
         elif not butCache.estAppuie() and estAppuie:
             self.th.tuer()
             return -2  #Quitte le programme : le joueur abandonne
     print("test : ", self.th.valCard[2])
     return self.th.valCard[2]  #La retourne
Beispiel #3
0
manag = Mp.ManagParams() # gestion des paramètre modifiable de la raspberry
manag.modifParams() #Demande à l'utilisateur s'il veut modifier les paramètres avant de lancer la partie.
#Fonction permettant de récuperer une valeur d'un paramètre enregister, renvoie la valeur par défaut s'il ne la trouve pas
def verifPresenceParams(param,valDefault):
	valParam = manag.get(param)	
	if valParam != False: # S'il n'y a pas eu d'erreur on met le temps stocké
		return valParam
	return valDefault #Sinon on renvoie la valeur par défaut

#Gestion des capteurs 
but3 = Button(3) # Permet de lancer la détection de code (Enigme 1 et 2)
but4 = Button(4) # Permet de lancer l'énigme 3 
butCache = Button(5) # Permet de lancer l'énigme 5 
captLum = CapteurLum(0) # Permet de lancer l'énigme 4
led = Led(7) #Permet de contrôler l'allumage de la LED
lcd = Lcd(1) #Permet d'afficher des messages au joueur

#Initialisaion Escape Game
led.turnOff()
estAppuie3 = False
estAppuie4 = False
estAppuieCacher = False
tempsTotal = verifPresenceParams("tempsTotal",600) #Récupère le temps stocké 


tempsRestant = tempsTotal
strEnigmeFini = ["-","-","-","-","-","-"] #Tableau des Enigmes fini (- : non terminer, X : terminé)
lcd.setText("Esc Game "+''.join(strEnigmeFini)+"   "+str(tempsTotal)+" secondes ")
lcd.setColor("vert")
time.sleep(1)
Beispiel #4
0
def Enigme6(tLim):
    Led1 = Led(7)
    lcd = Lcd(1)
    Button2 = Button(2)
    ButEstAppuie = False
    TabAvancer = [
        False, False, False
    ]  #0 : bouton enclenché, #1 : Capteur de présence enclenché, #2 Bouton réappuyé
    CapteurMvt1 = CaptMvt(8)
    tempsLimite = tLim
    tempsCommence = -1
    LcdAffiche = False
    time.sleep(0.5)
    lcd.setText("Debut Enigme     finale")
    time.sleep(2)
    lcd.setColor("vert")
    lcd.setText("Appuyez sur un bouton :)")
    time.sleep(2)
    while True:
        if not TabAvancer[0]:
            if Button2.estAppuie() and not ButEstAppuie:
                ButEstAppuie = True
            elif not Button2.estAppuie() and ButEstAppuie:
                tempsCommence = datetime.now()
                lcd.setColor("vert")
                lcd.setText("Cette Led doit  s'allumer")
                time.sleep(1.5)
                TabAvancer[0] = True
        elif not TabAvancer[1] and (
                datetime.now() - tempsCommence).total_seconds() <= tempsLimite:
            if CapteurMvt1.estPresence():
                lcd.setColor("vert")
                lcd.setText("1 etape sur 2   realisee")
                time.sleep(1.5)
                TabAvancer[1] = True
                ButEstAppuie = False
        elif TabAvancer[1] and not TabAvancer[2] and (
                datetime.now() - tempsCommence).total_seconds() <= tempsLimite:
            if Button2.estAppuie() and not ButEstAppuie:
                ButEstAppuie = True
            elif not Button2.estAppuie() and ButEstAppuie:
                Led1.turnOn()
                lcd.setColor("vert")
                lcd.setText("Led allumee bravo, Enigme finale reussie !")
                time.sleep(2)
                return True
        else:  #Temps dépassé
            lcd.setColor("rouge")
            if not TabAvancer[1]:
                lcd.setText("Temps depasse, il manque 2 etapes !")
            else:
                lcd.setText("Temps depasse, il manque une etape ! ")
            time.sleep(2)
            lcd.setColor("vert")
            return False
Beispiel #5
0
def Enigme5(tLim) :
	But0 = Button(2)
	But1 = Button(3)
	But2 = Button(4)
	ButCacher = Button(5) # Permet de quitter l'énigme si le joueur n'y arrive pas
	EstAppuieCacher = False 
	lcd = Lcd(1)
	
	#Cartes NFC
	codestr1 = "['0x9e','0xb8','0x0','0x0']"
	codestr2 = "['0x1f','0xf5','0x90','0x0']"
	nfc = NFC(codestr1,codestr2) #Initialisation du NFC
	nfcActive = False #N'est pas activé encore pour le joueur	

	tabB = [But0,But1,But2]
	tabEstAppuie = [False,False,False]
	tempsLimite = tLim
	tempsCommence = -1

	LcdAffiche = False
	time.sleep(0.5)
	lcd.setText("Debut Enigme5")
	time.sleep(2)
	while True :
		if ButCacher.estAppuie() and not EstAppuieCacher:
			EstAppuieCacher = True
		if not ButCacher.estAppuie() and EstAppuieCacher: #Le joueur à réappuyer sur le bouton caché : il veut quitté l'énigme
			return False
		if not nfcActive : #NFC non activé encore
			if LcdAffiche == False :
				butX = random.randint(0,2) #Button aléatoire entre 0, 1 et 2
				butX2 = random.randint(0,2)
				while butX == butX2: # tant que c'est les mêmes, on refait un tirage
					butX = random.randint(0,2)		
				tabCode = ["0","0","0"]
				tabCode[butX] = "X"
				tabCode[butX2] = "X"
				time.sleep(0.1)
				lcd.setColor("vert")
				lcd.setText("-".join(tabCode)+"  Activer le lecteur!")
				tempsCommence = datetime.now()
				LcdAffiche = True
			# On a cliqué le mauvais bouton, ou le temps a été dépassé
			if (datetime.now()-tempsCommence).total_seconds() > tempsLimite or (tabB[0].estAppuie() and (0 != butX and 0 != butX2)) or (tabB[1].estAppuie() and (1 != butX and 1 != butX2)) or (tabB[2].estAppuie() and (2 != butX and 2 != butX2)):
				lcd.setColor("rouge")
				if (datetime.now()-tempsCommence).total_seconds() > tempsLimite :	
					lcd.setText("Temps depasse ! ")
				else :	
					lcd.setText("Oups.. Mauvais Code!")
				time.sleep(2)
				lcd.setColor("vert")
				#lcd.setText("Essaye encore ! ")
				#LcdAffiche = False
				return False
			if tabB[butX].estAppuie() and tabB[butX2].estAppuie() :
				tabEstAppuie[butX] = True
				tabEstAppuie[butX2] = True
			elif not tabB[butX].estAppuie() and tabEstAppuie[butX] and not tabB[butX2].estAppuie() and tabEstAppuie[butX2] and (datetime.now()-tempsCommence).total_seconds() <= tempsLimite: #il a appuyé sur les bon bouton à temps
				lcd.setColor("vert")
				lcd.setText("   Lecteur   \n NFC  active!")
				time.sleep(2)
				tabEstAppuie[butX] = False
				tabEstAppuie[butX2] = False
				nfcActive = True
		else : 
			val = nfc.ProgDetectCard() 
			print(val)
			if val == "2": #Si le NFC est activé et qu'il donne la bonne carte : Enigme fini
				lcd.setColor("vert")
				lcd.setText("Enigme 5 reussie")
				time.sleep(2)
				return True
			elif val == "-2":
				return False #Le joueur à abandonné
			else:
				lcd.setText("mauvaise carte ..")
				time.sleep(2)
				lcd.setColor("vert")
				return False
Beispiel #6
0
def Enigme1(nbrEtape, tLim, valTempsDiminu):

    lcd = Lcd(1)
    But1 = Button(2)
    But2 = Button(3)
    But3 = Button(4)

    tabB = [But1, But2, But3]
    tabEstAppuie = [False, False, False]
    indiceEtape = 0
    tempsLimite = tLim
    tempsCommence = -1

    LcdAffiche = False

    time.sleep(0.5)
    lcd.setText("Debut Enigme1")
    time.sleep(2)

    while (indiceEtape < nbrEtape):
        if LcdAffiche == False:  # affiche code à rentré
            butX = random.randint(0, 2)  # entre bouton 0, 1 et 2
            tabCode = ["0", "0", "0"]
            tabCode[butX] = "X"
            time.sleep(0.1)
            lcd.setText("-".join(tabCode))
            LcdAffiche = True
            tempsCommence = datetime.now()
        #S'il appuie sur les autre boutons ou que le temps est fini on recommence depuis le début
        if (datetime.now() - tempsCommence).total_seconds() > tempsLimite or (
                tabB[0].estAppuie()
                and 0 != butX) or (tabB[1].estAppuie()
                                   and 1 != butX) or (tabB[2].estAppuie()
                                                      and 2 != butX):
            indiceEtape = 0
            tempsLimite = tLim
            lcd.setColor("rouge")
            if (datetime.now() - tempsCommence).total_seconds() > tempsLimite:
                lcd.setText("Temps dépasse ! ")
            else:
                lcd.setText("Oups.. Perdu !")
            time.sleep(2)
            lcd.setColor("vert")
            lcd.setText("On recommence ! ")
            LcdAffiche = False
        if tabB[butX].estAppuie():
            tabEstAppuie[butX] = True
        elif not tabB[butX].estAppuie() and tabEstAppuie[butX] and (
                datetime.now() - tempsCommence).total_seconds(
                ) <= tempsLimite:  #il a appuyé sur le bon bouton à temps
            print("Bravo ! ")
            tabEstAppuie[butX] = False
            indiceEtape += 1
            if nbrEtape == indiceEtape:  # fini
                lcd.setText("BRAVO !\n Fini !")
                time.sleep(2)
                return True
            else:  # reste des étapes
                if tempsLimite - valTempsDiminu <= 1:
                    tempsLimite = 1  # 1 seconde minimum
                else:
                    tempsLimite -= valTempsDiminu  #Diminue le temps
                LcdAffiche = False
                lcd.setText("Etape" + str(indiceEtape) + " reussie")
                time.sleep(1)
def DetectCode(code1, code2):
    lcd = Lcd(1)
    But1 = Button(2)
    But2 = Button(3)
    But3 = Button(4)
    LancementDirect = True
    tabB = [But1, But2, But3]
    tabEstAppuie = [False, False, False]
    codeEnigme1 = code1
    codeEnigme2 = code2
    tabCodeEntrer = [-1, -1, -1, -1]

    ContinueEntrerCode = True
    LcdAffiche = False
    while ContinueEntrerCode:
        if LancementDirect or (tabB[1].estAppuie() and LcdAffiche == False):
            lcd.setText("Rentre un code!")
            LcdAffiche = True
            LancementDirect = False
            i = 0
            while (i < 4):
                if tabB[0].estAppuie() or tabB[1].estAppuie(
                ) or tabB[2].estAppuie():
                    if (tabB[0].estAppuie()):
                        tabEstAppuie[0] = True
                    if (tabB[1].estAppuie()):
                        tabEstAppuie[1] = True
                    if (tabB[2].estAppuie()):
                        tabEstAppuie[2] = True
                if (not tabB[0].estAppuie()
                        and tabEstAppuie[0]):  #relache le premier boutou
                    tabCodeEntrer[i] = 0
                    i += 1
                    tabEstAppuie[0] = False
                if (not tabB[1].estAppuie()
                        and tabEstAppuie[1]):  #relache le deuxième bouton
                    tabCodeEntrer[i] = 1
                    i += 1
                    tabEstAppuie[1] = False
                if (not tabB[2].estAppuie()
                        and tabEstAppuie[2]):  #relache le troisème bouton
                    tabCodeEntrer[i] = 2
                    i += 1
                    tabEstAppuie[2] = False
            estCode1 = True
            estCode2 = True
            for j in range(4):
                if (tabCodeEntrer[j] != codeEnigme1[j]):
                    estCode1 = False
                if (tabCodeEntrer[j] != codeEnigme2[j]):
                    estCode2 = False
            if (estCode1):
                print("code 1")
                return 1
            elif (estCode2):
                print("code 2")
                return 2
            else:
                lcd.setText("Erreur !")
                lcd.setColor("rouge")
                time.sleep(1.5)
                lcd.setColor("vert")
                lcd.setText("But2 : restart\nBut3 : stop")
                LcdAffiche = False
        elif tabB[2].estAppuie() and LcdAffiche == False:  #Veut arrêter
            lcd.setText("Arret ...")
            return -1
Beispiel #8
0
def Enigme2(nbrEtape):
	
	lcd = Lcd(1)
	captMvt = CaptMvt(8) #Capteur de présence
	captUlt = DUltraSon(6) #Capteur de distance Ultrason
	tabCapt = [captMvt,captUlt]
	tabEstPresence = [False,False]
	indiceEtape = 0
	DistMaxPresence = 100 
	LcdAffiche = False
	
	time.sleep(0.5)
	lcd.setText("Debut Enigme2")
	time.sleep(2)
	
	while(indiceEtape < nbrEtape):
		if LcdAffiche == False : # affiche code à rentré
			capteurX = random.randint(0, 1) # Choisie entre capteur 1 et 2
			lcd.setText("Recepteur "+str(capteurX))
			LcdAffiche = True
			time.sleep(0.5)
		#S'il enlenche le mauvais capteur on recommence depuis le début
		if (tabCapt[0].estPresence() and 0 != capteurX) or (tabCapt[1].estPPD(DistMaxPresence) and 1 != capteurX):  
			indiceEtape = 0
			lcd.setColor("rouge")
			lcd.setText("Oups.. Perdu !")
			time.sleep(2)
			lcd.setColor("vert")
			lcd.setText("On recommence ! ")
			LcdAffiche = False
		if  not tabEstPresence[capteurX] and ((0 == capteurX and tabCapt[0].estPresence()) or (1 == capteurX and tabCapt[1].estPPD(DistMaxPresence))): #le détecteur la capté, on attend qu'il ressorte de la zone
			tabEstPresence[capteurX] = True
		elif tabEstPresence[capteurX] and ((0 == capteurX and not tabCapt[capteurX].estPresence()) or (1 == capteurX and not tabCapt[1].estPPD(DistMaxPresence))): #il est sortie de la zone
			print("Bravo")
			tabEstPresence[capteurX] = False
			indiceEtape+=1
			if nbrEtape == indiceEtape: # fini
				lcd.setText("BRAVO !\n Fini !")
				time.sleep(2)
				return True
			else : # reste des étapes
				LcdAffiche = False
				lcd.setText("Etape "+str(indiceEtape)+" reussie")
				time.sleep(2)
Beispiel #9
0
def Enigme3(tLim, nbTour, zone):
    captUlt = DUltraSon(6)
    lcd = Lcd(1)
    led = Led(7)

    #Cartes NFC
    codestr1 = "['0x9e','0xb8','0x0','0x0']"
    codestr2 = "['0x1f','0xf5','0x90','0x0']"
    nfc = NFC(codestr1, codestr2)  #Initialisation du NFC

    time.sleep(0.5)
    lcd.setText("Debut Enigme3")
    nbtMax = 5
    time.sleep(2)

    val = nfc.ProgDetectCard()  #test carte
    print(val)
    if val == "1":  #bonne carte
        i = 0
        while nbtMax > 0 and i < nbTour:
            Dist = random.randint(
                10, 200)  #Button aléatoire entre 10 et 400 (centimetre)
            time.sleep(0.1)
            lcd.setColor("vert")
            lcd.setText("Dist : " + str(Dist) + "cm..")
            led.blinkPlus(tLim)
            if captUlt.estDansZone(
                    Dist - zone,
                    Dist + zone):  #si le joueur est dans la bonne distance
                lcd.setText(" -- Bravo! --   Etape " + str(i) + " finie")
                time.sleep(1.5)
                i = i + 1
            else:
                time.sleep(1)
                lcd.setColor("rouge")
                lcd.setText("Mauvaise distance !")
                i = 0
                nbtMax = nbtMax - 1
                time.sleep(1.5)
                lcd.setText("On recommence !")
                time.sleep(1)
        led.turnOff()
        if nbtMax <= 0:
            lcd.setText("Enigme echouer :(")
            time.sleep(1)
            return False
        return True
    elif val == "-2":
        lcd.setText("Plus de temps")
        return False
    else:  #mauvaise carte
        lcd.setText("mauvaise carte ..")
        return False