Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of project by
main.cpp@0:a8e057156263, 2016-12-02 (annotated)
- Committer:
- gunpuen2
- Date:
- Fri Dec 02 07:00:27 2016 +0000
- Revision:
- 0:a8e057156263
- Child:
- 1:6157c77da3d5
This is project FRA221
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gunpuen2 | 0:a8e057156263 | 1 | /******************************************************************************/ |
gunpuen2 | 0:a8e057156263 | 2 | /* This Nicleo is stat 0! */ |
gunpuen2 | 0:a8e057156263 | 3 | /******************************************************************************/ |
gunpuen2 | 0:a8e057156263 | 4 | #include "mbed.h" |
gunpuen2 | 0:a8e057156263 | 5 | |
gunpuen2 | 0:a8e057156263 | 6 | // Initail I/O. |
gunpuen2 | 0:a8e057156263 | 7 | AnalogIn VRx(A2); |
gunpuen2 | 0:a8e057156263 | 8 | AnalogIn VRy(A3); |
gunpuen2 | 0:a8e057156263 | 9 | DigitalIn Button(D13); |
gunpuen2 | 0:a8e057156263 | 10 | Serial bt(PA_15, PB_7); |
gunpuen2 | 0:a8e057156263 | 11 | |
gunpuen2 | 0:a8e057156263 | 12 | // Initial function. |
gunpuen2 | 0:a8e057156263 | 13 | char check_joys(int jx,int jy); |
gunpuen2 | 0:a8e057156263 | 14 | int check_joys_int(int jx,int jy); |
gunpuen2 | 0:a8e057156263 | 15 | int check_correctPosition(int X,int Y); |
gunpuen2 | 0:a8e057156263 | 16 | int get_position(int input_position,int ship_type); |
gunpuen2 | 0:a8e057156263 | 17 | void check_ready(); |
gunpuen2 | 0:a8e057156263 | 18 | void print_metrix(); |
gunpuen2 | 0:a8e057156263 | 19 | void Select_Position(char M); |
gunpuen2 | 0:a8e057156263 | 20 | |
gunpuen2 | 0:a8e057156263 | 21 | // Initial variable. |
gunpuen2 | 0:a8e057156263 | 22 | int select_Position = 0; |
gunpuen2 | 0:a8e057156263 | 23 | int ATKposition = 0; |
gunpuen2 | 0:a8e057156263 | 24 | int iWaitATK = 0; |
gunpuen2 | 0:a8e057156263 | 25 | int U_ready = 0; |
gunpuen2 | 0:a8e057156263 | 26 | int state = 0; |
gunpuen2 | 0:a8e057156263 | 27 | int ship_notdestroy[8] = {4,3,2,2,1,1,1,1}; |
gunpuen2 | 0:a8e057156263 | 28 | int ship_destroyed[8] = {0}; |
gunpuen2 | 0:a8e057156263 | 29 | int ship_flor[8][8] = {{0}}; //__________________________________________________This is ship area. |
gunpuen2 | 0:a8e057156263 | 30 | int check_ship1 = 0; |
gunpuen2 | 0:a8e057156263 | 31 | int check_ship2 = 0; |
gunpuen2 | 0:a8e057156263 | 32 | int ship4[4] = {0}; |
gunpuen2 | 0:a8e057156263 | 33 | int ship3[3] = {0}; |
gunpuen2 | 0:a8e057156263 | 34 | int ship2[2][2] = {{0}}; |
gunpuen2 | 0:a8e057156263 | 35 | int ship1[4] = {0}; |
gunpuen2 | 0:a8e057156263 | 36 | |
gunpuen2 | 0:a8e057156263 | 37 | int main(){ //-------------------------------------------------------------------Main Function. |
gunpuen2 | 0:a8e057156263 | 38 | float Vx; |
gunpuen2 | 0:a8e057156263 | 39 | float Vy; |
gunpuen2 | 0:a8e057156263 | 40 | int SW,iVxVy,iSW,n; |
gunpuen2 | 0:a8e057156263 | 41 | int iShipType = 0; |
gunpuen2 | 0:a8e057156263 | 42 | char m; |
gunpuen2 | 0:a8e057156263 | 43 | while(1) { |
gunpuen2 | 0:a8e057156263 | 44 | if(iShipType<8){ |
gunpuen2 | 0:a8e057156263 | 45 | Vx = VRx.read() * 1024; |
gunpuen2 | 0:a8e057156263 | 46 | Vy = VRy.read() * 1024; |
gunpuen2 | 0:a8e057156263 | 47 | SW = Button.read(); |
gunpuen2 | 0:a8e057156263 | 48 | m = check_joys(Vx,Vy); |
gunpuen2 | 0:a8e057156263 | 49 | n = check_joys_int(Vx,Vy); |
gunpuen2 | 0:a8e057156263 | 50 | if(n == 1){ //_______________________________________________________ For make sure coordinate is press 1 time. |
gunpuen2 | 0:a8e057156263 | 51 | iVxVy = 0; |
gunpuen2 | 0:a8e057156263 | 52 | check_ready(); |
gunpuen2 | 0:a8e057156263 | 53 | } |
gunpuen2 | 0:a8e057156263 | 54 | if(SW == 1){ //______________________________________________________ For make sure switch is press 1 time. |
gunpuen2 | 0:a8e057156263 | 55 | iSW = 0; |
gunpuen2 | 0:a8e057156263 | 56 | check_ready(); |
gunpuen2 | 0:a8e057156263 | 57 | } |
gunpuen2 | 0:a8e057156263 | 58 | if(m!=NULL && iVxVy==0){ //__________________________________________ Get position that wait for press switch. |
gunpuen2 | 0:a8e057156263 | 59 | Select_Position(m); |
gunpuen2 | 0:a8e057156263 | 60 | check_ready(); |
gunpuen2 | 0:a8e057156263 | 61 | printf("select_Position = %d\n",select_Position); |
gunpuen2 | 0:a8e057156263 | 62 | iVxVy = 1; |
gunpuen2 | 0:a8e057156263 | 63 | } |
gunpuen2 | 0:a8e057156263 | 64 | if(SW==0 && iSW==0){ //______________________________________________If switch pressing by human. |
gunpuen2 | 0:a8e057156263 | 65 | printf("Wait!\n"); |
gunpuen2 | 0:a8e057156263 | 66 | check_ready(); |
gunpuen2 | 0:a8e057156263 | 67 | if(get_position(select_Position,ship_notdestroy[iShipType])==0){ //__Please read explanation in function get_position. |
gunpuen2 | 0:a8e057156263 | 68 | printf("Please input correct position\n"); |
gunpuen2 | 0:a8e057156263 | 69 | }else{ |
gunpuen2 | 0:a8e057156263 | 70 | iShipType++; |
gunpuen2 | 0:a8e057156263 | 71 | } |
gunpuen2 | 0:a8e057156263 | 72 | check_ready(); |
gunpuen2 | 0:a8e057156263 | 73 | iSW = 1; |
gunpuen2 | 0:a8e057156263 | 74 | print_metrix(); |
gunpuen2 | 0:a8e057156263 | 75 | } |
gunpuen2 | 0:a8e057156263 | 76 | }else{ |
gunpuen2 | 0:a8e057156263 | 77 | if(U_ready!=1){bt.putc('E');} |
gunpuen2 | 0:a8e057156263 | 78 | |
gunpuen2 | 0:a8e057156263 | 79 | printf("\n"); |
gunpuen2 | 0:a8e057156263 | 80 | break; |
gunpuen2 | 0:a8e057156263 | 81 | } |
gunpuen2 | 0:a8e057156263 | 82 | } |
gunpuen2 | 0:a8e057156263 | 83 | select_Position = 0; |
gunpuen2 | 0:a8e057156263 | 84 | |
gunpuen2 | 0:a8e057156263 | 85 | while(1) { //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Play |
gunpuen2 | 0:a8e057156263 | 86 | if(U_ready == 1){state = 0;}else{state = 1;} |
gunpuen2 | 0:a8e057156263 | 87 | if(state == 1){ |
gunpuen2 | 0:a8e057156263 | 88 | printf("Your turn.\n"); |
gunpuen2 | 0:a8e057156263 | 89 | Vx = VRx.read() * 1024; |
gunpuen2 | 0:a8e057156263 | 90 | Vy = VRy.read() * 1024; |
gunpuen2 | 0:a8e057156263 | 91 | SW = Button.read(); |
gunpuen2 | 0:a8e057156263 | 92 | m = check_joys(Vx,Vy); |
gunpuen2 | 0:a8e057156263 | 93 | n = check_joys_int(Vx,Vy); |
gunpuen2 | 0:a8e057156263 | 94 | if(n == 1){ |
gunpuen2 | 0:a8e057156263 | 95 | iVxVy = 0; |
gunpuen2 | 0:a8e057156263 | 96 | } |
gunpuen2 | 0:a8e057156263 | 97 | if(SW == 1){ |
gunpuen2 | 0:a8e057156263 | 98 | iSW = 0; |
gunpuen2 | 0:a8e057156263 | 99 | } |
gunpuen2 | 0:a8e057156263 | 100 | if(m!=NULL && iVxVy==0){ |
gunpuen2 | 0:a8e057156263 | 101 | Select_Position(m); |
gunpuen2 | 0:a8e057156263 | 102 | printf("select_Position = %d\n",select_Position); |
gunpuen2 | 0:a8e057156263 | 103 | iVxVy = 1; |
gunpuen2 | 0:a8e057156263 | 104 | } |
gunpuen2 | 0:a8e057156263 | 105 | if(SW==0 && iSW==0){ |
gunpuen2 | 0:a8e057156263 | 106 | printf("send\n"); |
gunpuen2 | 0:a8e057156263 | 107 | bt.printf("%d",select_Position); |
gunpuen2 | 0:a8e057156263 | 108 | state = 0; |
gunpuen2 | 0:a8e057156263 | 109 | iSW = 1; |
gunpuen2 | 0:a8e057156263 | 110 | } |
gunpuen2 | 0:a8e057156263 | 111 | }else{ |
gunpuen2 | 0:a8e057156263 | 112 | while(1){ |
gunpuen2 | 0:a8e057156263 | 113 | printf(""); |
gunpuen2 | 0:a8e057156263 | 114 | if(bt.readable()){ |
gunpuen2 | 0:a8e057156263 | 115 | // Wait for resive position of enemy that atk you. |
gunpuen2 | 0:a8e057156263 | 116 | iWaitATK = 1; |
gunpuen2 | 0:a8e057156263 | 117 | } |
gunpuen2 | 0:a8e057156263 | 118 | if(iWaitATK==1){ |
gunpuen2 | 0:a8e057156263 | 119 | break; |
gunpuen2 | 0:a8e057156263 | 120 | } |
gunpuen2 | 0:a8e057156263 | 121 | } |
gunpuen2 | 0:a8e057156263 | 122 | } |
gunpuen2 | 0:a8e057156263 | 123 | } |
gunpuen2 | 0:a8e057156263 | 124 | } |
gunpuen2 | 0:a8e057156263 | 125 | |
gunpuen2 | 0:a8e057156263 | 126 | |
gunpuen2 | 0:a8e057156263 | 127 | |
gunpuen2 | 0:a8e057156263 | 128 | |
gunpuen2 | 0:a8e057156263 | 129 | |
gunpuen2 | 0:a8e057156263 | 130 | |
gunpuen2 | 0:a8e057156263 | 131 | |
gunpuen2 | 0:a8e057156263 | 132 | |
gunpuen2 | 0:a8e057156263 | 133 | |
gunpuen2 | 0:a8e057156263 | 134 | |
gunpuen2 | 0:a8e057156263 | 135 | |
gunpuen2 | 0:a8e057156263 | 136 | |
gunpuen2 | 0:a8e057156263 | 137 | |
gunpuen2 | 0:a8e057156263 | 138 | |
gunpuen2 | 0:a8e057156263 | 139 | |
gunpuen2 | 0:a8e057156263 | 140 | |
gunpuen2 | 0:a8e057156263 | 141 | |
gunpuen2 | 0:a8e057156263 | 142 | |
gunpuen2 | 0:a8e057156263 | 143 | |
gunpuen2 | 0:a8e057156263 | 144 | |
gunpuen2 | 0:a8e057156263 | 145 | |
gunpuen2 | 0:a8e057156263 | 146 | |
gunpuen2 | 0:a8e057156263 | 147 | |
gunpuen2 | 0:a8e057156263 | 148 | |
gunpuen2 | 0:a8e057156263 | 149 | char check_joys(int jx,int jy){ //-----------------------------------------------Check joystick that it up,down,left or right. |
gunpuen2 | 0:a8e057156263 | 150 | if(jx < 24.0){ |
gunpuen2 | 0:a8e057156263 | 151 | return 'a'; |
gunpuen2 | 0:a8e057156263 | 152 | } |
gunpuen2 | 0:a8e057156263 | 153 | else if(jx > 1000.0){ |
gunpuen2 | 0:a8e057156263 | 154 | return 'd'; |
gunpuen2 | 0:a8e057156263 | 155 | } |
gunpuen2 | 0:a8e057156263 | 156 | else if(jy < 24.0){ |
gunpuen2 | 0:a8e057156263 | 157 | return 'w'; |
gunpuen2 | 0:a8e057156263 | 158 | } |
gunpuen2 | 0:a8e057156263 | 159 | else if(jy > 1000.0){ |
gunpuen2 | 0:a8e057156263 | 160 | return 's'; |
gunpuen2 | 0:a8e057156263 | 161 | }else{ |
gunpuen2 | 0:a8e057156263 | 162 | return NULL; |
gunpuen2 | 0:a8e057156263 | 163 | } |
gunpuen2 | 0:a8e057156263 | 164 | } |
gunpuen2 | 0:a8e057156263 | 165 | int check_joys_int(int jx,int jy){ //--------------------------------------------Check joystick that it is centre. |
gunpuen2 | 0:a8e057156263 | 166 | if(jx>=450.0&&jx<=600.0){ |
gunpuen2 | 0:a8e057156263 | 167 | if(jy>=450.0&&jy<=600.0){ |
gunpuen2 | 0:a8e057156263 | 168 | return 1; |
gunpuen2 | 0:a8e057156263 | 169 | }else{ |
gunpuen2 | 0:a8e057156263 | 170 | return 0; |
gunpuen2 | 0:a8e057156263 | 171 | } |
gunpuen2 | 0:a8e057156263 | 172 | }else{ |
gunpuen2 | 0:a8e057156263 | 173 | return 0; |
gunpuen2 | 0:a8e057156263 | 174 | } |
gunpuen2 | 0:a8e057156263 | 175 | } |
gunpuen2 | 0:a8e057156263 | 176 | void Select_Position(char M){ //-------------------------------------------------Change position of cursor (Joystick). |
gunpuen2 | 0:a8e057156263 | 177 | switch(M){ |
gunpuen2 | 0:a8e057156263 | 178 | case 'a': |
gunpuen2 | 0:a8e057156263 | 179 | if(select_Position%10!=0){select_Position = select_Position - 1;} |
gunpuen2 | 0:a8e057156263 | 180 | break; |
gunpuen2 | 0:a8e057156263 | 181 | case 'd': |
gunpuen2 | 0:a8e057156263 | 182 | if(select_Position%10!=7){select_Position = select_Position + 1;} |
gunpuen2 | 0:a8e057156263 | 183 | break; |
gunpuen2 | 0:a8e057156263 | 184 | case 'w': |
gunpuen2 | 0:a8e057156263 | 185 | if(select_Position/10!=0){select_Position = select_Position - 10;} |
gunpuen2 | 0:a8e057156263 | 186 | break; |
gunpuen2 | 0:a8e057156263 | 187 | case 's': |
gunpuen2 | 0:a8e057156263 | 188 | if(select_Position/10!=7){select_Position = select_Position + 10;} |
gunpuen2 | 0:a8e057156263 | 189 | break; |
gunpuen2 | 0:a8e057156263 | 190 | } |
gunpuen2 | 0:a8e057156263 | 191 | } |
gunpuen2 | 0:a8e057156263 | 192 | int get_position(int input_position,int ship_type){ //---------------------------Plot ship in ship area. |
gunpuen2 | 0:a8e057156263 | 193 | int i,x,y = 0; |
gunpuen2 | 0:a8e057156263 | 194 | int error = 0; |
gunpuen2 | 0:a8e057156263 | 195 | |
gunpuen2 | 0:a8e057156263 | 196 | y = input_position/10; |
gunpuen2 | 0:a8e057156263 | 197 | x = input_position%10; |
gunpuen2 | 0:a8e057156263 | 198 | |
gunpuen2 | 0:a8e057156263 | 199 | for(i=0;i<ship_type;i++){ |
gunpuen2 | 0:a8e057156263 | 200 | if(check_correctPosition(y,x) == 1){ |
gunpuen2 | 0:a8e057156263 | 201 | if(ship_type == 4){ship4[i] = (y*10)+x;} |
gunpuen2 | 0:a8e057156263 | 202 | else if(ship_type == 3){ship3[i] = (y*10)+x;} |
gunpuen2 | 0:a8e057156263 | 203 | else if(ship_type == 2){ship2[check_ship2][i] = (y*10)+x;} |
gunpuen2 | 0:a8e057156263 | 204 | else if(ship_type == 1){ship1[check_ship1] = (y*10)+x;check_ship1++;} |
gunpuen2 | 0:a8e057156263 | 205 | }else{ |
gunpuen2 | 0:a8e057156263 | 206 | error = 1; |
gunpuen2 | 0:a8e057156263 | 207 | break; |
gunpuen2 | 0:a8e057156263 | 208 | } |
gunpuen2 | 0:a8e057156263 | 209 | if(ship_type%2 == 0){ |
gunpuen2 | 0:a8e057156263 | 210 | y++; |
gunpuen2 | 0:a8e057156263 | 211 | }else{ |
gunpuen2 | 0:a8e057156263 | 212 | x++; |
gunpuen2 | 0:a8e057156263 | 213 | } |
gunpuen2 | 0:a8e057156263 | 214 | } |
gunpuen2 | 0:a8e057156263 | 215 | if(ship_type==2){ |
gunpuen2 | 0:a8e057156263 | 216 | check_ship2++; |
gunpuen2 | 0:a8e057156263 | 217 | } |
gunpuen2 | 0:a8e057156263 | 218 | if(error == 1){ |
gunpuen2 | 0:a8e057156263 | 219 | return 0; |
gunpuen2 | 0:a8e057156263 | 220 | }else{ |
gunpuen2 | 0:a8e057156263 | 221 | y = input_position/10; |
gunpuen2 | 0:a8e057156263 | 222 | x = input_position%10; |
gunpuen2 | 0:a8e057156263 | 223 | for(i=0;i<ship_type;i++){ |
gunpuen2 | 0:a8e057156263 | 224 | ship_flor[y][x] = ship_type; |
gunpuen2 | 0:a8e057156263 | 225 | if(ship_type%2 == 0){ |
gunpuen2 | 0:a8e057156263 | 226 | y++; |
gunpuen2 | 0:a8e057156263 | 227 | }else{ |
gunpuen2 | 0:a8e057156263 | 228 | x++; |
gunpuen2 | 0:a8e057156263 | 229 | } |
gunpuen2 | 0:a8e057156263 | 230 | } |
gunpuen2 | 0:a8e057156263 | 231 | return 1; |
gunpuen2 | 0:a8e057156263 | 232 | } |
gunpuen2 | 0:a8e057156263 | 233 | } |
gunpuen2 | 0:a8e057156263 | 234 | int check_correctPosition(int X,int Y){ |
gunpuen2 | 0:a8e057156263 | 235 | if(X<=7){ |
gunpuen2 | 0:a8e057156263 | 236 | if(Y<=7){ |
gunpuen2 | 0:a8e057156263 | 237 | if(ship_flor[X][Y] == 0){ |
gunpuen2 | 0:a8e057156263 | 238 | return 1; |
gunpuen2 | 0:a8e057156263 | 239 | }else{ |
gunpuen2 | 0:a8e057156263 | 240 | return 0; |
gunpuen2 | 0:a8e057156263 | 241 | } |
gunpuen2 | 0:a8e057156263 | 242 | } |
gunpuen2 | 0:a8e057156263 | 243 | }else{ |
gunpuen2 | 0:a8e057156263 | 244 | return 0; |
gunpuen2 | 0:a8e057156263 | 245 | } |
gunpuen2 | 0:a8e057156263 | 246 | } |
gunpuen2 | 0:a8e057156263 | 247 | void print_metrix(){ |
gunpuen2 | 0:a8e057156263 | 248 | for(int i=0;i<8;i++){ |
gunpuen2 | 0:a8e057156263 | 249 | for(int j=0;j<8;j++){ |
gunpuen2 | 0:a8e057156263 | 250 | printf("| %d |",ship_flor[i][j]); |
gunpuen2 | 0:a8e057156263 | 251 | } |
gunpuen2 | 0:a8e057156263 | 252 | printf("\n"); |
gunpuen2 | 0:a8e057156263 | 253 | } |
gunpuen2 | 0:a8e057156263 | 254 | } |
gunpuen2 | 0:a8e057156263 | 255 | void check_ready(){ |
gunpuen2 | 0:a8e057156263 | 256 | if(bt.readable()){ |
gunpuen2 | 0:a8e057156263 | 257 | U_ready = 1; |
gunpuen2 | 0:a8e057156263 | 258 | } |
gunpuen2 | 0:a8e057156263 | 259 | } |
gunpuen2 | 0:a8e057156263 | 260 | /* |
gunpuen2 | 0:a8e057156263 | 261 | int check_when_enemyATK(int position){ |
gunpuen2 | 0:a8e057156263 | 262 | |
gunpuen2 | 0:a8e057156263 | 263 | } |
gunpuen2 | 0:a8e057156263 | 264 | */ |