Páginas

NIMADRES

Convertir números decimales a binarios en C++

El sistema binario es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es el que se utiliza en las computadoras, debido a que trabajan internamente con dos niveles de voltaje, por lo cual su sistema de numeración natural es el sistema binario (encendido 1, apagado 0).

Un número binario  puede ser representado por cualquier secuencia de bits (dígitos binarios), que suelen representar cualquier mecanismo capaz de usar dos estados mutuamente excluyentes.


Esta vez se me ocurrió subir un programa muy parecido al de los Números Hexadecimales solo que ahora con números binarios. Mas de una persona ha intentado hacer un programa como este, en fin les dejo un ejemplo de como podrían hacer uno con funciones recursivas y ustedes lo pueden mejorar.




#include <iostream>
#include <cstring>
#include <sstream>

using namespace std;

void convertir(string &bin,stringstream &stream,int numero){
    int residuo;
    if(numero == 0 || numero == 1)
        stream << numero;
    else{
        residuo = numero%2;
        numero = numero/2;
        convertir(bin,stream,numero);
        stream << residuo;   
    }
    bin = stream.str();
}
string binario(string b){
    stringstream stream;
    string bin;
    int numero = atoi(b.c_str());
    convertir(bin,stream,numero);
    b = bin;
    return b;
}

int main(){
    string numero;
    cout << "Ingresa el numero decimal: ";
    getline(cin,numero);
    numero =  binario(numero);
    cout << "\nEl numero en binario es: " << numero;
    cin.get();
    return 0;   
}

Convertir números decimales a Hexadecimales

El sistema numérico hexadecimal o sistema hexadecimal (a veces abreviado como Hex), es un sistema de numeración que emplea 16 símbolos. Su uso actual está muy vinculado a la informática y ciencias de la computación, pues los computadores suelen utilizar el byte u octeto como unidad básica de memoria.
Según el teorema general de la numeración posicional, equivale al número en base 16 , dos dígitos hexadecimales corresponden exactamente a un byte.
En principio, dado que el sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan. El conjunto de símbolos sería, por tanto, el siguiente:


Bueno como hace mucho que ya no subo programas en C++ hoy se me ocurrió hacer uno que tal vez muchos de ustedes ya saben o tienen una idea de como se hace, pero para los que aun no saben como hacerlo pues aquí les tengo un ejemplo de como realizar un convertidor de números decimales a hexadecimales.

#include <iostream>
#include <cstring>
#include <sstream>
#include <cstdlib>

using namespace std;

void convertir(string &hex,stringstream &stream, int numero){
    int residuo;
    if(numero == 0 || numero == 1 || numero == 2 || numero == 3||
       numero == 4 || numero == 5 || numero == 6 || numero == 7||
       numero == 8 || numero == 9){
        stream << numero;
    }
    else{
        residuo = numero%16;
        numero = numero/16;
        convertir(hex,stream,numero);
        stream << residuo;
    }
    hex = stream.str();
}
string hexadecimal(string c){
     int i = 0;
     string hex = "";
     int numero;
     numero = atoi(c.c_str());//converir de String a Int
     stringstream stream;
     convertir(hex,stream,numero);
     c = hex;
     hex = "";
     do{
         if(c[i] =='1' && c[i+1] == '0'){
             i += 2;
             hex += 'A';
         }
         else if(c[i] == '1' && c[i+1] == '1'){
             i += 2;
             hex += 'B';
         }
         else if(c[i] == '1' && c[i+1] == '2'){
             i += 2;
             hex += 'C';
         }
         else if(c[i] == '1' && c[i+1] == '3'){
             i += 2;
             hex += 'D';
         }
         else if(c[i] == '1' && c[i+1] == '4'){
             i += 2;
             hex += 'E';
         }
         else if(c[i] == '1' && c[i+1] == '5'){
             i += 2;
             hex += 'F';
         }
         else
             switch(c[i++]){
                 case '0': hex += '0'; break;
                 case '1': hex += '1'; break;
                 case '2': hex += '2'; break;
                 case '3': hex += '3'; break;
                 case '4': hex += '4'; break;
                 case '5': hex += '5'; break;
                 case '6': hex += '6'; break;
                 case '7': hex += '7'; break;
                 case '8': hex += '8'; break;
                 case '9': hex += '9'; break;
             }
     }while(c[i] != '\0');
     return "0x" + hex; 
}
int main(){
    int i = 0;
    string decimal;
    int numero;
    cout << "Introduce el numero decimal: ";
    getline(cin,decimal);
    decimal = hexadecimal(decimal);
    cout << "El numero en Hexadecimal equivale a: " <<decimal;
    cin.get();
    return 0;
}
Este programa utiliza una función recursiva dentro de otra función en a cual se transforma primeramente todos los números naturales de base 10 en números base 16, después los números que sean mas de 9 y menos de 16 los transforma en letras y al final solo lo retorna para imprimir o guardar en otra variable.

