maks1823
Posts: 1
Joined: Tue May 19, 2015 5:59 pm

Quiz with Tact Switches - need help

Tue May 19, 2015 6:08 pm

Hi,

I wrote this code:

Code: Select all

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP)
x = 1
pytanie1 = "pyt"
print("")
time.sleep(2)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("")
time.sleep(0.05)
print("3...")
time.sleep(1)
print("2...")
time.sleep(1)
print("1...")
time.sleep(1)
print("0!")
time.sleep(1)
print("")
print("")
print("")
print(pytanie1)
x = 1

while x == 1:
    pytanie1 = "Kim byl Zeus?"
    pytanie2 = "Atena"
    pytanie3 = "EURYKA"
    pytanie4 = "Hesia"
    pytanie5 = "Demeter"
    pytanie6 = ""
    pytanie7 = ""
    pytanie8 = ""
    pytanie9 = ""
    pytanie10 = ""
    pytanie11 = ""
    pytanie12 = ""
    pytanie13 = ""
    pytanie14 = ""
    pytanie15 = ""
    pytanie16 = ""
    pytanie17 = ""
    pytanie18 = ""
    pytanie19 = ""
    pytanie20 = ""
    pytanie21 = ""
    pytanie22 = ""
    pytanie23 = ""
    pytanie24 = ""
    pytanie25 = ""
    pytanie26 = ""
    pytanie27 = ""
    pytanie28 = ""
    pytanie29 = ""
    pytanie30 = ""
    pytanie31 = ""
    pytanie32 = ""
    pytanie33 = ""
    pytanie34 = ""
    pytanie35 = ""
    pytanie36 = ""
    pytanie37 = ""
    pytanie38 = ""
    pytanie39 = ""
    pytanie40 = ""
    pytanie41 = ""
    pytanie42 = ""
    pytanie43 = ""
    pytanie44 = ""
    pytanie45 = ""
    pytanie46 = ""
    pytanie47 = ""
    pytanie48 = ""
    pytanie49 = ""
    pytanie50 = ""
    input_state1 = GPIO.input(18)
    input_state2 = GPIO.input(23)
    input_state3 = GPIO.input(24)
    input_state4 = GPIO.input(25)
    
    if GPIO.input(18) == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie1)
        x = x+1
    if GPIO.input(23) == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie1)
        x = x+1
    if GPIO.input(24) == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie1)
        x = x+1
    if GPIO.input(25) == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie1)
        x = x+1
while x == 2:
    time.sleep(2)
    print(pytanie2)
    x = x+1
while x == 3:
    if GPIO.input(18) == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie2)
        x = x+1
    if GPIO.input(23) == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie2)
        x = x+1
    if GPIO.input(24) == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie2)
        x = x+1
    if GPIO.input(25) == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie2)
        x = x+1
      
while x == 4:
    print(pytanie3)
    x = x+1
while x == 5:
    if GPIO.input(18) == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie3)
        x = x+1
    if GPIO.input(23) == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie3)
        x = x+1
    if GPIO.input(24) == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie3)
        x = x+1
    if GPIO.input(25) == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie3)
        x = x+1
while x == 6:
      print(pytanie4)
      x = x+1
while x == 7:
    if GPIO.input(18) == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie4)
        x = x+1
    if GPIO.input(23) == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie4)
        x = x+1
    if GPIO.input(24) == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie4)
        x = x+1
    if GPIO.input(25) == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie4)
        x = x+1
while x == 8:
      print(pytanie5)
      x = x+1
while x == 9:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie5)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie5)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie5)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie5)
        x = x+1
while x == 10:
    print(pytanie6)
    x = x+1
while x == 11:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie6)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie6)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie6)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie6)
        x = x+1
while x == 12:
    print(pytanie7)
    x = x+1
while x == 13:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie7)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie7)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie7)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie7)
        x = x+1
while x == 14:

    print(pytanie8)
    x = x+1
while x == 15:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie8)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie8)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie8)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie8)
        x = x+1
while x == 16:

    print(pytanie9)
    x = x+1
while x == 17:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie9)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie9)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie9)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie9)
        x = x+1
while x == 18:

    print(pytanie10)
    x = x+1
while x == 19:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie10)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie10)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie10)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie10)
        x = x+1
while x == 20:
    print(pytanie11)
    x = x+1
while x == 21:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie11)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie11)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie11)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie11)
        x = x+1
while x == 22:
    print(pytanie12)
    x = x+1
while x == 23:
    if input_state1 == False:
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie12)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie12)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie12)
        x = x+1
