miércoles, 5 de mayo de 2021

Code to create (database) SQ-Lite in android

 Code to create (database) SQ-Lite in android

package cu.sqlite.editor; import android.app.*; import android.os.*; import android.content.*; import android.widget.*; import android.view.*; import android.graphics.*; import android.widget.RelativeLayout.*; import android.text.*; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(0xff0096f3)); _interfaz(); _iniciarEventos(); } //Widgets private LinearLayout main,ll1,ll2,ll3; private EditText id,nombre,apellidos,edad; private Button ver,agregar,actualizar,eliminar; private LinearLayout.LayoutParams params; public void _interfaz(){ main = new LinearLayout(this); ll1 = new LinearLayout(this); ll2 = new LinearLayout(this); ll3 = new LinearLayout(this); nombre = new EditText(this); id = new EditText(this); apellidos = new EditText(this); edad = new EditText(this); ver = new Button(this); agregar = new Button(this); actualizar = new Button(this); eliminar = new Button(this); params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); params.weight=1; id.setSingleLine(true); nombre.setSingleLine(true); apellidos.setSingleLine(true); edad.setSingleLine(true); id.setInputType(InputType.TYPE_CLASS_NUMBER); edad.setInputType(InputType.TYPE_CLASS_NUMBER); ver.setLayoutParams(params); agregar.setLayoutParams(params); actualizar.setLayoutParams(params); eliminar.setLayoutParams(params); id.setLayoutParams(params); edad.setLayoutParams(params); nombre.setHint("Nombre"); apellidos.setHint("Apellidos"); edad.setHint("Edad"); id.setHint("ID"); eliminar.setText("Eliminar"); main.setBackgroundColor(Color.WHITE); main.setOrientation(LinearLayout.VERTICAL); ver.setText("Ver"); agregar.setText("Agregar"); actualizar.setText("Actualizar"); setContentView(main); main.addView(nombre); main.addView(apellidos); main.addView(ll1); ll1.addView(edad); ll1.addView(id); main.addView(ll2); ll2.addView(agregar); ll2.addView(actualizar); main.addView(ll3); ll3.addView(ver); ll3.addView(eliminar); } //Eventos DatabaseHelper myDb; public void _iniciarEventos(){ myDb = new DatabaseHelper(this); ver.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ android.database.Cursor res = myDb.getAllData(); if(res.getCount() == 0) { _Responder("Alerta","no hay dados"); return; } StringBuffer buffer = new StringBuffer(); while (res.moveToNext()) { buffer.append("Id :"+ res.getString(0)+"\n"); buffer.append("nombre :"+ res.getString(1)+"\n"); buffer.append("Apellidos :"+ res.getString(2)+"\n"); buffer.append("edad :"+ res.getString(3)+"\n\n"); } _Responder("Data",buffer.toString()); } }); agregar.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ if(nombre.getText().toString().equals("")){ nombre.setError("Tienes que poner tu nombre aquí"); return; } if(apellidos.getText().toString().equals("")){ apellidos.setError("Tienes que poner tus apellidos aquí"); return; } if(edad.getText().toString().equals("")){ edad.setError("Tienes que poner tu edad aquí"); return; } boolean insert = myDb.insertData(nombre.getText().toString(),apellidos.getText().toString(),edad.getText().toString()); if(insert){ limpiar(); mensaje("Exito"); }else{ mensaje("Error al agregar datos");} } }); actualizar.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ if(id.getText().toString().equals("")){ id.setError("Indique el id a actualizar"); return; } boolean Actualizar = myDb.updateData(id.getText().toString(),nombre.getText().toString(),apellidos.getText().toString(),edad.getText().toString()); if(Actualizar){ limpiar(); mensaje("Datos Actualizados"); }else{mensaje("Error al actualizar");} } }); eliminar.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ if(id.getText().toString().equals("")){ id.setError("Indique el id a ser eliminado"); return; } Integer borrar = myDb.deleteData(id.getText().toString()); if(borrar>0){ mensaje("Datos Eliminados"); limpiar(); }else{ mensaje("no se a eliminado nada");} } }); } public void mensaje(String mns){ Toast.makeText(getApplicationContext(),mns,Toast.LENGTH_LONG).show(); } public void limpiar(){ nombre.setText(null); apellidos.setText(null); edad.setText(null); id.setText(null); } public void _Responder(String title,String Message){ AlertDialog.Builder builder =new AlertDialog.Builder(this); builder.setCancelable(true); builder.setTitle(title); builder.setMessage(Message); builder.show(); } public class DatabaseHelper extends android.database.sqlite.SQLiteOpenHelper { public static final String nombre_del_archibo_sqlite = "datos.db"; public static final String nombre_de_la_tabla = "datos"; public static final String columna1 = "ID"; public static final String columna2 = "nombre"; public static final String columna3 = "apellidos"; public static final String columna4 = "edad"; public DatabaseHelper(Context context) { super(context, nombre_del_archibo_sqlite, null, 1); } @Override public void onCreate(android.database.sqlite.SQLiteDatabase db) { db.execSQL("create table " + nombre_de_la_tabla +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,nombre TEXT,apellidos TEXT,edad INTEGER)"); } @Override public void onUpgrade(android.database.sqlite.SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS "+nombre_de_la_tabla); onCreate(db); } public boolean insertData(String nombre,String apellidos,String edad) { android.database.sqlite.SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(columna2,nombre); contentValues.put(columna3,apellidos); contentValues.put(columna4,edad); long result = db.insert(nombre_de_la_tabla,null ,contentValues); if(result == -1) return false; else return true; } public android.database.Cursor getAllData() { android.database.sqlite.SQLiteDatabase db = this.getWritableDatabase(); android.database.Cursor res = db.rawQuery("select * from "+nombre_de_la_tabla,null); return res; } public boolean updateData(String id,String nombre,String apellidos,String edad) { android.database.sqlite.SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(columna1,id); contentValues.put(columna2,nombre); contentValues.put(columna3,apellidos); contentValues.put(columna4,edad); db.update(nombre_de_la_tabla, contentValues, "ID = ?",new String[] { id }); return true; } public Integer deleteData (String id) { android.database.sqlite.SQLiteDatabase db = this.getWritableDatabase(); return db.delete(nombre_de_la_tabla, "ID = ?",new String[] {id}); } } }

