Hi i'm trying to make a simon says game.
I start out at level 1 starting with a sequence of 4, but the sequence keeps on repeating to not let the player have control
How can I fix this and how can I have more levels showing both on the display and on the LEDs?
#include <MeggyJrSimple.h> // Required code, line 1 of 2.
struct Point // our name for the class
{
int x; //x coordinates of this point
int y; // y-coordinates of this point
};
//Point b1 = {0,4}; // Blue
//Point b2 = {0,3};
//Point b3 = {1,4};
//Point b4 = {1,3};
//Point b5 = {2,3};
//Point b6 = {2,4};
//Point g1 = {3,7}; //Green
//Point g2 = {3,6};
//Point g3 = {3,5};
//Point g4 = {4,7};
//Point g5 = {4,6};
//Point g6 = {4,5};
//Point r1 = {7,4}; //Red
//Point r2 = {7,3};
//Point r3 = {6,4};
//Point r4 = {6,3};
//Point r5 = {5,4};
//Point r6 = {5,3};
//Point y1 = {3,2}; //yellow
//Point y2 = {4,2};
//Point y3 = {4,1};
//Point y4 = {4,0};
//Point y5 = {3,1};
//Point y6 = {3,0};
//Point blueArray[6] = {b1,b2,b3,b4,b5,b6};
//Point greenArray[6] = {g1,g2,g3,g4,g5,g6};
//Point redArray[6] = {r1,r2,r3,r4,r5,r6};
//Point yellowArray[6] = {y1,y2,y3,y4,y5,y6}; //points that buttons starts as
//two arrays for combination sequence
int mode = 0;
int computerArray[7]; //total levels computer gives player to play
int playerArray[7]; //total levels player needs to complete
int playerMarker=0; //player
int computerMarker=4; //computer
int levels=1; //variable for levels
boolean correctSequence = true; //keeps track if sequence is completed
void setup() // run once, when the sketch starts
{
MeggyJrSimpleSetup(); // Required code, line 2 of 2.
Tone_Start(ToneC3, 100); //Background Sound Start
delay(100);
Tone_Start(ToneCs3, 100);
delay(100);
Tone_Start(ToneD3, 100);
delay(100);
Tone_Start(ToneDs3, 100);
delay(100);
mode = 0;
fillArray();
}
void loop() // run over and over again
{
if (mode == 0)
AI();
else if (mode == -1)
Player();
else
lose();
if(correctSequence == true)
win();
if (levels == 8)
{
SetAuxLEDs(255);
}
if (levels == 7)
{
SetAuxLEDs(127);
}
if (levels == 6)
{
SetAuxLEDs(63);
}
if (levels == 5)
{
SetAuxLEDs(31);
}
if (levels == 4)
{
SetAuxLEDs(15);
}
if (levels == 3)
{
SetAuxLEDs(7);
}
if (levels == 2)
{
SetAuxLEDs(3);
}
if (levels == 1)
{
SetAuxLEDs(1);
}
if (levels == 0)
{
SetAuxLEDs(0);
}
}
void AI()
{
for (int i = 0; i < computerMarker; i++)
{
if (computerArray[i] == 1)
DrawRed();
else if (computerArray[i] == 2)
DrawGreen();
else if (computerArray[i] == 3)
DrawYellow();
else if (computerArray[i] == 4)
DrawBlue();
DisplaySlate(); //displays the entire slate for current level
delay(150); //is delayed 200 miliseconds
ClearSlate(); //clears the entire slate for next level
DisplaySlate();
delay(150);
}
DisplaySlate();
mode = 1;
}
void Player()
{
//Check to see which buttons are down that weren't before.
while(playerMarker < computerMarker)
{
CheckButtonsDown();
if (Button_Up) //focuses on up button clicked
{
playerArray[playerMarker] = 2; // add appropriate number to platyer arraay'
playerMarker++; // add one to marker
DrawGreen(); //when marker exceeds 10, then check to see if it's correct.
DisplaySlate ();
Tone_Start(ToneA3,100);
delay (150);
ClearSlate();
DisplaySlate();
}
if (Button_Down)
{
playerArray[playerMarker] = 3; //focuses on down button clicked
playerMarker++;
DrawYellow();
DisplaySlate ();
Tone_Start(ToneB3,100);
delay (150);
ClearSlate();
DisplaySlate();
}
if (Button_Right)
{
playerArray[playerMarker] = 1; //focuses on right button clicked
playerMarker++;
DrawRed();
DisplaySlate ();
Tone_Start(ToneD3,100);
delay (150);
ClearSlate();
DisplaySlate();
}
if (Button_Left)
{
playerArray[playerMarker] = 4; //focuss on left button clicked
playerMarker++;
DrawBlue();
DisplaySlate ();
Tone_Start(ToneC3,100);
delay (150);
ClearSlate();
DisplaySlate();
}
}
}
void colors()
{
for (int i = 0; i<64; i++)
{
DrawBlue();
DrawGreen();
DrawRed();
DrawYellow();
}
}
void DrawGreen()
{
DrawPx(3,6,Green); //green shows
DrawPx(3,7,Green);
DrawPx(3,5,Green);
DrawPx(4,7,Green);
DrawPx(4,6,Green);
DrawPx(4,5,Green);
}
void DrawRed()
{
DrawPx(7,4,Red); //Red shows
DrawPx(7,3,Red);
DrawPx(6,4,Red);
DrawPx(6,3,Red);
DrawPx(5,4,Red);
DrawPx(5,3,Red);
}
void DrawYellow()
{
DrawPx(3,2,Yellow); //yellow shows
DrawPx(4,2,Yellow);
DrawPx(4,1,Yellow);
DrawPx(4,0,Yellow);
DrawPx(3,1,Yellow);
DrawPx(3,0,Yellow);
}
void DrawBlue()
{
DrawPx(0,4,Blue); // Blue shows
DrawPx(0,3,Blue);
DrawPx(1,4,Blue);
DrawPx(1,3,Blue);
DrawPx(2,3,Blue);
DrawPx(2,4,Blue);
}
void fillArray()
{
for (int i = 0; i < 10; i++)
{
computerArray[i]=(int)random(4)+1;
correctSequence = true;
computerMarker++;
playerMarker++;
}
}
void win()
{
Tone_Start(ToneD3, 100);
mode = 0;
}
void lose() //Function used if the player fails to match the sequence
{
Tone_Start(ToneC3, 100);
mode = -1; //Resets turn value so the game starts over without need for a reset button
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.