while x == 24:
    print(pytanie13)
    x = x+1
while x == 25:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie13)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie13)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie13)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie13)
        x = x+1
while x == 26:
    print(pytanie14)
    x = x+1
while x == 27:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie14)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie14)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie14)
        x = x+1        
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie14)
        x = x+1
while x == 28:

    print(pytanie15)
    x = x+1
while x == 29:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie15)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie15)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie15)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie15)
        x = x+1
while x == 30:

    print(pytanie16)
    x = x+1
while x == 31:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie16)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie16)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie16)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie16)
        x = x+1
while x == 32:
    print(pytanie17)
    x = x+1
while x == 33:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie17)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie17)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie17)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie17)
        x = x+1
while x == 34:
    print(pytanie18)
    x = x+1
while x == 35:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie18)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie18)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie18)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie18)
        x = x+1
while x == 36:
    print(pytanie19)
    x = x+1
while x == 37:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie19)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie19)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie19)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie19)
        x = x+1
while x == 38:

    print(pytanie20)
    x = x+1
while x == 39:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie20)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie20)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie20)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie20)
        x = x+1
while x == 40:

    print(pytanie21)
    x = x+1
while x == 41:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie21)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie21)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie21)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie21)
        x = x+1
while x == 42:

    print(pytanie22)
    x = x+1
while x == 43:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie22)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie22)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie22)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie22)
        x = x+1
while x == 44:

    print(pytanie23)
    x = x+1
while x == 45:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie23)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie23)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie23)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie23)
        x = x+1
while x == 46:
    print(pytanie24)
    x = x+1
while x == 47:
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie24)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie24)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie24)
        x = x+1
    if input_state1 == False:
        print('Zolci odpowiadaja na pytanie ' + pytanie25)
        x = x+1
    if input_state2 == False:
        print('Czerwoni odpowiadaja na pytanie ' + pytanie25)
        x = x+1
    if input_state3 == False:
        print('Zieloni odpowiadaja na pytanie ' + pytanie25)
        x = x+1
    if input_state4 == False:
        print('Niebiescy odpowiadaja na pytanie ' + pytanie25)
        x = x+1
while x == 50:
      print("Gra zostala zakonczona.")
After run it display this:

Code: Select all


















3...
2...
1...
0!



Kim byl Zeus?
(I clicked button on GPIO 25)
Niebiescy odpowiadaja na pytanie Kim byl Zeus?
Atena
(I clicked button on GPIO 18)
Zolci odpowiadaja na pytanie Atena
EURYKA
(I did nothing)
Zolci odpowiadaja na pytanie EURYKA
Hestia
(I did nothing)
Zolci odpowiadaja na pytanie Hesia
Demeter
It doesn't work! Why? Please, help me :| :| :| ...
Thank you!

ghp
Posts: 1517
Joined: Wed Jun 12, 2013 12:41 pm
Location: Stuttgart Germany
Contact: Website

Re: Quiz with Tact Switches - need help

Tue May 19, 2015 8:24 pm

Hello,

what a huge program. What I understand is: the program presents questions, and there are four buttons to answer. For each question, one of the four buttons gives the right answer. Correct answer goes to next step. Is this correct ?

One of the problems could be, that you check that a button is pressed and kept pressed, this is taken as an input for next step. Perhaps you should check for button input is high in between.

When I understand the code correctly, it does similiar things again and again. You could also code it in a style where questions, four alternative answers and which answer is correct could be written in a data structure.
Then you need an interpreter, taking the actions.
The following should give you an idea what I mean, it is NOT tested.

Code: Select all

data = [
   [ 'my favorite color', ['red', 'green', 'blue', 'alpha' ], 2 ],
   [ 'simpson',           ['fred', 'greg', 'true', 'homer' ], 3 ],
   # more to fill in...
]

i = 0
while i < len(data):
    # print questions and options
    print(data[i][0], '?')
    print('the options are',data[i][1] )
    while True:
        answer = -1
        if GPIO.input(18) == False:
            answer = 0
        if GPIO.input(23) == False:
            answer = 1
        if GPIO.input(24) == False:
            answer =2
        if GPIO.input(25) == False:
            answer = 3
        if answer == data[i][2]:
            print("well done, next one")
            break
        if answer == -1:
            continue
        print("retry please")
        continue
    
    # wait for all buttons released
    while True:    
        if GPIO.input(18) == True and GPIO.input(23) == True and GPIO.input(24) == True and GPIO.input(25) == True:
            break;
    i = i+1

print("you made it !")        
Hope this helps,
Gerhard

Return to “Python”