Dependencies: C12832 MMA7660 mbed
Fork of shot_game by
main.cpp
00001 #include "mbed.h" 00002 #include "C12832.h" 00003 #include "MMA7660.h" 00004 00005 C12832 lcd(p5, p7, p6, p8, p11); 00006 BusIn joy(p15, p16, p12, p16); 00007 DigitalIn fire(p14); 00008 DigitalIn up(p15); 00009 DigitalIn down(p12); 00010 DigitalIn right(p16); 00011 DigitalIn left(p13); 00012 BusOut leds(LED1,LED2,LED3,LED4); 00013 PwmOut speaker(p26); 00014 PwmOut r (p23); 00015 PwmOut g (p24); 00016 PwmOut b (p25); 00017 MMA7660 MMA(p28, p27); 00018 AnalogIn pot1(p19); 00019 AnalogIn pot2(p20); 00020 Ticker timeInt; 00021 00022 /*ゲームステータス*/ 00023 int rocket,shot,enemyX=127,enemyY,enemyX2,life=3,lifeLED=3,lvl=2,score=0; 00024 unsigned int randoms=0; 00025 00026 void setHz(int Hz){ 00027 float sycle; 00028 sycle = (float)1/Hz; 00029 speaker.period(sycle); 00030 speaker = 0.3; 00031 } 00032 00033 void end(){ 00034 timeInt.detach(); 00035 r = g = b = 1; 00036 lcd.cls(); 00037 lcd.locate(0, 0); 00038 lcd.printf("SCORE:%d", score); 00039 wait(2); 00040 speaker = 0; 00041 while(1); 00042 } 00043 00044 00045 void timeIntFunc(){ 00046 static unsigned int sownd=0,safeTime=40; 00047 00048 lcd.cls(); 00049 00050 if(shot){ 00051 if(sownd<9)sownd = 1; 00052 lcd.rect(9, (rocket*8)+3, 127, (rocket*8)+4, 1); 00053 } 00054 00055 if(safeTime>0){ 00056 safeTime--; 00057 enemyY = randoms % 4; 00058 } 00059 else if(enemyY == rocket && shot){ 00060 if(sownd<9)sownd = 5; 00061 score++; 00062 // lcd.fillcircle(enemyX+3, (enemyY*8)+4, 14, 1); //爆破エフェクト、ONにすると動作が不安定になる。 00063 enemyX = 127; 00064 enemyY = randoms%4; 00065 if(!(score%20)){ 00066 lvl++; 00067 } 00068 }else{ 00069 enemyX -= lvl; 00070 } 00071 00072 if(enemyX < 1){ 00073 life--; 00074 sownd = 9; 00075 enemyX = 127; 00076 safeTime = 40; 00077 } 00078 00079 if(enemyX > 120)enemyX2 = 127; 00080 else enemyX2 = enemyX+7; 00081 if(!safeTime)lcd.fillrect(enemyX, enemyY*8, enemyX2, (enemyY*8)+7, 1); 00082 lcd.rect(0, rocket*8, 7, (rocket*8)+7, 1); 00083 00084 switch(sownd){ 00085 case 0: 00086 speaker = 0; 00087 sownd = 0; 00088 break; 00089 case 1: 00090 setHz(1000); 00091 sownd++; 00092 break; 00093 case 2: 00094 setHz(660); 00095 sownd++; 00096 break; 00097 case 3: 00098 setHz(440); 00099 sownd++; 00100 break; 00101 case 4: 00102 setHz(200); 00103 sownd = 0; 00104 break; 00105 00106 case 5: 00107 setHz(150); 00108 sownd++; 00109 break; 00110 case 6: 00111 setHz(100); 00112 sownd++; 00113 break; 00114 case 7: 00115 setHz(150); 00116 sownd++; 00117 break; 00118 case 8: 00119 setHz(100); 00120 sownd = 0; 00121 break; 00122 00123 case 9: 00124 setHz(100); 00125 sownd++; 00126 lifeLED = life; 00127 break; 00128 case 10: 00129 setHz(150); 00130 sownd++; 00131 lifeLED = life+1; 00132 break; 00133 case 11: 00134 setHz(300); 00135 sownd++; 00136 lifeLED = life; 00137 break; 00138 case 12: 00139 setHz(150); 00140 sownd++; 00141 lifeLED = life+1; 00142 break; 00143 case 13: 00144 setHz(300); 00145 sownd++; 00146 lifeLED = life; 00147 break; 00148 case 14: 00149 setHz(150); 00150 sownd++; 00151 lifeLED = life+1; 00152 break; 00153 case 15: 00154 setHz(100); 00155 sownd = 0; 00156 lifeLED = life; 00157 if(life == 0){ 00158 end(); 00159 } 00160 break; 00161 } 00162 switch(lifeLED){ 00163 case 0: 00164 r = b = g = 1; 00165 break; 00166 case 1: 00167 r = 0; 00168 g = 1; 00169 break; 00170 case 2: 00171 r = g = 0; 00172 break; 00173 case 3: 00174 g = 0; 00175 r = 1; 00176 break; 00177 } 00178 shot = 0; 00179 } 00180 00181 int main() { 00182 int upE,downE,rightE,leftE,fireE; 00183 lcd.cls(); 00184 speaker = 0; 00185 r.period(0.01); 00186 g.period(0.01); 00187 b.period(0.01); 00188 r = g = b = 1; 00189 lcd.locate(0, 0); 00190 lcd.printf("PLEASE PRESS\n ANY BUTTON"); 00191 while(!joy && !fire); 00192 timeInt.attach(&timeIntFunc, 0.050); 00193 while(1){ 00194 randoms++; 00195 if(!up)upE = 1; 00196 if(!down)downE = 1; 00197 if(!right)rightE = 1; 00198 if(!left)leftE = 1; 00199 if(!fire)fireE = 1; 00200 if(fire && fireE){ 00201 randoms = 0; 00202 fireE = 0; 00203 shot = 1; 00204 }else if(up && upE && rocket!=0){ 00205 randoms = 0; 00206 upE = 0; 00207 rocket--; 00208 }else if(down && downE && rocket!=3){ 00209 randoms = 0; 00210 downE = 0; 00211 rocket++; 00212 } 00213 } 00214 }
Generated on Fri Jul 15 2022 02:50:25 by 1.7.2