Aqui les dejo una pagina donde lo hace automáticamente:
http://www.disfrutalasmatematicas.com/numeros/binario-decimal-hexadecimal-conversor.html

Juego del Ahorcado en Java

El ahorcado (también llamado colgado) es un juego de lápiz y papel, en el que el objetivo es adivinar una palabra o frase.
A estas Alturas quiero suponer que muchos ya saben como es que funciona este juego, muchas veces como ayuda suele darse el tema al cual pertenece la palabra, en este caso no sera así. 
Esta vez lo que hice fue un Ahorcado poco convencional referente al juego, en el cual la diferencia es que no se muestra el dibujo que va apareciendo por partes y al final se ahorca. Se me ocurrió la idea de simular el juego de Mortal Kombat haciendo que dos personajes muy conocidos se peleen entre si con imágenes gif.





Estas son Algunas de las imágenes que se pueden apreciar, también tiene la opción de agregar sonido pero eso es solo si el jugador lo desea, sino simplemente se puede jugar en silencio, ademas si se desea agregar varios sonidos como los golpes o fatalityes ya esta una función genérica en la cual la puedes mandar llamar cuando quieras indicando el nombre del archivo (incluir la ruta en caso de que el archivo de sonido no se encuentre en la misma carpeta), pues ya solo falta el código fuente que se puede compilar desde consola.

