Jeffery Hurley
/
Asteroids
Simple starter skeleton for asteroids video game.
Sounds/Speaker.h@2:30020ddfccf6, 2019-03-02 (annotated)
- 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?
User | Revision | Line number | New 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 |