我设计了一款使用我的Arduino和ETS-7000设备的反应游戏,并且我遇到了一些问题。更改7段计数器显示屏
游戏的想法是,将有两个玩家在玩互相反对,我用三个LED的,他们都在ETS-7000了。
两个7段将开始9,9和当所述第三LED闪烁两个玩家应该按swithces。
较慢的球员将减少1点和他的7段将在8,游戏将继续下去,直到一些达到0和损失。
我proble是,我所做的每一件事情正确的,但不是较慢的玩家减少了7段1点,更快的球员一样。
我需要帮助,所以我调整了代码是在oppisite方式
附:我使用的BCD编码为7段
int SW2 = 3; //try
int SW1 = 4;
int LED0 = A0;
int LED1 = 12;
int LED2 = 13;
// int fault = 0;
//long wait = 0;
//long now = 0;
void setup(){
pinMode(A5, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(LED0, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
//Initializing components
randomSeed(analogRead(1));
}
void loop(){
reset:
int n=9, x=9;
digitalWrite(A5, HIGH);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
do{
digitalWrite(LED0, HIGH);
delay(2000);
digitalWrite(LED1, HIGH);
//Wait for a random period of time, between 3 seconds
//And 6 seconds. Get ready!
delay(random(500,8000));
digitalWrite(LED2, HIGH);
//Swing your swords as fast as you can, the faster one
//will be returned by getWinner()
int winner=getWinner();
//The yellow led by side of the winner will light up
if(winner==1){
if (n==1)
{
digitalWrite(A5, LOW);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED0, LOW);
delay(100);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED0, LOW);
delay(100);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED0, LOW);
delay(100);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED0, LOW);
delay(100);
digitalWrite(LED0, HIGH);
delay(100);
digitalWrite(LED0, LOW);
delay(5000);
break;
}
else
{n=n-1;}
}else{ if (x==1)
{
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(100);
digitalWrite(LED2, HIGH);
delay(100);
digitalWrite(LED2, LOW);
delay(5000);
break;
}
else { x=x-1;}
}
if (n==0){
digitalWrite(A5, LOW);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, LOW);
} else if (n==1){
digitalWrite(A5, HIGH);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, LOW);
} else if (n==2){
digitalWrite(A5, LOW);
digitalWrite(A4, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A2, LOW);
} else if (n==3){
digitalWrite(A5, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A3, LOW);
digitalWrite(A2, LOW);
} else if (n==4){
digitalWrite(A5, LOW);
digitalWrite(A4, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A2, LOW);
} else if (n==5){
digitalWrite(A5, HIGH);
digitalWrite(A4, LOW);
digitalWrite(A3, HIGH);
digitalWrite(A2, LOW);
} else if (n==6) {
digitalWrite(A5, LOW);
digitalWrite(A4, HIGH);
digitalWrite(A3, HIGH);
digitalWrite(A2, LOW);
} else if (n==7){
digitalWrite(A5, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A3, HIGH);
digitalWrite(A2, LOW);
} else if (n==8){
digitalWrite(A5, LOW);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, HIGH);
} else if (n==9){
digitalWrite(A5, HIGH);
digitalWrite(A4, LOW);
digitalWrite(A3, LOW);
digitalWrite(A2, HIGH);
}
if (x==0){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
} else if (x==1){
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
} else if (x==2){
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
} else if (x==3){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
} else if (x==4){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
} else if (x==5){
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
} else if (x==6) {
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
} else if (x==7){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
} else if (x==8){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
} else if (x==9) {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
}
digitalWrite(LED0, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
delay(2000);
} while(true);
goto reset;
}
//The function below waits for either of the tilter
//switch to be swang. The first one to swing
//will be returned by its number
int getWinner(){
do{
if(digitalRead(SW1)==HIGH){
return 1;
}else if(digitalRead(SW2)==HIGH){
return 2;
}
}while(true);
}