This is THE 447 FINAL PROJECT this is the frame work put your code in the spot where the it suppose to go and. Make sure you import this into your complier and work on your section, once you done just commit the changes and fork to a new folder

Dependencies:   mbed-rtos mbed draw_test EALib SWSPI

Committer:
AndyTran
Date:
Thu Dec 03 09:43:48 2015 +0000
Revision:
4:b192d0d47309
Parent:
3:84d9362dffeb
Child:
6:0f60a4070f09
update with game board class and some more function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndyTran 2:b14759e704c7 1 #include <iostream>
AndyTran 0:4abb197a773c 2 #include "mbed.h"
AndyTran 0:4abb197a773c 3 #include "cmsis_os.h"
AndyTran 4:b192d0d47309 4 #include "game_board.h" //duck soup
AndyTran 2:b14759e704c7 5 using namespace std;
AndyTran 0:4abb197a773c 6
AndyTran 0:4abb197a773c 7 //declare your input pin and output pin here:
AndyTran 0:4abb197a773c 8 //DigitalOut led1(p25);
AndyTran 0:4abb197a773c 9 //DigitalOut led2(p26);
AndyTran 0:4abb197a773c 10 //DigitalOut led3(p28);
AndyTran 0:4abb197a773c 11 //
AndyTran 0:4abb197a773c 12 // declare you globle variable here:
AndyTran 2:b14759e704c7 13 unsigned char my_X_coor = 0, my_Y_coor = 0;
AndyTran 3:84d9362dffeb 14 unsigned char my_LEDs = 0x1A;
AndyTran 2:b14759e704c7 15 unsigned char other_X_coor = 0, other_Y_coor = 0;
AndyTran 2:b14759e704c7 16 int friendly [6][6]; // array to determine friendly location
AndyTran 2:b14759e704c7 17
AndyTran 2:b14759e704c7 18
AndyTran 0:4abb197a773c 19 //X_coor is x coordinate from 0 to 6
AndyTran 0:4abb197a773c 20 //Y_coor is y coordinate form A to F
AndyTran 0:4abb197a773c 21 //
AndyTran 0:4abb197a773c 22 //
AndyTran 0:4abb197a773c 23 //
AndyTran 0:4abb197a773c 24
AndyTran 0:4abb197a773c 25 // this thread is your SPI communication between 2 board
AndyTran 0:4abb197a773c 26 void SPI_communication(void const *args) {
AndyTran 2:b14759e704c7 27 //send my_X_coor and my_Y_coor if the center button is hit
AndyTran 2:b14759e704c7 28 //receive other board x_coor and y_coor
AndyTran 0:4abb197a773c 29 //spi code here
AndyTran 4:b192d0d47309 30 //turn 1 :friendly
AndyTran 4:b192d0d47309 31 // player1 send shooting location
AndyTran 4:b192d0d47309 32 // player1 get shooting location and whether it hit or miss
AndyTran 4:b192d0d47309 33 //turn 1 :enemy
AndyTran 4:b192d0d47309 34 // get enemy shooting location
AndyTran 4:b192d0d47309 35 // check wheather is it a hit or miss
AndyTran 4:b192d0d47309 36 // echo enemy shooting location and hit/miss flag
AndyTran 4:b192d0d47309 37 //send out winner status
AndyTran 4:b192d0d47309 38 // 0 = still no winner
AndyTran 4:b192d0d47309 39 // 1 = i am lose
AndyTran 4:b192d0d47309 40 // so if you receive a 1 that mean you win
AndyTran 0:4abb197a773c 41 }
AndyTran 0:4abb197a773c 42
AndyTran 0:4abb197a773c 43 // joystick update x_coor and y_coor here
AndyTran 0:4abb197a773c 44 void joy_stick_read(void const *args) { //might be an interrupt thread here for interrupt read of joystick
AndyTran 0:4abb197a773c 45 // joy stick to update global val of x_coor and y_coor;
AndyTran 2:b14759e704c7 46 // convert y coor to hex offset
AndyTran 0:4abb197a773c 47 // update the 8 LEDs here
AndyTran 0:4abb197a773c 48 }
AndyTran 0:4abb197a773c 49
AndyTran 0:4abb197a773c 50 // this thread use to update the game board
AndyTran 2:b14759e704c7 51 void game_view_update (void const *args) {
AndyTran 2:b14759e704c7 52 // board of this game will be a class this update and get info to and from the class
AndyTran 0:4abb197a773c 53 // update the by led game update
AndyTran 1:3f7aa28da00d 54 // Uart runing at 921600 max speed; hopefully print 1 line and out;
AndyTran 4:b192d0d47309 55 // using an interger then cycle through the get string function to put it inti the printf function
AndyTran 4:b192d0d47309 56
AndyTran 3:84d9362dffeb 57 // * = hit
AndyTran 1:3f7aa28da00d 58 // o = miss
AndyTran 1:3f7aa28da00d 59 // > = your ship ship
AndyTran 2:b14759e704c7 60
AndyTran 2:b14759e704c7 61 // 1) check for a hit
AndyTran 2:b14759e704c7 62 // 2) update the game board
AndyTran 2:b14759e704c7 63
AndyTran 1:3f7aa28da00d 64 // BLANK game Board
AndyTran 1:3f7aa28da00d 65 // F _ _ _ _ _ _ F _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 66 // E _ _ _ _ _ _ E _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 67 // D _ _ _ _ _ _ D _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 68 // C _ _ _ _ _ _ C _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 69 // B _ _ _ _ _ _ B _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 70 // A _ _ _ _ _ _ A _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 71 // 1 2 3 4 5 6 1 2 3 4 5 6
AndyTran 1:3f7aa28da00d 72 // Friendly Enemy
AndyTran 1:3f7aa28da00d 73
AndyTran 1:3f7aa28da00d 74 // Example of running game
AndyTran 1:3f7aa28da00d 75 // F _ O _ > _ _ F _ O _ _ _ _
AndyTran 3:84d9362dffeb 76 // E > _ O _ > _ E _ _ * _ _ _
AndyTran 1:3f7aa28da00d 77 // D _ _ > _ _ _ D _ _ _ O _ _
AndyTran 1:3f7aa28da00d 78 // C O _ _ _ _ _ C _ O _ _ _ _
AndyTran 3:84d9362dffeb 79 // B _ * _ O _ _ B _ _ _ * _ _ //X on friendly mean your ship got destroy
AndyTran 1:3f7aa28da00d 80 // A _ _ _ > _ _ A _ _ _ _ _ _
AndyTran 1:3f7aa28da00d 81 // 1 2 3 4 5 6 1 2 3 4 5 6
AndyTran 1:3f7aa28da00d 82 // Friendly Enemy
AndyTran 1:3f7aa28da00d 83 // Turn 1 = miss at 2F
AndyTran 2:b14759e704c7 84 // Turn 2 = We sink an enemy battle ship at 3E
AndyTran 1:3f7aa28da00d 85 // Turn 3 = miss at 4D
AndyTran 1:3f7aa28da00d 86 // Turn 4 = miss at 2C
AndyTran 2:b14759e704c7 87 // Tunr 5 = We sink an enemy battle ship at 4B
AndyTran 1:3f7aa28da00d 88
AndyTran 0:4abb197a773c 89 }
AndyTran 0:4abb197a773c 90
AndyTran 0:4abb197a773c 91 // code here to check for winer and turn on the RGB
AndyTran 2:b14759e704c7 92 void winnercheck (void const *args) {
AndyTran 4:b192d0d47309 93 //check for winner by destroy all enemy ship;
AndyTran 0:4abb197a773c 94 }
AndyTran 0:4abb197a773c 95
AndyTran 0:4abb197a773c 96 //read the accele
AndyTran 2:b14759e704c7 97 void checkreset (void const *args) {
AndyTran 0:4abb197a773c 98 //read the acceleron meter and compare against the previous value to
AndyTran 0:4abb197a773c 99 //determine if the board have been shake the reset the game board;
AndyTran 0:4abb197a773c 100 }
AndyTran 0:4abb197a773c 101
AndyTran 0:4abb197a773c 102
AndyTran 2:b14759e704c7 103 osThreadDef(SPI_communication, osPriorityNormal, DEFAULT_STACK_SIZE); //comm between 2 board define thread
AndyTran 2:b14759e704c7 104 osThreadDef(joy_stick_read, osPriorityNormal, DEFAULT_STACK_SIZE);//might be an interrupt define thread
AndyTran 2:b14759e704c7 105 osThreadDef(game_view_update, osPriorityNormal, DEFAULT_STACK_SIZE);//update game view write to the fifo uart buffer define thread
AndyTran 2:b14759e704c7 106 osThreadDef(winnercheck, osPriorityNormal, DEFAULT_STACK_SIZE); //check for winner define thread
AndyTran 2:b14759e704c7 107 osThreadDef(checkreset, osPriorityNormal, DEFAULT_STACK_SIZE); //check for reset define thread
AndyTran 0:4abb197a773c 108
AndyTran 0:4abb197a773c 109 int main() {
AndyTran 0:4abb197a773c 110 osThreadCreate(osThread(SPI_communication), NULL);
AndyTran 0:4abb197a773c 111 osThreadCreate(osThread(joy_stick_read), NULL);
AndyTran 0:4abb197a773c 112 osThreadCreate(osThread(game_view_update), NULL);
AndyTran 0:4abb197a773c 113 osThreadCreate(osThread(winnercheck), NULL);
AndyTran 0:4abb197a773c 114 osThreadCreate(osThread(checkreset), NULL);
AndyTran 0:4abb197a773c 115 // initialize all peripheral here
AndyTran 0:4abb197a773c 116 //
AndyTran 0:4abb197a773c 117 //
AndyTran 0:4abb197a773c 118 //
AndyTran 4:b192d0d47309 119 // create a initialize thread with the key
AndyTran 4:b192d0d47309 120 // if key is 0 run the initialize the change key to 1
AndyTran 4:b192d0d47309 121 // if key is 1 then get do nothing and get out
AndyTran 0:4abb197a773c 122
AndyTran 2:b14759e704c7 123 //note game initialize and setup upon shake the board
AndyTran 2:b14759e704c7 124
AndyTran 0:4abb197a773c 125 //Main Thread
AndyTran 0:4abb197a773c 126 while (true) {
AndyTran 0:4abb197a773c 127 //check status and update status
AndyTran 0:4abb197a773c 128 }
AndyTran 0:4abb197a773c 129 }