I am having a problem on my connect 4 game that uses a bi-color matrix. I am able to drop 1 color dot down and stack that same color until it gets to the top. The problem is with my matrix you cant have difrent color dots in the same column. So i think i would need to flash the 2 colors(Portc and portd) at different times by changing them from outputs to inputs really fast.
I tried putting a gosub flash (flash being a loop) in different locations in my code so it would constantly flash anywhere it was in my code.
here is my flash loop
flash:
trisc=%00000000
trisd=%11111111
pauseus 1
trisc=%11111111
trisd=%00000000
pauseus 1
return
The problem is when i add this it causes a red checker to be on when i power up(when it should be off). Then i try to press my drop button and it wont fall and if i click the button to select the red checker then it turns off completely. I have no problem with the green checker.
I don't know what the problem is, i have a feeling it is very simple but i just cant figure it out any suggestions?
If you have any problems understanding my code please ask and i will try to explain it to you.
Code:
fall var byte
Shift var byte
pb1 var porta.0
pb2 var porta.1
pb3 var porta.2
rowvar var byte
b1 var byte
b var byte
c var byte
c1 var byte
c2 var byte
c3 var byte
c4 var byte
d1 var byte
d2 var byte
d3 var byte
d4 var byte
d var byte
rows var byte
stack var byte
row1 var byte
row2 var byte
row3 var byte
row4 var byte
row5 var byte
row6 var byte
row7 var byte
shift1 var byte
shift2 var byte
shift3 var byte
shift4 var byte
shift5 var byte
shift6 var byte
shift7 var byte
fall2 var byte
fall3 var byte
fall4 var byte
fall5 var byte
fall6 var byte
fall7 var byte
greenled var byte
redled var byte
down var byte
counts var byte
'define osc 8
'portc=red
'portd=green
'osccon =%01110101
counts=0
ansel=0
anselh=0
fall = 0
fall2=0
fall3=0
fall4=0
fall5=0
fall6=0
fall7=0
Shift = 7
shift2=7
shift3=7
shift4=7
shift5=7
shift6=7
shift7=7
greenled=0
redled=0
portb=b+b1
rows=1
stack=1
down=1
trisA=%11111111
trisb=%00000000
trisc=%00000000
trisd=%00000000
b1=%11111111
b= %01111111
portc=%00000000
portd=%00000000
portb=b1+b
looppick:
if pb2=0 then goto red
if pb3=0 then goto green
gosub flash
goto looppick
red:
b1=%11111111
b= %01111111
portc=%00000001
portd=%00000000
redled=redled+1
gosub flash
goto loopa
green:
b1=%11111111
b= %01111111
portd=%00000001
portc=%00000000
greenled=greenled+1
gosub flash
goto loopa
loopa:
portb=b1+b
gosub flash
pause 500
if (pb1==0 & b.7==0) then fall=1
if (fall==1) then
b1.0[Shift] = 1
b1.0[Shift - 1] = 0
Shift = Shift - 1
endif
if (b1.0[stack]=0)then fall=0:goto main
goto loopa
gosub flash
main:
'fall=0
'fall2=0
'fall3=0
'fall4=0
'fall5=0
'fall6=0
'fall7=0
portb=b1+b
if down=0 then b1=%11111111 : b=%01111111
if down = 1 then b1=%11111101 : b=%01111111
if down = 2 then b1=%11111001 : b=%01111111
if down = 3 then b1=%11110001 : b=%01111111
if down = 4 then b1=%11100001 : b=%01111111
if down = 5 then b1=%11000001 : b=%01111111
if down = 6 then b1=%10000001 : b=%01111111
stack=stack+1
down=down+1
if down=7 then down=6
counts=counts+1
if counts=1 then goto loopb
if counts=2 then goto loopc
if counts=3 then goto loopd
if counts=4 then goto loope
if counts=5 then goto loopf
if counts=6 then goto loopg
loopb:
portb=b1+b
gosub flash
pause 500
if (pb1==0 & b.7==0) then fall2=1
if (fall2==1) then
b1.0[Shift2] = 1
b1.0[Shift2 - 1] = 0
Shift2 = Shift2 - 1
endif
if (b1.0[stack]=0)then fall2=0:goto main
goto loopb
loopc:
gosub flash
portb=b1+b
pause 500
if (pb1==0 & b.7==0) then fall3=1
if (fall3==1) then
b1.0[Shift3] = 1
b1.0[Shift3 - 1] = 0
Shift3 = Shift3 - 1
endif
if (b1.0[stack]=0)then fall3=0:goto main
goto loopc
loopd:
gosub flash
portb=b1+b
pause 500
if (pb1==0 & b.7==0) then fall4=1
if (fall4==1) then
b1.0[Shift4] = 1
b1.0[Shift4 - 1] = 0
Shift4 = Shift4 - 1
endif
if (b1.0[stack]=0)then fall4=0:goto main
goto loopd
loope:
gosub flash
portb=b1+b
pause 500
if (pb1==0 & b.7==0) then fall5=1
if (fall5==1) then
b1.0[Shift5] = 1
b1.0[Shift5 - 1] = 0
Shift5 = Shift5 - 1
endif
if (b1.0[stack]=0)then fall5=0:goto main
goto loope
loopf:
gosub flash
portb=b1+b
pause 500
if (pb1==0 & b.7==0) then fall6=1
if (fall6==1) then
b1.0[Shift6] = 1
b1.0[Shift6 - 1] = 0
Shift6 = Shift6 - 1
endif
if (b1.0[stack]=0)then fall6=0:goto main
goto loopf
loopg:
gosub flash
portb=b1+b
pause 500
if (pb1==0 & b.7==0) then fall7=1
if (fall7==1) then
b1.0[Shift7] = 1
b1.0[Shift7 - 1] = 0
Shift7 = Shift7 - 1
endif
if (b1.0[stack]=0)then fall7=0:goto main
goto loopg
flash:
trisc=%00000000
trisd=%11111111
pauseus 1
trisc=%11111111
trisd=%00000000
pauseus 1
return
end
Bookmarks