Mortal Kombat comes to the movies again: fatality or flawless victory

 Mortal Kombat comes to the movies again: fatality or flawless victory


Los videojuegos no ha tenido mucha suerte con el cine. Ya sea por las exigencias del público gamer, la diferencia entre los lenguajes o la manía de Hollywood de cambiar en sus adaptaciones mucho del material original, las cintas basadas en este tipo de creaciones no tienden a ser grandes obras maestras.

Mortal Kombat tampoco es esa película, pero no quiere decir que sea un desastre. Teniendo en cuenta las adaptaciones anteriores es más que competente.

En la parrilla de personajes contamos con varios clásicos como Sub-Zero, Scorpio, Reptile, Sonya Blade y Jax, aunque muchos otros se quedaron fuera de cámara y tendremos que conformarnos con menciones o referencias a su existencia.

No falta el guiño cómplice a los videojuegos, pero los mejores son los sutiles, los que tienen que ver con locaciones o elementos icónicos de la saga. No sucede igual con los personajes que dicen de la nada Flawless Victory después de una pelea, en la que no sucede tanto como pensaríamos.

La historia no es el punto fuerte de la cinta, pero logra ser al menos competente. Sin hacer muchos spoilers presentan a Cole, un luchador caído en desgracia que se verá involucrado en la lucha por la dominación que se realiza a través del Mortal Kombat. Aunque se dejan muchos cabos sueltos, siendo el principal el por qué de la desgracia de Cole, hay algunos otros personajes que hacen cosas ‘‘porque si’’, sin ninguna confirmación o seguridad, solamente por la fuerza y la magia del cine.

Hay ciertos arcos que no termina de cerrar o despegar, incluso acciones que no tienen ningún sentido para los personajes. Pero no es que el videojuego tuviera una historia tampoco sobresaliente.

La acción por otro lado si está bien trabajada con peleas bien coreografiadas y que se disfrutan Mientras que los tan esperados fatality que llegan son efectivos, después de tanta sangre derramada en el videojuego en pantalla son bastante normalitos, pero es de admirar que los incluyeran a pesar de que esto limitaría su alcance en audiencia.

En resumen, Mortal Kombat no es la adaptación definitiva del videojuego al cine. No aparecen todos los personajes que nos gustaría, aunque eso sería difícil. Tampoco se les da mayor profundidad a los que sí aparecen quedándose como seres planos y unidimensionales. No hay un villano que atrape o un héroe que destaque por la superación de errores pasados. Aunque si te gusta la saga de videojuegos, te gusta la acción, ver a la gente dándose palos, y tienes una hora y cincuenta minutos de tiempo que matar no está mal darle una oportunidad.

Code to create (database) SQ-Lite in android

 Code to create (database) SQ-Lite in android package cu.sqlite.editor; import android.app.*; import android.os.*; import android.content.*...