Ben Evans University Second Year Project. Game Called Defender.

Dependencies:   mbed

https://os.mbed.com/media/uploads/evanso/84bc1a30759fd6a1e3f1fd1fae3e97c2.png

Hello, soldier, you have been specially selected as the defender of planet earth.

Your mission, if you choose to accept it. Fly around the planet and pulverise invading alien ships for as long as you can. Stop the aliens abducting the innocent people on the ground. Be warned if an alien ship manages to abduct a person and take them to top of the screen, they will no longer move randomly and will begin to hunt you down. This sounds like a challenge you were trained for.

But don’t worry soldier you’re not going into battle empty-handed. Your ship is equipped with a state of the art laser beam that has unlimited ammo and four smart bombs that will destroy anything on the screen. The ship also has three lives so use them wisely.

As time goes on more alien ships will arrive on planet earth increasing the difficulty of your mission. And remember the landscape bellow loops around so if you continually fly in the same direction you go to your original position. Good luck soldier.

Committer:
evanso
Date:
Wed May 27 02:06:05 2020 +0000
Revision:
87:832ca78426b5
Parent:
48:e308067cfea5
Final Submission. I have read and agreed with Statement of Academic Integrity.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 48:e308067cfea5 1 /* SD/MMC File System Library
evanso 48:e308067cfea5 2 * Copyright (c) 2016 Neil Thiessen
evanso 48:e308067cfea5 3 *
evanso 48:e308067cfea5 4 * Licensed under the Apache License, Version 2.0 (the "License");
evanso 48:e308067cfea5 5 * you may not use this file except in compliance with the License.
evanso 48:e308067cfea5 6 * You may obtain a copy of the License at
evanso 48:e308067cfea5 7 *
evanso 48:e308067cfea5 8 * http://www.apache.org/licenses/LICENSE-2.0
evanso 48:e308067cfea5 9 *
evanso 48:e308067cfea5 10 * Unless required by applicable law or agreed to in writing, software
evanso 48:e308067cfea5 11 * distributed under the License is distributed on an "AS IS" BASIS,
evanso 48:e308067cfea5 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
evanso 48:e308067cfea5 13 * See the License for the specific language governing permissions and
evanso 48:e308067cfea5 14 * limitations under the License.
evanso 48:e308067cfea5 15 */
evanso 48:e308067cfea5 16
evanso 48:e308067cfea5 17 #include "SDCRC.h"
evanso 48:e308067cfea5 18
evanso 48:e308067cfea5 19 namespace SDCRC
evanso 48:e308067cfea5 20 {
evanso 48:e308067cfea5 21
evanso 48:e308067cfea5 22 namespace
evanso 48:e308067cfea5 23 {
evanso 48:e308067cfea5 24 const char m_Crc7Table[] = {
evanso 48:e308067cfea5 25 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F,
evanso 48:e308067cfea5 26 0x48, 0x41, 0x5A, 0x53, 0x6C, 0x65, 0x7E, 0x77,
evanso 48:e308067cfea5 27 0x19, 0x10, 0x0B, 0x02, 0x3D, 0x34, 0x2F, 0x26,
evanso 48:e308067cfea5 28 0x51, 0x58, 0x43, 0x4A, 0x75, 0x7C, 0x67, 0x6E,
evanso 48:e308067cfea5 29 0x32, 0x3B, 0x20, 0x29, 0x16, 0x1F, 0x04, 0x0D,
evanso 48:e308067cfea5 30 0x7A, 0x73, 0x68, 0x61, 0x5E, 0x57, 0x4C, 0x45,
evanso 48:e308067cfea5 31 0x2B, 0x22, 0x39, 0x30, 0x0F, 0x06, 0x1D, 0x14,
evanso 48:e308067cfea5 32 0x63, 0x6A, 0x71, 0x78, 0x47, 0x4E, 0x55, 0x5C,
evanso 48:e308067cfea5 33 0x64, 0x6D, 0x76, 0x7F, 0x40, 0x49, 0x52, 0x5B,
evanso 48:e308067cfea5 34 0x2C, 0x25, 0x3E, 0x37, 0x08, 0x01, 0x1A, 0x13,
evanso 48:e308067cfea5 35 0x7D, 0x74, 0x6F, 0x66, 0x59, 0x50, 0x4B, 0x42,
evanso 48:e308067cfea5 36 0x35, 0x3C, 0x27, 0x2E, 0x11, 0x18, 0x03, 0x0A,
evanso 48:e308067cfea5 37 0x56, 0x5F, 0x44, 0x4D, 0x72, 0x7B, 0x60, 0x69,
evanso 48:e308067cfea5 38 0x1E, 0x17, 0x0C, 0x05, 0x3A, 0x33, 0x28, 0x21,
evanso 48:e308067cfea5 39 0x4F, 0x46, 0x5D, 0x54, 0x6B, 0x62, 0x79, 0x70,
evanso 48:e308067cfea5 40 0x07, 0x0E, 0x15, 0x1C, 0x23, 0x2A, 0x31, 0x38,
evanso 48:e308067cfea5 41 0x41, 0x48, 0x53, 0x5A, 0x65, 0x6C, 0x77, 0x7E,
evanso 48:e308067cfea5 42 0x09, 0x00, 0x1B, 0x12, 0x2D, 0x24, 0x3F, 0x36,
evanso 48:e308067cfea5 43 0x58, 0x51, 0x4A, 0x43, 0x7C, 0x75, 0x6E, 0x67,
evanso 48:e308067cfea5 44 0x10, 0x19, 0x02, 0x0B, 0x34, 0x3D, 0x26, 0x2F,
evanso 48:e308067cfea5 45 0x73, 0x7A, 0x61, 0x68, 0x57, 0x5E, 0x45, 0x4C,
evanso 48:e308067cfea5 46 0x3B, 0x32, 0x29, 0x20, 0x1F, 0x16, 0x0D, 0x04,
evanso 48:e308067cfea5 47 0x6A, 0x63, 0x78, 0x71, 0x4E, 0x47, 0x5C, 0x55,
evanso 48:e308067cfea5 48 0x22, 0x2B, 0x30, 0x39, 0x06, 0x0F, 0x14, 0x1D,
evanso 48:e308067cfea5 49 0x25, 0x2C, 0x37, 0x3E, 0x01, 0x08, 0x13, 0x1A,
evanso 48:e308067cfea5 50 0x6D, 0x64, 0x7F, 0x76, 0x49, 0x40, 0x5B, 0x52,
evanso 48:e308067cfea5 51 0x3C, 0x35, 0x2E, 0x27, 0x18, 0x11, 0x0A, 0x03,
evanso 48:e308067cfea5 52 0x74, 0x7D, 0x66, 0x6F, 0x50, 0x59, 0x42, 0x4B,
evanso 48:e308067cfea5 53 0x17, 0x1E, 0x05, 0x0C, 0x33, 0x3A, 0x21, 0x28,
evanso 48:e308067cfea5 54 0x5F, 0x56, 0x4D, 0x44, 0x7B, 0x72, 0x69, 0x60,
evanso 48:e308067cfea5 55 0x0E, 0x07, 0x1C, 0x15, 0x2A, 0x23, 0x38, 0x31,
evanso 48:e308067cfea5 56 0x46, 0x4F, 0x54, 0x5D, 0x62, 0x6B, 0x70, 0x79
evanso 48:e308067cfea5 57 };
evanso 48:e308067cfea5 58
evanso 48:e308067cfea5 59 const unsigned short m_Crc16Table[256] = {
evanso 48:e308067cfea5 60 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
evanso 48:e308067cfea5 61 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
evanso 48:e308067cfea5 62 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
evanso 48:e308067cfea5 63 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
evanso 48:e308067cfea5 64 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
evanso 48:e308067cfea5 65 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
evanso 48:e308067cfea5 66 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
evanso 48:e308067cfea5 67 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
evanso 48:e308067cfea5 68 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
evanso 48:e308067cfea5 69 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
evanso 48:e308067cfea5 70 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
evanso 48:e308067cfea5 71 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
evanso 48:e308067cfea5 72 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
evanso 48:e308067cfea5 73 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
evanso 48:e308067cfea5 74 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
evanso 48:e308067cfea5 75 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
evanso 48:e308067cfea5 76 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
evanso 48:e308067cfea5 77 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
evanso 48:e308067cfea5 78 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
evanso 48:e308067cfea5 79 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
evanso 48:e308067cfea5 80 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
evanso 48:e308067cfea5 81 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
evanso 48:e308067cfea5 82 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
evanso 48:e308067cfea5 83 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
evanso 48:e308067cfea5 84 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
evanso 48:e308067cfea5 85 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
evanso 48:e308067cfea5 86 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
evanso 48:e308067cfea5 87 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
evanso 48:e308067cfea5 88 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
evanso 48:e308067cfea5 89 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
evanso 48:e308067cfea5 90 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
evanso 48:e308067cfea5 91 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
evanso 48:e308067cfea5 92 };
evanso 48:e308067cfea5 93 }
evanso 48:e308067cfea5 94
evanso 48:e308067cfea5 95 char crc7(const char* data, int length)
evanso 48:e308067cfea5 96 {
evanso 48:e308067cfea5 97 //Calculate the CRC7 checksum for the specified data block
evanso 48:e308067cfea5 98 char crc = 0;
evanso 48:e308067cfea5 99 for (int i = 0; i < length; i++) {
evanso 48:e308067cfea5 100 crc = m_Crc7Table[(crc << 1) ^ data[i]];
evanso 48:e308067cfea5 101 }
evanso 48:e308067cfea5 102
evanso 48:e308067cfea5 103 //Return the calculated checksum
evanso 48:e308067cfea5 104 return crc;
evanso 48:e308067cfea5 105 }
evanso 48:e308067cfea5 106
evanso 48:e308067cfea5 107 unsigned short crc16(const char* data, int length)
evanso 48:e308067cfea5 108 {
evanso 48:e308067cfea5 109 //Calculate the CRC16 checksum for the specified data block
evanso 48:e308067cfea5 110 unsigned short crc = 0;
evanso 48:e308067cfea5 111 for (int i = 0; i < length; i++) {
evanso 48:e308067cfea5 112 crc = (crc << 8) ^ m_Crc16Table[((crc >> 8) ^ data[i]) & 0x00FF];
evanso 48:e308067cfea5 113 }
evanso 48:e308067cfea5 114
evanso 48:e308067cfea5 115 //Return the calculated checksum
evanso 48:e308067cfea5 116 return crc;
evanso 48:e308067cfea5 117 }
evanso 48:e308067cfea5 118
evanso 48:e308067cfea5 119 }