test avoid bulled game

Dependencies:   C12832_lcd LCD_fonts mbed mbed-rtos

Committer:
kaku_jyoko
Date:
Mon Dec 12 11:50:02 2016 +0000
Revision:
33:442498e281b1
change

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaku_jyoko 33:442498e281b1 1 #include "mbed.h"
kaku_jyoko 33:442498e281b1 2 #include "C12832_lcd.h"
kaku_jyoko 33:442498e281b1 3 #include "Arial_9.h"
kaku_jyoko 33:442498e281b1 4 #include "Small_7.h"
kaku_jyoko 33:442498e281b1 5 #include "graphics.h"
kaku_jyoko 33:442498e281b1 6 #include "models.h"
kaku_jyoko 33:442498e281b1 7 #include "rtos.h"
kaku_jyoko 33:442498e281b1 8 #include "point.h"
kaku_jyoko 33:442498e281b1 9 #include "stdlib.h"
kaku_jyoko 33:442498e281b1 10 #include "convert.h"
kaku_jyoko 33:442498e281b1 11
kaku_jyoko 33:442498e281b1 12 C12832_LCD lcd;
kaku_jyoko 33:442498e281b1 13
kaku_jyoko 33:442498e281b1 14 // down: p12, left: p13, center: p14, up: p15, right: p16
kaku_jyoko 33:442498e281b1 15 InterruptIn button(p14);
kaku_jyoko 33:442498e281b1 16 AnalogIn aIn(p20);
kaku_jyoko 33:442498e281b1 17 DigitalOut led1(LED1);
kaku_jyoko 33:442498e281b1 18
kaku_jyoko 33:442498e281b1 19 Mutex jump_mtx;
kaku_jyoko 33:442498e281b1 20 Mutex update_mtx;
kaku_jyoko 33:442498e281b1 21 int jump_flag = 0;
kaku_jyoko 33:442498e281b1 22 Person h;
kaku_jyoko 33:442498e281b1 23 Stage stage;
kaku_jyoko 33:442498e281b1 24 Serial pc(USBTX, USBRX); // tx, rx
kaku_jyoko 33:442498e281b1 25 Bullet* b = NULL;
kaku_jyoko 33:442498e281b1 26 Timer t;
kaku_jyoko 33:442498e281b1 27 int white_board[LCD_Y][LCD_X];
kaku_jyoko 33:442498e281b1 28 int* wall_height;
kaku_jyoko 33:442498e281b1 29
kaku_jyoko 33:442498e281b1 30 void reset_white_board()
kaku_jyoko 33:442498e281b1 31 {
kaku_jyoko 33:442498e281b1 32 for(int i = 0; i < LCD_Y; i++){
kaku_jyoko 33:442498e281b1 33 for (int j = 0; j < LCD_X; j++){
kaku_jyoko 33:442498e281b1 34 white_board[i][j] = 0;
kaku_jyoko 33:442498e281b1 35 }
kaku_jyoko 33:442498e281b1 36 }
kaku_jyoko 33:442498e281b1 37 }
kaku_jyoko 33:442498e281b1 38
kaku_jyoko 33:442498e281b1 39 void make_wall(){
kaku_jyoko 33:442498e281b1 40 wall_height = stage.getStage();
kaku_jyoko 33:442498e281b1 41 for(int i = 0; i < LCD_Y; i++){
kaku_jyoko 33:442498e281b1 42 for(int j = 0; j < LCD_X ; j++){
kaku_jyoko 33:442498e281b1 43 if(wall_height[i] > (LCD_Y - 1 - j)){
kaku_jyoko 33:442498e281b1 44 white_board[i][j] = white_board[i][j] ^ 1;
kaku_jyoko 33:442498e281b1 45 }
kaku_jyoko 33:442498e281b1 46 }
kaku_jyoko 33:442498e281b1 47 }
kaku_jyoko 33:442498e281b1 48 }
kaku_jyoko 33:442498e281b1 49
kaku_jyoko 33:442498e281b1 50 void a(){
kaku_jyoko 33:442498e281b1 51 h.jump();
kaku_jyoko 33:442498e281b1 52 }
kaku_jyoko 33:442498e281b1 53
kaku_jyoko 33:442498e281b1 54 void jump_receive(void const *argument){
kaku_jyoko 33:442498e281b1 55 while(true){
kaku_jyoko 33:442498e281b1 56 jump_mtx.lock();
kaku_jyoko 33:442498e281b1 57 button.rise(&a);
kaku_jyoko 33:442498e281b1 58 jump_mtx.unlock();
kaku_jyoko 33:442498e281b1 59 //Thread::wait(0.1);
kaku_jyoko 33:442498e281b1 60 }
kaku_jyoko 33:442498e281b1 61 }
kaku_jyoko 33:442498e281b1 62
kaku_jyoko 33:442498e281b1 63 void bullet_receive(void const *argument){
kaku_jyoko 33:442498e281b1 64 point start;
kaku_jyoko 33:442498e281b1 65 start.x = 127;
kaku_jyoko 33:442498e281b1 66 start.y = 27;
kaku_jyoko 33:442498e281b1 67 char c;
kaku_jyoko 33:442498e281b1 68 while(true){
kaku_jyoko 33:442498e281b1 69 t.start();
kaku_jyoko 33:442498e281b1 70 c = pc.getc();
kaku_jyoko 33:442498e281b1 71 if(c == 'a' && t.read() > 5.0){
kaku_jyoko 33:442498e281b1 72 b = NULL;
kaku_jyoko 33:442498e281b1 73 b = &Bullet(start, 2);
kaku_jyoko 33:442498e281b1 74 t.reset();
kaku_jyoko 33:442498e281b1 75 }
kaku_jyoko 33:442498e281b1 76 }
kaku_jyoko 33:442498e281b1 77 }
kaku_jyoko 33:442498e281b1 78
kaku_jyoko 33:442498e281b1 79 int corrision_judge(point p_person, point p_bullet){
kaku_jyoko 33:442498e281b1 80 printf("bullet x: %d, y: %d \n", p_bullet.x,p_bullet.y);
kaku_jyoko 33:442498e281b1 81 printf("person x: %d, y: %d \n", p_person.x,p_person.y);
kaku_jyoko 33:442498e281b1 82 if((p_person.x + 2 >= p_bullet.x) && (p_person.x + 2 <= p_bullet.x + 5)){
kaku_jyoko 33:442498e281b1 83 printf("aaaaa\n");
kaku_jyoko 33:442498e281b1 84 if((p_person.y + 2 >= p_bullet.y + 1) && (p_person.y + 2 <= p_bullet.y + 4)){
kaku_jyoko 33:442498e281b1 85 printf("gameover\n");
kaku_jyoko 33:442498e281b1 86 }
kaku_jyoko 33:442498e281b1 87 }
kaku_jyoko 33:442498e281b1 88 return 0;
kaku_jyoko 33:442498e281b1 89 }
kaku_jyoko 33:442498e281b1 90
kaku_jyoko 33:442498e281b1 91 int main(){
kaku_jyoko 33:442498e281b1 92 point p_person, p_bullet;
kaku_jyoko 33:442498e281b1 93 printf("hello\n");
kaku_jyoko 33:442498e281b1 94 Thread jump_th(jump_receive);
kaku_jyoko 33:442498e281b1 95 Thread bullet_th(bullet_receive);
kaku_jyoko 33:442498e281b1 96 lcd.setmode(XOR);
kaku_jyoko 33:442498e281b1 97 int gameOver = 0;
kaku_jyoko 33:442498e281b1 98 srand((int)(aIn * 100));
kaku_jyoko 33:442498e281b1 99 Converter converter();
kaku_jyoko 33:442498e281b1 100 // Bitmap picture;
kaku_jyoko 33:442498e281b1 101
kaku_jyoko 33:442498e281b1 102 while(true){
kaku_jyoko 33:442498e281b1 103 update_mtx.lock();
kaku_jyoko 33:442498e281b1 104 reset_white_board();
kaku_jyoko 33:442498e281b1 105 make_wall();
kaku_jyoko 33:442498e281b1 106 p_person = h.update(1);
kaku_jyoko 33:442498e281b1 107 if(b != NULL){
kaku_jyoko 33:442498e281b1 108 p_bullet = b->update();
kaku_jyoko 33:442498e281b1 109 }
kaku_jyoko 33:442498e281b1 110 //printf("bullet x: %d, y: %d \n", p_bullet.x,p_bullet.y);
kaku_jyoko 33:442498e281b1 111 // printf("person x: %d, y: %d \n", p_person.x,p_person.y);
kaku_jyoko 33:442498e281b1 112 corrision_judge(p_person, p_bullet);
kaku_jyoko 33:442498e281b1 113 Bitmap picture = converter.convert(white_board);
kaku_jyoko 33:442498e281b1 114 update_mtx.unlock();
kaku_jyoko 33:442498e281b1 115 lcd.cls();
kaku_jyoko 33:442498e281b1 116 lcd.print_bm(bitmPlayer,p_person.x,p_person.y);
kaku_jyoko 33:442498e281b1 117 if(b != NULL){
kaku_jyoko 33:442498e281b1 118 lcd.print_bm(bitmBullet_graphics, p_bullet.x, p_bullet.y);
kaku_jyoko 33:442498e281b1 119 }
kaku_jyoko 33:442498e281b1 120 lcd.copy_to_lcd();
kaku_jyoko 33:442498e281b1 121 wait(0.02);
kaku_jyoko 33:442498e281b1 122 lcd.cls();
kaku_jyoko 33:442498e281b1 123 lcd.print_bm(bitmPlayerB,p_person.x,p_person.y);
kaku_jyoko 33:442498e281b1 124 if(b != NULL){
kaku_jyoko 33:442498e281b1 125 lcd.print_bm(bitmBullet_graphics, p_bullet.x, p_bullet.y);
kaku_jyoko 33:442498e281b1 126 }
kaku_jyoko 33:442498e281b1 127 lcd.copy_to_lcd();
kaku_jyoko 33:442498e281b1 128 wait(0.02);
kaku_jyoko 33:442498e281b1 129 }
kaku_jyoko 33:442498e281b1 130 }