Shop OBEX P1 Docs P2 Docs Learn Events
Bi-color memory game — Parallax Forums

Bi-color memory game

piguy101piguy101 Posts: 248
edited 2011-07-18 13:16 in BASIC Stamp
I moved this post to the BS threads due to lack of viewers in the Education Threads.

http://forums.parallax.com/showthread.php?112438-A-Bi-Color-LED-Memory-Game#post1018658

I am trying to make the bicolor LED memory game, but with my own code I made up, (Otherwise I'd feel like I'm cheating) but I just can't get it to work. Here's the problem: I will get several levels in, but then randomly, the BS2 says I messed up and tells me I lost. Any help?


' {$STAMP BS2}
' {$PBASIC 2.5}

outgreen PIN 15
outred PIN 14
green PIN 1
red PIN 0

nextcolor VAR Bit
eepromaddress VAR Word
currenteepromaddress VAR Word
redgreen VAR Bit
redgreencheck VAR Bit

nextcolor = 0
eepromaddress = 0
currenteepromaddress = 0

DEBUG CLS

DO
  nextcolor = nextcolor + 1
  DEBUG HOME, "Push either button to begin"
LOOP UNTIL (green = 1) OR (red = 1)

DEBUG CLS
WRITE 0, nextcolor

'Main Routine----------------------------------------------------------------------------

Main:

  DO
    GOSUB Out_LED
    GOSUB Check_Response
  LOOP

'Subroutine: Out_LED---------------------------------------------------------------------

Out_LED:

  DEBUG HOME, "Round  "
  DEBUG DEC3 (currenteepromaddress + 1), "       ", CR

  FOR eepromaddress = 0 TO currenteepromaddress
    READ eepromaddress, redgreen
    IF (redgreen = 0) THEN
      PAUSE 500
      HIGH outred
      LOW outgreen
      PAUSE 500
      LOW outgreen
      LOW outred
    ELSEIF (redgreen = 1) THEN
      PAUSE 500
      HIGH outgreen
      LOW outred
      PAUSE 500
      LOW outgreen
      LOW outred
    ENDIF
  NEXT
  RETURN

'Subroutine: Check_Response--------------------------------------------------------------

Check_Response:

  FOR eepromaddress = 0 TO currenteepromaddress

    READ eepromaddress, redgreen

    DO
      nextcolor = nextcolor + 1
      IF (red = 1) THEN
        redgreencheck = 0
      ELSEIF (green = 1) THEN
        redgreencheck = 1
      ENDIF
    LOOP UNTIL (red = 1) OR (green = 1)
    IF (redgreen <> redgreencheck) THEN DEBUG "You lose", CR : END
    DO
    LOOP UNTIL (red = 0) AND (green = 0)
    PAUSE 55
  NEXT

  currenteepromaddress = currenteepromaddress + 1
  WRITE currenteepromaddress, nextcolor
  RETURN
Sign In or Register to comment.