示例#1
0
void set_UserTank(int* angle, int* velocity, psController ps, tank* user, tank* enemy, terrain tr)
{
	char done_Charging = 0;
	char hasxBeenPressed = 0;

	//Draw background of power bar
	alt_up_pixel_buffer_dma_draw_box(pixel_buffer, x0_chargeBar, y0_chargeBar, (MAX_VELOCITY) + x0_chargeBar, chargeBar_Width +  y0_chargeBar, 0x7BEF, 0);
	alt_up_pixel_buffer_dma_draw_box(pixel_buffer, x0_chargeBar, y0_chargeBar, (MAX_VELOCITY) + x0_chargeBar, chargeBar_Width +  y0_chargeBar, 0x7BEF, 1);
	//loop continues until x is pressed and released, a collision occurs, or velocity maxed out
	while(done_Charging == 0)
	{
		update_Controller_Keys(&ps);
		set_Angle( angle, ps);
		done_Charging = set_Velocity( velocity, ps);

		if(ps.b.x == 1)
			hasxBeenPressed = 1;

		//X has been released
		if(ps.b.x == 0 && hasxBeenPressed == 1)
			done_Charging = 1;

		if(ps.b.right == 1)
		{
			moveTank(user, 2, 1); //go right
			drawTank(user, tr);
			drawTank(enemy, tr);
			updateVGA();
		}
		else if(ps.b.left)
		{
			moveTank(user, 1, 1); // go left
			drawTank(user, tr);
			drawTank(enemy, tr);
			updateVGA();
		}
		display_Input(*angle, *velocity);
		delay();
	}


}
示例#2
0
int SingleJoint::set_PID(float pos, float vel) {
	return set_Velocity(pid_.run(current_Angle_.angle.value(), pos + offset_, vel));
}