test avoid bulled game
Dependencies: C12832_lcd LCD_fonts mbed mbed-rtos
main.cpp
- Committer:
- kaku_jyoko
- Date:
- 2016-12-13
- Revision:
- 39:e8d6dd3c75c7
- Parent:
- 38:63b99151e218
- Child:
- 40:ec5c1b305b9a
File content as of revision 39:e8d6dd3c75c7:
#include "mbed.h" #include "C12832_lcd.h" #include "Arial_9.h" #include "Small_7.h" #include "graphics.h" #include "models.h" #include "rtos.h" #include "point.h" #include "stdlib.h" #include "convert.h" C12832_LCD lcd; // down: p12, left: p13, center: p14, up: p15, right: p16 InterruptIn button(p14); AnalogIn aIn(p20); DigitalOut led1(LED1); Mutex jump_mtx; Mutex update_mtx; int jump_flag = 0; Person h; Stage stage; Serial pc(USBTX, USBRX); // tx, rx Bullet* b = NULL; Timer t; int white_board[LCD_Y][LCD_X]; int* wall_height; void reset_white_board() { for(int i = 0; i < LCD_Y; i++){ for (int j = 0; j < LCD_X; j++){ white_board[i][j] = 0; } } } void make_wall(){ wall_height = stage.getStage(); for(int i = 0; i < LCD_Y; i++){ for(int j = 0; j < LCD_X ; j++){ if(wall_height[j] > (LCD_Y - 1 - i)){ white_board[i][j] = 1; } } } //print wall int // for(int i = 0; i < LCD_X; i++){ // printf("line %d height: %d ",i, wall_height[i]); // for(int j = 0; j < LCD_Y; j++){ // printf("%d ",white_board[j][i]); // } // printf("\n"); // } // printf("\n"); } void a(){ h.jump(); } void jump_receive(void const *argument){ while(true){ jump_mtx.lock(); button.rise(&a); jump_mtx.unlock(); //Thread::wait(0.1); } } void bullet_receive(void const *argument){ point start; start.x = 127; start.y = 27; char c; while(true){ t.start(); c = pc.getc(); if(c == 'a' && t.read() > 5.0){ b = NULL; b = &Bullet(start, 2); t.reset(); } } } int line_judge(int a, int b, int c, int d){ //if corrision, return 1 if(b < c){ return 0; }else if(d < a){ return 0; }else{ return 1; } } int corrision_judge(point p_person, point p_bullet){ //printf("bullet x: %d, y: %d \n", p_bullet.x,p_bullet.y); // printf("person x: %d, y: %d \n", p_person.x,p_person.y); return (line_judge(p_person.x, p_person.x + PERSON_SIZE, p_bullet.x, p_bullet.x + BULLET_SIZE) && line_judge(p_person.y, p_person.y + PERSON_SIZE, p_bullet.y - 1, p_bullet.x - 4)); } int main(){ point p_person, p_bullet; printf("hello\n"); Thread jump_th(jump_receive); Thread bullet_th(bullet_receive); lcd.setmode(XOR); int gameOver = 0; srand((int)(aIn * 100)); Converter converter; Bitmap picture; while(true){ update_mtx.lock(); reset_white_board(); make_wall(); p_person = h.update(wall_height[3]); if(b != NULL){ p_bullet = b->update(); } //printf("bullet x: %d, y: %d \n", p_bullet.x,p_bullet.y); //printf("person x: %d, y: %d \n", p_person.x,p_person.y); corrision_judge(p_person, p_bullet); picture = converter.convert(white_board); update_mtx.unlock(); lcd.cls(); lcd.print_bm(bitmPlayer,p_person.x,p_person.y); lcd.print_bm(picture,0,0); if(b != NULL){ lcd.print_bm(bitmBullet_graphics, p_bullet.x, p_bullet.y); } lcd.copy_to_lcd(); wait(0.02); lcd.cls(); lcd.print_bm(bitmPlayerB,p_person.x,p_person.y); lcd.print_bm(picture,0,0); if(b != NULL){ lcd.print_bm(bitmBullet_graphics, p_bullet.x, p_bullet.y); } lcd.copy_to_lcd(); wait(0.02); } }