Simple starter skeleton for asteroids video game.

Dependencies:   PinDetect

Committer:
jhurley31
Date:
Sat Mar 02 16:11:43 2019 +0000
Revision:
2:30020ddfccf6
Parent:
1:a6872783beca
Child:
3:98aa3db6a48f
There is an issue with inheritance

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jhurley31 0:0c450cb95a1e 1 #include "mbed.h"
jhurley31 1:a6872783beca 2 #include "buzzy_siren.h"
jhurley31 1:a6872783beca 3 #include "buzzy_begin.h"
jhurley31 1:a6872783beca 4 #include "buzzy_chomp.h"
jhurley31 1:a6872783beca 5 #include "buzzy_eatghost.h"
jhurley31 1:a6872783beca 6 #include "buzzy_death.h"
jhurley31 1:a6872783beca 7 #include "buzzy_eatfruit.h"
jhurley31 1:a6872783beca 8
jhurley31 1:a6872783beca 9
jhurley31 1:a6872783beca 10 class Speaker : public PwmOut
jhurley31 0:0c450cb95a1e 11 {
jhurley31 0:0c450cb95a1e 12 public:
jhurley31 2:30020ddfccf6 13 enum BUZZY_Sounds {NO_SOUND, BEGIN, SIREN, CHOMP, EAT_GHOST, DEATH, EAT_FRUIT};
jhurley31 1:a6872783beca 14
jhurley31 1:a6872783beca 15 Speaker(PinName nPin):PwmOut(nPin)
jhurley31 1:a6872783beca 16 {
jhurley31 1:a6872783beca 17 m_ulAudioArrayIndex = 0;
jhurley31 2:30020ddfccf6 18 SwitchSound(NO_SOUND);
jhurley31 1:a6872783beca 19 }
jhurley31 1:a6872783beca 20
jhurley31 1:a6872783beca 21 void PlayNextValue()
jhurley31 1:a6872783beca 22 {
jhurley31 1:a6872783beca 23 if (pAudioArray != NULL)
jhurley31 1:a6872783beca 24 {
jhurley31 1:a6872783beca 25 write(pAudioArray[ GetNextValue() ]);
jhurley31 1:a6872783beca 26 }
jhurley31 0:0c450cb95a1e 27 }
jhurley31 1:a6872783beca 28
jhurley31 2:30020ddfccf6 29 void SwitchSound ( const BUZZY_Sounds &newSound)
jhurley31 1:a6872783beca 30 {
jhurley31 2:30020ddfccf6 31 if (newSound == m_enActiveAudioArray)
jhurley31 2:30020ddfccf6 32 {
jhurley31 2:30020ddfccf6 33 return;
jhurley31 2:30020ddfccf6 34 }
jhurley31 2:30020ddfccf6 35
jhurley31 2:30020ddfccf6 36 m_ulAudioArrayIndex = 0;
jhurley31 2:30020ddfccf6 37 m_enActiveAudioArray = newSound;
jhurley31 1:a6872783beca 38 switch (newSound)
jhurley31 1:a6872783beca 39 {
jhurley31 2:30020ddfccf6 40 case NO_SOUND:
jhurley31 2:30020ddfccf6 41 pAudioArray = NULL;
jhurley31 2:30020ddfccf6 42 break;
jhurley31 1:a6872783beca 43 case BEGIN:
jhurley31 1:a6872783beca 44 pAudioArray = &data_BEGIN[0];
jhurley31 1:a6872783beca 45 break;
jhurley31 1:a6872783beca 46 case CHOMP:
jhurley31 1:a6872783beca 47 pAudioArray = &data_CHOMP[0];
jhurley31 1:a6872783beca 48 break;
jhurley31 1:a6872783beca 49 case EAT_GHOST:
jhurley31 1:a6872783beca 50 pAudioArray = &data_GHOST[0];
jhurley31 1:a6872783beca 51 break;
jhurley31 1:a6872783beca 52 case DEATH:
jhurley31 1:a6872783beca 53 pAudioArray = &data_DEATH[0];
jhurley31 1:a6872783beca 54 break;
jhurley31 1:a6872783beca 55 case EAT_FRUIT:
jhurley31 1:a6872783beca 56 pAudioArray = &data_EAT_FRUIT[0];
jhurley31 1:a6872783beca 57 break;
jhurley31 1:a6872783beca 58 case SIREN:
jhurley31 1:a6872783beca 59 default:
jhurley31 1:a6872783beca 60 pAudioArray = &data_SIREN[0];
jhurley31 1:a6872783beca 61 break;
jhurley31 1:a6872783beca 62 }
jhurley31 1:a6872783beca 63
jhurley31 0:0c450cb95a1e 64 }
jhurley31 1:a6872783beca 65
jhurley31 1:a6872783beca 66 unsigned int GetNextValue()
jhurley31 1:a6872783beca 67 {
jhurley31 1:a6872783beca 68 m_ulAudioArrayIndex++;
jhurley31 1:a6872783beca 69 switch (m_enActiveAudioArray)
jhurley31 1:a6872783beca 70 {
jhurley31 1:a6872783beca 71 case BEGIN:
jhurley31 1:a6872783beca 72 m_ulAudioArrayIndex %= NUM_BEGIN_ELEMENTS;
jhurley31 1:a6872783beca 73 break;
jhurley31 1:a6872783beca 74 case CHOMP:
jhurley31 1:a6872783beca 75 m_ulAudioArrayIndex %= NUM_CHOMP_ELEMENTS;
jhurley31 1:a6872783beca 76 break;
jhurley31 1:a6872783beca 77 case EAT_GHOST:
jhurley31 1:a6872783beca 78 m_ulAudioArrayIndex %= NUM_GHOST_ELEMENTS;
jhurley31 1:a6872783beca 79 break;
jhurley31 1:a6872783beca 80 case DEATH:
jhurley31 1:a6872783beca 81 m_ulAudioArrayIndex %= NUM_DEATH_ELEMENTS;
jhurley31 2:30020ddfccf6 82 if (m_ulAudioArrayIndex == 0)
jhurley31 2:30020ddfccf6 83 {
jhurley31 2:30020ddfccf6 84 SwitchSound(SIREN);
jhurley31 2:30020ddfccf6 85 }
jhurley31 1:a6872783beca 86 break;
jhurley31 1:a6872783beca 87 case EAT_FRUIT:
jhurley31 1:a6872783beca 88 m_ulAudioArrayIndex %= NUM_EAT_FRUIT_ELEMENTS;
jhurley31 1:a6872783beca 89 break;
jhurley31 1:a6872783beca 90 case SIREN:
jhurley31 1:a6872783beca 91 default:
jhurley31 1:a6872783beca 92 m_ulAudioArrayIndex %= NUM_SIREN_ELEMENTS;
jhurley31 1:a6872783beca 93 break;
jhurley31 1:a6872783beca 94 }
jhurley31 1:a6872783beca 95 return m_ulAudioArrayIndex;
jhurley31 1:a6872783beca 96 }
jhurley31 0:0c450cb95a1e 97 private:
jhurley31 1:a6872783beca 98 unsigned long m_ulAudioArrayIndex;
jhurley31 1:a6872783beca 99 BUZZY_Sounds m_enActiveAudioArray;
jhurley31 2:30020ddfccf6 100 const float *pAudioArray;
jhurley31 1:a6872783beca 101
jhurley31 0:0c450cb95a1e 102 };
jhurley31 1:a6872783beca 103
jhurley31 0:0c450cb95a1e 104