Skip to content
Snippets Groups Projects
Commit 8b8e4596 authored by remi.greub's avatar remi.greub
Browse files

masterball fonctionnelle avec quelques corrections a faire encore

parent ef6b0a76
No related branches found
No related tags found
No related merge requests found
......@@ -85,6 +85,8 @@ void slave_info_rx(void *data, int len)
// code executed when the slave sends an ethernet frame
}
void Algo_main_ball(void *params);
int main(void)
{
accel_t ball_accel;
......@@ -111,9 +113,71 @@ int main(void)
accel_read(&ball_accel); // example: reading of the accelerometer
// creating tasks...
// xTaskCreate(...);
// vTaskStartScheduler(); // launch scheduler
xTaskCreate(Algo_main_ball, (signed portCHAR *)"Masterball",
configMINIMAL_STACK_SIZE, &ball_param_th[0], tskIDLE_PRIORITY+1,
NULL);
vTaskStartScheduler(); // launch scheduler
LPC_TIM0->TCR = 1;
while(1);
return 1;
}
void Algo_main_ball(void *params){
ball_param_th_t *ball = (ball_param_th_t *)params;
accel_t ball_acc;
int un_ou_moins_un_x = 1, un_ou_moins_un_y = 1;
while(1){
lcd_filled_circle(ball->ball.pos.x, ball->ball.pos.y, ball->ball.radius, LCD_BLACK);
int CollisionState = test_collision(&ball->ball);
if(CollisionState != NO_COLLISION){
//ralentissement de 10% de la vitesse de la balle
ball->ball.speed.x = ball->ball.speed.x - (ball->ball.speed.x/10);
ball->ball.speed.y = ball->ball.speed.y - (ball->ball.speed.y/10);
if(CollisionState & TOUCH_LEFT){
un_ou_moins_un_x = -1;
ball->ball.pos.x += ball->ball.radius/2;
}
if(CollisionState & TOUCH_UP){
un_ou_moins_un_y = -1;
ball->ball.pos.y += ball->ball.radius/2;
}
if(CollisionState & TOUCH_RIGHT){
un_ou_moins_un_x = -1;
ball->ball.pos.x -= ball->ball.radius/2;
}
if(CollisionState & TOUCH_DOWN){
un_ou_moins_un_y = -1;
ball->ball.pos.y -= ball->ball.radius/2;
}
}else{
//lcd_filled_circle(ball->ball.pos.x, ball->ball.pos.y, ball->ball.radius, LCD_BLACK);
accel_read(&ball_acc);
ball->ball.speed.x = ((ball_acc.accel_x*0.1)+ball->ball.speed.x)*(un_ou_moins_un_x);
ball->ball.speed.y = ((ball_acc.accel_y*0.1)+ball->ball.speed.y)*(un_ou_moins_un_y);
ball->ball.pos.x = ball->ball.pos.x + ball->ball.speed.x*(un_ou_moins_un_x);
ball->ball.pos.y = ball->ball.pos.y + ball->ball.speed.y*(un_ou_moins_un_y);
un_ou_moins_un_y = 1;
un_ou_moins_un_x = 1;
}
//}
if(ball->ball.pos.x <= ball->ball.radius){
ball->ball.pos.x = ball->ball.radius+1;
}
if(ball->ball.pos.y <= ball->ball.radius){
ball->ball.pos.y = ball->ball.radius+1;
}
if(ball->ball.pos.x == LCD_MAX_WIDTH-ball->ball.radius){
ball->ball.pos.x -= ball->ball.radius;
}
if(ball->ball.pos.y == LCD_MAX_HEIGHT-ball->ball.radius){
ball->ball.pos.y -= ball->ball.radius;
}
lcd_filled_circle(ball->ball.pos.x, ball->ball.pos.y, ball->ball.radius, ball->ball.color);
vTaskDelay((portTickType)20/portTICK_RATE_MS);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment