Você está na página 1de 7

7.

Movimiento Rectilinio
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MoviRectilineo extends Activity {
boolean continuar=true;
float velocidad=0.5f;
int dt=10;
int tiempo=0;
Thread hilo=null;
DinamicaView dinamica;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dinamica=new DinamicaView(this);
setContentView(dinamica);
hilo=new Thread(dinamica);
hilo.start();
}
public void onPause(){
super.onPause();
continuar=false;
}
public void onResume() {
super.onResume();
continuar = true;
if (hilo == null) {
hilo = new Thread(dinamica);
hilo.start();
}
}
class DinamicaView extends View implements Runnable{
int x,y,ymax;
Paint paintFondo,paintParticula,paint;
public DinamicaView(Context context){
super(context);
paintFondo=new Paint();
paintParticula=new Paint();
paint=new Paint();
paintFondo.setColor(Color.WHITE);
paintParticula.setColor(Color.RED);
paint.setColor(Color.BLACK);
paint.setTextSize(30);
}
public void run(){
while(continuar){
tiempo=tiempo+dt;

y=y+(int)(velocidad*dt);
if (y>ymax)velocidad=-velocidad;
if (y<0)velocidad=-velocidad;
postInvalidate();
try {
Thread.sleep(dt);
}
catch (InterruptedException e){;
}
}
}
protected void onSizeChanged(
int w,int h, int oldw,int oldh){
x=w/2;
y=0;
ymax=h;
}
public void onDraw(Canvas canvas){
canvas.drawPaint(paintFondo);
canvas.drawCircle(x,y,30,paintParticula);
canvas.drawText("y="+y,50,50,paint);
canvas.drawText("t="+tiempo,50,90,paint);
}
}
}

Movimiento Acelerado
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MoviAcelerado extends Activity {
boolean continuar = true;
float velocidad = 0.5f;
float aceleracion = 0.01f;
int dt = 1;
int tiempo = 0;
Thread hilo = null;
DinamicaView dinamica;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dinamica = new DinamicaView(this);
setContentView(dinamica);
hilo = new Thread(dinamica);
hilo.start();
}
public void onPause() {
super.onPause();
continuar = false;
}
public void onResume() {
super.onResume();
continuar = true;
if (hilo == null) {
hilo = new Thread(dinamica);
hilo.start();
}
}
class DinamicaView extends View implements Runnable {
int x, y, ymax;
Paint paintFondo, paintParticula, paint;
public DinamicaView(Context context) {
super(context);
paintFondo = new Paint();
paintParticula = new Paint();
paint = new Paint();
paintFondo.setColor(Color.WHITE);
paintParticula.setColor(Color.RED);
paint.setColor(Color.BLACK);
paint.setTextSize(30);
}
public void run() {
while (continuar) {

cambiaPosicion();
postInvalidate();
try {
Thread.sleep(dt);
} catch (InterruptedException e) {
;
}
}
}
public void cambiaPosicion() {
tiempo = tiempo + dt;
y = y + (int) (velocidad * dt);
velocidad = velocidad + aceleracion * dt;
if (y > ymax) velocidad = -Math.abs(velocidad);
if (y < 0) velocidad = Math.abs(velocidad);
}
protected void onSizeChanged(
int w, int h, int oldw, int oldh) {
x = w / 2;
y = 0;
ymax = h;
}
public void onDraw(Canvas canvas) {
canvas.drawPaint(paintFondo);
canvas.drawCircle(x + 100, y, 30, paintParticula);
canvas.drawText("y=" + y, 50, 50, paint);
canvas.drawText("t=" + tiempo, 50, 90, paint);
canvas.drawText("v=" + velocidad, 50, 130, paint);
}
}
}

Conservacin de Energa
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {
boolean continuar = true;
float velocidad = 0.5f;
float aceleracion = 0.01f;
float energia;
int dt = 1;
int tiempo = 0;
Thread hilo = null;
DinamicaView dinamica;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dinamica = new DinamicaView(this);
setContentView(dinamica);
hilo = new Thread(dinamica);
hilo.start();
}
public void onPause() {
super.onPause();
continuar = false;
}
public void onResume() {
super.onResume();
continuar = true;
if (hilo == null) {
hilo = new Thread(dinamica);
hilo.start();
}
}
class DinamicaView extends View implements Runnable {
int x, y, ymax;
Paint paintFondo, paintParticula, paint;
public DinamicaView(Context context) {
super(context);
paintFondo = new Paint();
paintParticula = new Paint();
paint = new Paint();
paintFondo.setColor(Color.WHITE);
paintParticula.setColor(Color.RED);
paint.setColor(Color.BLACK);
paint.setTextSize(30);
}

public void run() {


while (continuar) {
cambiaPosicion();
postInvalidate();
try {
Thread.sleep(dt);
} catch (InterruptedException e) {
;
}
}
}
public void cambiaPosicion() {
tiempo = tiempo + dt;
velocidad = velocidad + aceleracion * dt;
float cinetica=velocidad*velocidad/2;
y=(int)((cinetica-energia)/aceleracion);
if (y > ymax) velocidad = -Math.abs(velocidad);
if (y < 0) velocidad = Math.abs(velocidad);
}
protected void onSizeChanged(
int w, int h, int oldw, int oldh) {
x = w / 2;
y = 0;
ymax = h;
energia=0.5f*velocidad*velocidad-aceleracion*y;
}
public void onDraw(Canvas canvas) {
canvas.drawPaint(paintFondo);
canvas.drawCircle(x + 100, y, 30, paintParticula);
canvas.drawText("y=" + y, 50, 50, paint);
canvas.drawText("t=" + tiempo, 50, 90, paint);
canvas.drawText("v=" + velocidad, 50, 130, paint);
}
}
}

Você também pode gostar