Hirotaka Yoneda
/
kiokuryoku_game
Nucleo F446とスタートアップ基板とスピーカーモジュールでできる簡単なゲーム。
main.cpp
- Committer:
- RBH
- Date:
- 2016-06-04
- Revision:
- 0:e62d3022b053
- Child:
- 1:0363805b367c
File content as of revision 0:e62d3022b053:
/************************************ 20160605 ver1.0 どちらかのスイッチを押してゲームスタート。 カウント音の後にLEDが8回お手本で光るので、 その後光ったLEDと同じ側にあるスイッチをお手本と同じ順番通りに押す。 終わった後にまた適当なスイッチを押せば再スタート。 defineしてあるTIMESの数値を変更することで何回光るか変えられる。 スピーカーモジュールをE3ソケットに取り付けること。 ************************************/ #include "mbed.h" #include "beep_sound.h" #include <stdlib.h> #define TIMES 8 DigitalOut led1(A1); DigitalOut led2(A0); DigitalIn sw1(D4); DigitalIn sw2(D5); beep_sound sound(D10); void beep(void){ sound.onpu(2,0,0.1); sound.onpu(2,7,0.1); } int main(void) { int seed, j, states, randomNum; int sayuu[TIMES]; while(1){ //各種初期化 j=0; states=0; printf("\nSTART\n\r"); seed=0; while(sw1==0 && sw2==0){ seed++; wait(0.001); } printf("seed=%d\n\r", seed); srand(seed); for(int i=0; i<TIMES; i++){ // rand()の下位ビットの周期性への対策 randomNum = (rand()%11)+(rand()%12)+(rand()%13); sayuu[i]=(randomNum%2)+1; printf("%d\n\r",(randomNum%2)+1); } /* ゲームスタート */ sound.beep_readyGo(1); for(int i=0; i<TIMES; i++){ if(sayuu[i]==1){ led1=1; wait(0.1); led1=0; }else{ led2=1; wait(0.1); led2=0; } wait(0.1); } beep(); /* 入力開始 */ while(j<TIMES){ if(sayuu[j]==1 && sw1==1){ led1=1; for(int i=0;i<2500;i++){while(sw1==1);} led1=0; j++; }else if(sayuu[j]==2 && sw2==1){ led2=1; for(int i=0;i<2500;i++){while(sw2==1);} led2=0; j++; }else if(sayuu[j]==1 && sw2==1){ led2=1; sound.beep_wrong(1); led2=0; states++; break; }else if(sayuu[j]==2 && sw1==1){ led2=1; sound.beep_wrong(1); led2=0; states++; break; } } //printf("%d\n\r", states); if(states==0){ led1=1; led2=1; sound.beep_right(1); led1=0; led2=0; wait(0.1); led1=1; led2=1; sound.beep_right(1); led1=0; led2=0; wait(0.1); led1=1; led2=1; sound.beep_right(1); led1=0; led2=0; wait(0.1); } wait(0.5); } }