import java.awt.*;
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class Ahorcado extends JFrame implements ActionListener,KeyListener {
    private Toolkit kit = Toolkit.getDefaultToolkit();
    private int contador = 0;
    public Image imagenFondo = kit.getImage("Imagen.jpg");
    public JLabel label = new JLabel();
    public JLabel labelLlenado;
    public JLabel Dibujo = new JLabel(new ImageIcon(getClass().
            getResource("scorpions1.gif")));
    public JLabel Dibujo2 = new JLabel(new ImageIcon(getClass().
            getResource("Liu_kang.gif")));
    public JLabel logo = new JLabel(new ImageIcon(getClass().
            getResource("logo.gif")));
    public JLabel titulo = new JLabel();
    public int X = 100;
    public int Y = 300;
    public int largo = 350;
    public int ancho = 100;
    public JMenuBar barra = new JMenuBar();
    public JMenu menu2 = new JMenu("Archivo");
    public JMenu menu = new JMenu("Categorias");
    public JMenu menuIformacion = new JMenu("Ver");
    public JMenuItem item[] = new JMenuItem[6];
    public String palabrasPeleadores[] = {"scorpions", "subzero","kano","sonya",
                                          "cage","rayden","cyrax","sector",
                                          "ermac","nightwolf","jax","borrachio",
                                          "boraicho","reptile","kunglao",
                                          "kitana","smoke","jade","kabal",
                                          "stryker"};
    public String palabrasBoss[] = {"goro", "shaokahn","shangtsung","kintaro",
                                    "sheeva", "baraka","motaro","shinnok",
                                    "quanchi","blaze","mileena","sindel"};
    String pantalla2;
    static String palabra_ = null ;
    char []palabras_display;
    char []palabra_actual;
    int randon;
    char dato;
    int error = 0;
    panel inicio = new panel("inicio.jpg");
    panel p = new panel("mortal.jpg"); 

    public Ahorcado() {
        initComponents();
        setBounds(150, 50, 800, 640);
        setTitle("NIMADRES");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
        repaint();
        setIconImage(getIconImage());
    }
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(item[0])){
            Random rnd = new Random();
            palabra_=palabrasPeleadores[rnd.nextInt(palabrasPeleadores.length)];
            palabra_actual =  palabra_.toCharArray();
            palabras_display = new char[palabra_actual.length];
            for(int i = 0;i < palabras_display.length; i++){
                palabras_display[i] = '_';      
            }
            pantalla2 = String.valueOf(palabras_display);
            System.out.println(palabra_);
            labelLlenado.setText(pantalla2);
            menu.setEnabled(false);
        }
        if(e.getSource().equals(item[1])){
            Random rnd = new Random();
            palabra_ = palabrasBoss[rnd.nextInt(palabrasBoss.length)];
            palabra_actual =  palabra_.toCharArray();
            palabras_display = new char[palabra_actual.length];
            for(int i = 0;i < palabras_display.length; i++){
                palabras_display[i] = '_';      
            }
            pantalla2 = String.valueOf(palabras_display);
            System.out.println(palabra_);
            labelLlenado.setText(pantalla2);
            menu.setEnabled(false);
        }
        if(e.getSource().equals(item[2])){
            add(p);
            inicio.setVisible(false);
            labelLlenado.setText("");
            error = 0;
            menu.setEnabled(true);
            titulo.setIcon(null);
            titulo.setText("");
            Dibujo.setIcon(null);
            Dibujo2.setIcon(null);
        }
        if(e.getSource().equals(item[3])){
            if(contador == 0)
                playSound("audio.wav");
            contador++;
        }
        if(e.getSource().equals(item[4])){
                try {
                if (Desktop.isDesktopSupported()) {
                    Desktop desktop = Desktop.getDesktop();
                    if (desktop.isSupported(Desktop.Action.BROWSE)) {
                        desktop.browse(new 
                           URI("http://programacionparacoccidio.blogspot.mx"));
                    }
                }
            } catch (URISyntaxException uRISyntaxException) {
            } catch (IOException iOException) {
            }  
        }
        if(e.getSource().equals(item[5])){
            System.exit(0);
        }
        repaint();
    }
    public void keyTyped(KeyEvent e) {
    }
    public void keyReleased(KeyEvent e) {
    }
    public void keyPressed(KeyEvent e) {
        if(error != 6 && !Ganador()){
            char teclado = e.getKeyChar();
            boolean encontrado = false;
            dato = teclado;
            for(int i=0;i<palabra_actual.length;i++) {
                if(palabra_actual[i]==dato){
                    palabras_display[i]=dato;
                    encontrado = true;
                }
            }
            if(!encontrado)
                error ++;
            pantalla2=String.valueOf(palabras_display);
            labelLlenado.setText(pantalla2);
            System.err.println(error);
            Ahorcar();
            Ganador();
        }
    }
    public Image getIconImage() {
        Image iconoVentana = Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("icono.png"));
        return iconoVentana;
    }
    public void initComponents() {
        p.setLayout(null);
        labelLlenado = new JLabel();
        labelLlenado.setBounds(X, Y, largo, ancho);
        labelLlenado.setForeground(Color.red);
        labelLlenado.setFont(new Font("chiller", 1, 60));
        titulo.setBounds(250, 100, largo, ancho);
        titulo.setForeground(Color.red);
        titulo.setFont(new Font("chiller", 1, 60));
        p.add(labelLlenado);
        Dibujo.setBounds(500, 200, 200, 200);
        Dibujo2.setBounds(400, 200, 200, 200);
        logo.setBounds(350, 5, 50, 50);
        p.add(logo);
        p.add(titulo);
        p.add(Dibujo2);
        p.add(Dibujo);
        Dibujo2.setVisible(false);
        Menu();
        add(inicio);
    }
    public void Menu() {
        item[0] = new JMenuItem("Peleadores");
        item[1] = new JMenuItem("Boss");
        item[2] = new JMenuItem("Nuevo");
        item[3] = new JMenuItem("Musica de fondo");
        item[4] = new JMenuItem("<html><a href="+""+">Sitio Web</a></html>");
        item[5] = new JMenuItem("Salir");
        menu2.add(item[2]);
        menu2.add(item[3]);
        menu2.add(item[5]);
        menu.add(item[0]);
        menu.add(item[1]);
        menuIformacion.add(item[4]);
        barra.add(menu2);
        barra.add(menuIformacion);
        barra.add(menu);        
        add(barra, BorderLayout.NORTH);
        item[0].addActionListener(this);
        item[1].addActionListener(this);
        item[2].addActionListener(this);
        item[3].addActionListener(this);
        item[4].addActionListener(this);
        item[5].addActionListener(this);
        addKeyListener(this);
        menu.setEnabled(false);
    }
    public static synchronized void playSound(final String url) {
        new Thread(new Runnable() { 
            public void run() {
                try {
                    Clip clip = AudioSystem.getClip();
                    AudioInputStream inputStream = AudioSystem.
                      getAudioInputStream(Main.class.getResourceAsStream(url));
                    clip.open (inputStream);
                    clip.start();
                }
                catch (Exception e) {
                    System.err.println(e.getMessage());
                }
            }
        }).start();
    }
    public void Ahorcar(){
        Dibujo.setBounds(500, 200, 200, 200);
        switch(error){
            case 1:
                  Dibujo.setIcon(new ImageIcon(getClass().
                          getResource("scorpions1.gif")));
                  break;
            case 2:
                  titulo.setIcon(new ImageIcon(getClass().
                          getResource("fight.gif")));
                  Dibujo.setIcon(new ImageIcon(getClass().
                          getResource("scorpions1.gif")));
                  Dibujo2.setIcon(new ImageIcon(getClass().
                          getResource("Liu_kang_1.gif")));
                  Dibujo2.setVisible(true);
                  break;
            case 3:
                  Dibujo.setIcon(new ImageIcon(getClass().
                          getResource("scopions2.gif")));
                  Dibujo2.setIcon(new ImageIcon(getClass().
                          getResource("luikangGolpeado.gif")));
                  break;
            case 4:
                  Dibujo.setIcon(new ImageIcon(getClass().
                          getResource("scorpions3.gif")));
                  Dibujo2.setIcon(new ImageIcon(getClass().
                          getResource("liu_KangGolpe.gif")));
                  break;
            case 5:
                  Dibujo.setIcon(new ImageIcon(getClass().
                          getResource("scorpionsPerdiendo.gif")));
                  titulo.setIcon(new ImageIcon(getClass().
                          getResource("finishHim.gif")));
          Dibujo2.setIcon(new ImageIcon(getClass().
                          getResource("Liu_kang_1.gif")));
                  break;
            case 6:
                  try{
                      Thread t = new Thread(new fatalty());
                      t.start();
                      break;
                  }catch(Exception e){}
                  break;
            default:
                  Dibujo.setIcon(new ImageIcon(getClass().
                          getResource("scorpions1.gif")));
        }
    }
    public boolean Ganador(){
        for(int i = 0; i < palabras_display.length; i ++) {
            if(palabras_display[i] != palabra_.charAt(i))
                break;
            if(i == palabras_display.length - 1){
                Dibujo.setIcon(new ImageIcon(getClass().
                        getResource("scorpionsWins.gif")));
                if(error > 1)
                    Dibujo2.setIcon(new ImageIcon(getClass().
                            getResource("liuMuerto.gif")));
                titulo.setIcon(null);
                titulo.setText("YOU WIN!");
                Dibujo.setBounds(500, 160, 200, 200);
                return true;
            }
        }
        return false;
    }
    class fatalty implements Runnable{
        int x = 2;
        public void run() {
            do{
                try {
                    titulo.setIcon(new ImageIcon(getClass().
                            getResource("fatality_1.gif")));
                    Dibujo.setBounds(350, 50, 350, 300);
                    Dibujo2.setVisible(false);
                    Dibujo.setIcon(new ImageIcon(getClass().
                            getResource("_fatality_.gif")));
                    repaint();
                    Thread.sleep((x--)*1795);
                    if(x == 0){
                        /*Dibujo.setBounds(350, 200, 200, 200);
                        Dibujo.setIcon(new ImageIcon(getClass().
                         * getResource("liukangWin.png")));*/
                        break;
                    }
                } catch (InterruptedException ex) {
                    Logger.getLogger(Ahorcado.class.getName()).
                            log(Level.SEVERE, null, ex);
                }
            }while(true);
        }
    }
    class panel extends JPanel {
        private Image imagen;
        public panel() {
        }
        public panel(String nombreImagen) {
            if (nombreImagen != null) {
                imagen = new ImageIcon(getClass().
                        getResource(nombreImagen)).getImage();
            }
        }
        public panel(Image imagenInicial) {
            if (imagenInicial != null) {
                imagen = imagenInicial;
            }
        }
        public void setImagen(String nombreImagen) {
            if (nombreImagen != null) {
                imagen = new ImageIcon(getClass().
                        getResource(nombreImagen)).getImage();
            } else {
                imagen = null;
            }
            repaint();
        }
        public void setImagen(Image nuevaImagen) {
            imagen = nuevaImagen;
            repaint();
        }
        public void paint(Graphics g) {
            if (imagen != null) {
                g.drawImage(imagen, 0, 0, getWidth(), getHeight(), this);
                setOpaque(false);
            } else {
                setOpaque(true);
            }
            super.paint(g);
        }
    }
}
Ahora solo es cuestión de agregar la clase Principal del mismo juego en otro archivo (Main.java)
import javax.swing.UIManager;
public class Main{
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            java.awt.EventQueue.invokeLater(new Runnable(){
                public void run(){
                    new Ahorcado().setVisible(true);
                }
            });
        }
        catch(Exception e) {}
    }
}
Ya para finalizar les dejo las imágenes que yo utilice para hacer este juego y el audio lo dejare en un link de google docs.                                                     Link del Audio