This is a little Quiz game requested by my little son to use in his classroom, there are 4 pushbuttons, one for each player ("Red Player" and "Blue Player") and the other two ("Correct" and "Incorrect" answer) are for the teacher. You can use a RGB LED (Red player, Blue player an Green audience) or three separate LEDs.

The interesting part of this little and silly project is the use of an analog input to check the status of two pushbuttons.

The schematic is included in the source code you can add a 9v bat. with a 7805 regulator and an on-off switch.

Enjoy.

Code:
'****************************************************************
'*  Name    : MaraTron+12F675                                   *
'*  Author  : Ivan Rosales, Guadalajara México                  *
'*  Notice  : Copyright (c) 2011 Ivan Rosales                   *
'*          : All Rights Reserved                               *
'*  Date    : 27/08/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   : Quiz Game (Two Players + Audience)                *
'*          :                                                   *
'*
'*
'*             Vdd
'*              +
'*              |
'*              |
'*             .-.
'*             | |		             PIC12F675
'*             | |1K                    ___      Red
'*             '-'                   -o|°  |o-   LED   Green
'*              |            .--------o|   |o---->|-.   LED    Blue
'*         .----o----o-------)--------o|   |o-------)--->|-.   LED
'*         |         |       |      .-o|___|o-------)------)--->|-.
'*       | o       | o       |      |               |      |      |
'*     |=|>      |=|>        |      |               |      |      |
'*       | o       | o   Red |  Blue|               |      |      |
'* Correct |Incorrect|       |      |               |      |      |
'*         |         |     | o    | o               |      |      |
'*         |         |   |=|>   |=|>                |      |      |
'*         |         |     | o    | o               |      |      |
'*         |        .-.      |      |               |      |      |
'*         |        | |      |      |               |      |      |
'*         |        | |1K    |      |               |      |      |
'*         |        '-'      |      |               |      |      |
'*         |         |       |      |               |      |      |
'*         |         |       |      |               |      |      |
'*         '----o----o-------o------o---------------o------o------'
'*              |
'*             ===
'*             GND
'****************************************************************
@ Device PIC12F675,WDT_ON,PWRT_ON,PROTECT_OFF,MCLR_OFF,BOD_OFF
ansel=%00111000     'Use GP4/AN3 (Pin 3) as analog input
adcon0 = %00001101
cmcon=7             'Don't use analog comparator
trisio=%111000      '
option_reg=0        'Enable Pull-Ups
wpu=$FF             'Config Pull-Ups (GP3 DOESN'T have Pull-Up)

DEFINE ADC_BITS 10 
DEFINE ADC_CLOCK 3 
DEFINE ADC_SAMPLEUS 50 

'Definitions
Rojo         VAR GPIO.0 
Verde        var GPIO.1
Azul         var GPIO.2
Bot1         var GPIO.3
Bot2         var GPIO.5
Todos        var bit
Cont         var byte
Tiempo       var byte
SiNo         var word

gpio=0    'Turn off LEDs
todos=0

Pral:
gosub do_adc   'Get ADC reading

if !bot1 and !rojo and !Azul then     'If "Red" player is the fastest
high Rojo
gosub do_shuffle
endif

if !bot2 and !Rojo and !azul then     'If "Blue" player is the fastest
high Azul
gosub do_shuffle
endif

if sino=0 then                        'If the "Answer" is correct 
gpio=0
todos=0
endif                   

if sino=1 and !todos and (rojo or azul)then    'If the "Answer" is incorrect (First player fails)
toggle azul
toggle rojo
repeat
gosub do_adc
until sino=3
todos=1
endif

if sino=1 and todos and (rojo or azul)then    'If the "Answer" is incorrect (Both players fails)
low azul
low rojo  
high verde                                    'Turn On Green (It's the audience turn's)
repeat
gosub do_adc
until sino=3
todos=0
endif

if sino=1 and verde then    'If the "Answer" is incorrect (Both players and audience fails)
gpio=0
repeat
gosub do_adc
until sino=3
todos=0
endif

goto pral

Do_ADC:
PAUSEUS 50           ' Wait for A/D channel acquisition time
ADCON0.1 = 1         ' Start conversion
WHILE ADCON0.1       ' Wait for it to complete
WEND
sino = ADRESH>>6
return

Do_Shuffle:          'Just a little dramatic effect ;)
tiempo=50
for cont = 1 to 32
toggle rojo
toggle azul
pause tiempo
tiempo=tiempo+5
next cont
return

end