![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
test avoid bulled game
Dependencies: C12832_lcd LCD_fonts mbed mbed-rtos
main.cpp.orig@33:442498e281b1, 2016-12-12 (annotated)
- Committer:
- kaku_jyoko
- Date:
- Mon Dec 12 11:50:02 2016 +0000
- Revision:
- 33:442498e281b1
change
Who changed what in which revision?
User | Revision | Line number | New 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 | } |