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