B4A en español - Juan Antonio Villalpando
(BASIC4Android)
-- Tutorial de B4A --
Volver al índice del tutorial
____________________________
84.- Fase lunar.
La Luna completa una fase cada 29 días, concretamente cada 29,5305882 días. Por eso los meses se aproximan a esta cantidad de días, unos 30 días.
El año tiene 365,25 días. Por eso cada 4 años se agrega un día al calendario, para corregir ese 0,25.
La Luna gira con la Tierra, por eso siempre vemos la misma cara de la Luna, siempre mira a la Tierra con la misma cara.
Vamos a realizar un programa en donde introduzcamos un día, mes y año, al pulsar un botón nos indicará la fase lunar correspondiente a ese días.
Además al arrancar el programa nos indicará la fase lunar actual.
El programa está realizado adaptado los códigos encontrados en...
http://www.voidware.com/moon_phase.htm
Los dibujos de las fases lunares y la comprobación del funcionamiento lo he consultado en esta web...
http://www.calendario-365.es/luna/calendario-lunar.html
- Los resultados son aproximados.
Designer
|
|
- Vamos al Designer y creamos un "layout" como muestro en la imagen de la izquierda.
- Ponemos:
Un ImageView
Tres EditText
Un Button.
- Bajamos este archivo de los dibujos de las fases lunares y copiamos los dibujos de las fases en la carpeta Files de nuestro proyecto.
luna.zip
|
Código
|
Sub Process_Globals
' Juan Antonio Villalpando
' juana1991@yahoo.com
' Noviembre 2013
End Sub
Sub Globals
Dim ImageView1 As ImageView
Dim Label1 As Label
Dim Edittext1, Edittext2, Edittext3 As EditText
Dim annus, mes, dia As Int
Dim annus_real, mes_real, tiempo_total As Double
Dim bb As Int
Dim archivo As String
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("layout")
annus = DateTime.GetYear(DateTime.Now)
mes = DateTime.GetMonth(DateTime.Now)
dia = DateTime.GetDayOfMonth(DateTime.Now)
Edittext1.Text = dia
Edittext2.Text = mes
Edittext3.Text = annus
FaseLunar
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub FaseLunar As String
If (mes < 3) Then
annus = annus - 1
mes = mes + 12
End If
mes = mes + 1
annus_real = 365.25 * annus ' El año tiene 365,25 días. Estos son los días que han pasado desde el año 1.
mes_real = 30.6 * mes
tiempo_total = annus_real + mes_real + dia - 694039.09 ' Desde 1900
tiempo_total = tiempo_total / 29.5305882 ' Divide por el ciclo lunar
bb = tiempo_total ' Parte decimal del tiempo total
tiempo_total = tiempo_total - bb ' Parte entera del tiempo total
bb = tiempo_total * 29 + 0.5
archivo = bb & ".jpg"
ImageView1.Bitmap=LoadBitmap(File.DirAssets, archivo)
End Sub
Sub Button1_Click
dia = Edittext1.Text
mes = Edittext2.Text
annus = Edittext3.text
FaseLunar
End Sub
|
__________________
- Comentario.
- Cuando ejecutamos la aplicación nos muestra la fase lunar del día actual.
- Si ponemos en los casilleros un día, un mes y un año y pulsamos el Botón, nos mostrará la fase lunar de ese día.
________________________________
|