domingo, 29 de noviembre de 2015
Tipos Generios en Java
jueves, 26 de noviembre de 2015
Ejemplo de GUI "ID de usuario y Contraseña"
//simplemente crean la siguiente interfaz en el editor de NetBeans, registran los usuario y contraseña
//puede ser en una tabla de usuarios y le dan la acción para que al aceptar te muestre la ventana
//jueguen con el código es de gran importancia para un aplicativo :V
Una introducción a la programación de videojuegos
En esta entrada hablare sobre la información que vengo recopilando desde ya hace un tiempo sobre este complejo tema, como los lenguajes predominantes en la programación de juegos y por que algunos no lo son, también mencionare algunos de los motores gráficos mas recomendables, señalando algunas de las funcionalidades que todo novato debería conocer.
Para compensar empezaré desde lo mas superfluo y asta los un poco mas específicos hasta este punto ya deberíamos tener claro que necesitamos un lenguaje de programación..
Bueno para compensar claros y concisos tengo que decir que lenguaje por excelencia usado en la historia del desarrollo de los videojuegos profesionales ha sido C y desde la última es C++, debido a las ventajas que este posee, ya que hace uso del paradigma de la programación orientada a objetos, aunque también podemos usar características de la programación procedimental de C, además de esto hay que tener en cuenta c++ es un lenguaje de programación de bajo nivel por lo tanto llega al hardware mucho antes que un lenguaje de alto nivel como Java por lo que c++ termina dando resultados mucho más fluidos.
Hoy en día disponemos de un conjunto de bibliotecas que nos facilitan el uso de estructuras de datos en nuestros programas, estamos hablando de la biblioteca STL (Standard Template Library), la cual ya es un standard de C++, y lo podemos encontrar en todos los compiladores actuales.
Lo siguiente que necesita un desarrollador especialmente si va en solitario es un buen "Game engine" o "Motor de juegos" que nos facilitaran una gran cantidad de rutinas básicas y avanzadas que serán comunes y repetitivas en cualquier proyecto que vayamos a realizar, como por ejemplo al momento de cargar imágenes.
Hoy en día existen una gran variedad de motores completos y motores gráficos como OGRE 3D que es un motor gráfico gratuito con "open-source" para que el usuario pueda crear aplicaciones desde el lenguaje C++. OGRE 3D su propósito principal es proveer una solución general para el renderizado de gráficos. A pesar que incorpora otras características (clases de vector y matrices, manejo de memoria, etc.), son consideradas suplementarias. No es una solución todo-en-uno desde el punto de vista del desarrollo de juegos o simulación ya que no provee soporte para físicas y audio pero ante esto se puede acotar que OGRE como un motor gráfico otorga a los desarrolladores la libertad de usar librerías de física, entrada, audio y otras que deseen.
http://m.youtube.com/#/watch?v=obWkjRIVvBQ
No cuenta con interfase gráfica pero puede ser fácilmente integrado a otros compiladores de c++ como CodeBlocks, Dev c++ inclusive al visual c++ en el visual studio.
http://m.youtube.com/watch?v=xtSW4tHgH48
Además de este motor de código libre existe una gama inmensa de motores de juegos que nos facilitan mucho la tarea, también se encuentran los muy complejos ahí libres como hay de pago pero pero muchos de estos nos veremos en posteriores entradas.
sábado, 21 de noviembre de 2015
miércoles, 18 de noviembre de 2015
PRINCIPIO DEL UML
El lenguaje UML comenzó a gestarse en octubre de 1994, cuando Rumbaugh se unió a la compañía Rational fundada por Booch (dos reputados investigadores en el área de metodología del software).
El objetivo de ambos era unificar dos métodos que habían desarrollado: el método Booch y el OMT (Object Modelling Tool ). El primer borrador apareció en octubre de 1995. En esa misma época otro reputado investigador, Jacobson, se unió a Rational y se incluyeron ideas suyas. Estas tres personas son conocidas como los “tres amigos”. Además, este lenguaje se abrió a la colaboración de otras empresas para que aportaran sus ideas. Todas estas colaboraciones condujeron a la definición de la primera versión de UML.
GUI CON OBJETOS EN UNA TABLA
//para ello se crean diferentes clases y se le llama en un formulario
public class Persona {
private String codigo;
private String nombre;
private String apellidos;
private int edad;
public Persona(String codigo, String nombre, String apellidos, int edad) {
this.codigo = codigo;
this.nombre = nombre;
this.apellidos = apellidos;
this.edad = edad;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
OPERACIONES ARIMETICAS CONGUI
MULTIPLICACION, DIVICION Y CERRAR
//SERA DE SU GRAN ENTENDIMIENTO COMPRENDER LA LOGICA DEL CODIGO
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
*
* @author CARLOS-D
*/
public class suma extends JFrame{
Container panel;
JTextField jtfNum1,jtfNum2,jtfResultado;
JMenuItem jmiSuma,jmiResta,jmiMultiplicacion,jmiDivicion,jmiCerrar;
public suma(){
super("Menùs");
JMenuBar jmb=new JMenuBar();
setJMenuBar(jmb);
JMenu operationMenu=new JMenu("Operacion");
operationMenu.setMnemonic('o');
jmb.add(operationMenu);
operationMenu.add(jmiSuma=new JMenuItem("Suma",'S'));
operationMenu.add(jmiResta=new JMenuItem("Resta",'R'));
operationMenu.add(jmiMultiplicacion=new JMenuItem("Multiplicacion",'M'));
operationMenu.add(jmiDivicion=new JMenuItem("Divicion",'D'));
JMenu exitMenu=new JMenu("Salir");
jmb.add(exitMenu);
exitMenu.add(jmiCerrar=new JMenuItem("Cerrar",'C'));
JPanel p1=new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel("Numero 1"));
p1.add(jtfNum1=new JTextField(3));
p1.add(new JLabel("Numero 2"));
p1.add(jtfNum2=new JTextField(3));
p1.add(new JLabel("Resultado"));
p1.add(jtfResultado=new JTextField(4));
jtfResultado.setEditable(false);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p1, BorderLayout.CENTER);
//registrando oyente
jmiSuma.addActionListener(new OyenteMenu());
jmiResta.addActionListener(new OyenteMenu());
jmiMultiplicacion.addActionListener(new OyenteMenu());
jmiDivicion.addActionListener(new OyenteMenu());
jmiCerrar.addActionListener(new OyenteMenu());
}
private void calcular(char operador){
int num1=(Integer.parseInt(jtfNum1.getText().trim()));
int num2=(Integer.parseInt(jtfNum2.getText().trim()));
int resultado=0;
switch(operador){
case '+': resultado=num1+num2;break;
case '-': resultado=num1-num2;break;
case '*': resultado=num1*num2;break;
case '/': resultado=num1/num2;break;
}
jtfResultado.setText(String.valueOf(resultado));
}
class OyenteMenu implements ActionListener{
public void actionPerformed(ActionEvent e) {
String actionCommand=e.getActionCommand();
if (e.getSource()instanceof JMenuItem) {
if ("Suma".equals(actionCommand)) calcular('+');
else if("Resta".equals(actionCommand)) calcular('-');
else if("Multiplica".equals(actionCommand)) calcular('*');
else if("Divide".equals(actionCommand)) calcular('/');
else if("Cerrar".equals(actionCommand)) System.exit(0);
}
}
}
public static void main(String[] args) {
suma ventana=new suma();
ventana.setDefaultCloseOperation(EXIT_ON_CLOSE);
ventana.pack();
ventana.setVisible(true);
}
}
lunes, 16 de noviembre de 2015
Ejemplo de Manejo de Archivos de Texto
//LEE EL ARCHIVO Y ESCRIBE EN EL
//PARA COMPROBARLO VEAN EL ARCHIVO CREADO EN EL DISCO LOCAL D:/
import java.io.*;
/**
*
* @author CARLOS-D
*/
public class ej1_Archivos {
public File crearArchivo(String ruta){
File file=null;
try{
file=new File(ruta);
if (!file.exists()) {
file.createNewFile();
}else{
System.out.println("el archivo ya fue creado");
}
}catch(Exception e){
System.out.println(e.getMessage());
}
return file;
}
public BufferedWriter escribirArchivo(String ruta){
BufferedWriter bw=null;
try{
FileWriter fw=new FileWriter(crearArchivo(ruta));
bw=new BufferedWriter(fw);
}catch(Exception e){
System.out.println(e.getMessage());
}
return bw;
}
public BufferedReader leerArchivo(String ruta){
BufferedReader br=null;
try{
FileReader fr=new FileReader(crearArchivo(ruta));
br=new BufferedReader(fr);
}catch(Exception e){
System.out.println(e.getMessage());
}
return br;
}
public static void main(String[] args) {
BufferedWriter escribir;
BufferedReader leer;
ej1_Archivos archivo=new ej1_Archivos();
escribir=archivo.escribirArchivo("D:/miArchivo.txt");
try{
escribir.write("este es mi archivo");
escribir.close();
}catch(Exception e){
System.out.println("");
}
leer =archivo.leerArchivo("D:/miArchivo.txt");
String linea=null;
try{
while((linea=leer.readLine())!=null){
System.out.println(linea);
}
leer.close();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}