Archivo de la categoría: Programacion

Códigos fuente de programas (creados por mí)

Juego del Tic Tac Toe Humano vs PC en Java, IDE: NetBeans

Bien pues aquí dejo una aplicación que hice sobre el clásico juego del gatito, también llamado Tres en Raya, tres en linea, Tic Tac Toe y de muchas otras formas más D:

Está hecho en Java y es un proyecto de NetBeans. Es algo sencillo y consiste en enfrentarse contra la PC.
Va mostrando cuáles son los movimientos realizados por ambos jugadores y una estadísticas de juegos ganados, empatados y perdidos. El código lo intenté hacer lo más explicado posible.
Usé hilos para la parte de la respuesta de la máquina. Ojo, en el juego es el humano el que tira primero para darle cierta ventaja. Según yo el humano no gana nunca.

Lo anterior es porque se trata de eso, de demostrar que la PC tiene la capacidad de “pensar” y reaccionar ante las jugadas del humano. Fue un proyecto para la materia de Inteligencia Artificial de mi uni 😀

Bien mucho blabla, aquí está el código
Sólo para terminar una explicación de como funciona:
1.- El humano tira
2.- La pc revisa si ya ganó, luego si puede ganar ella, luego si el usuario está punto de ganar
3.- Dependiendo de lo anterior es su jugada
4.- Si no cumple ninguna de éstas, tira en una esquina
5.- Aún con todo esto hay unas jugadas donde el humano gana… Pero ya las programé para que cuando detecte estas jugadas haga un movimiento distinto y las evite 😀
Fue lo mejor que lo pude explicar xD en fin, para probarlo, descárguenlo, revisen el código, e intenten ganarlo corriendo el jar Tercia.jar 😀
Por cierto, incluyo dos, TERCIA es el mejor para mi, el otro fue uno que hice rápido para ayudar a un compañero, está algo más sencillo. Lo importante es el hilo que está al final de clase principal 🙂

Representación de conjuntos en un ordenador (Union, interseccion….) + Software

Para realizar intersecciones o uniones de dos o más conjuntos en un ordenador, puede ser algo tardado para él, sin embargo, podemos hacer la representación de estos conjuntos usando valores binarios.

Por ejemplo, si tenemos:

U= 1,2,3,4,5,6,7,8,9

A= 1,2,3

B= 1,4,5

Podemos representar los conjuntos A y B con valores binarios con respecto al universo U, es decir, si el valor x del conjunto existe en U, se pondrá un 1 en su respectiva posición, de lo contrario, se pondrá un 0. Esto hace automáticamente que los subconjuntos sean del mismo tamaño que A.

Entonces A y B quedarían:

A= 1,1,1,0,0,0,0,0,0

B= 1,0,0,1,1,0,0,0,0

Lee el resto de esta entrada

Script para cambiar la MAC de una interfaz de red y hostname

Hace ya como un mes presenté un ligero “problema” de bloqueo en cierta red… 

El bloqueo consistía en hacer un filtrado MAC-hostname para evitar que me conectara en uno de los equipos de esa sala de cómputo y que no pudiera acceder a ninguna red 😛

El bloqueo era realmente tonto, simplemente cambiando mi mac y claro… el hostname para que no vieran el nombre de la máquina con eso bastaba 😛 pero para no estarlo haciendo cada que se iniciaba la máquina me hice un script.

Es necesario “runscript”. Deben copiar el archivo a “/etc/init.d” con el nombre que gusten. Para iniciarlo pueden poner /etc/init.d/nombre_del_script start

Lo hice de esta forma para evitarme estar regresando manualmente los valores (mac y hostname) que se supone debe tener normalmente el equipo 😛 simplemente al apagar la computadora se ejecuta el stop (automáticamente) del script…

Ah sí… también borra el historial de la CLI para que al ejecutar history en el próximo reinicio no se vea el ” /etc/init.d/nombre_del_script start” 😛

Ah y algo más, chequen la ruta de su archivo hostname (en algunos casos es /etc/hostname). Cambien el nombre de la interfaz si es necesario, y en la parte del  stop pongan los valores de hostname y la mac de acuerdo a su equipo!!

#!/sbin/runscript
start()
{
ebegin “Starting service…”
echo hostname=”androidgz0″ > /etc/conf.d/hostname
rm /root/.bash_history
touch /root/.bash_history
source /etc/conf.d/hostname
ifconfig wlan0 down
ifconfig wlan0 hw ether 0A:0B:11:12:20:01
ifconfig wlan0 up
eend
}


stop()
{
ebegin “Stopping service…”
echo hostname=”sala1pc01″ > /etc/conf.d/hostname
rm /root/.bash_history
touch /root/.bash_history
source /etc/conf.d/hostname
ifconfig wlan0 down
ifconfig wlan0 hw ether 00:13:F7:11:83:EC
ifconfig wlan0 up
eend
}

2da version de script para desinfectar maquinas con Windows desde Linux

En el post anterior “Script para desinfectar un equipo Windows contagiado” les compartí un script en bash que hice para esta labor… Y apoyándonos de ClamAV (necesario tenerlo instalado).
Al script se le pasaba la particion a montar y éste se encargaba de montarla con los permisos necesarios y comenzar el análisis.
Actualización: Esto lo hice en openSUSE y funcionó, sin embargo, ahora que estoy usando Gentoo, no fue así, no tengo openSUSE para comprobar esto pero creo que esto pasó porque ya traía instalado el paquete “ntfs3g” que es el que en realidad puede hacer que nuestro sistema escriba en particiones NTFS. Si con esto aún no se puede, entonces hay que darle soporte al kernel también 😛
Sigue lo de Actualización xD: Ah si, también tienen que ver si ntfs3g se llama así en su distro o sino buscar como se llama 😛 (en mi caso sí se llama así) y en el script cambiar en “mount -t ntfs” por “mount -t ntfs-3g” lo demás queda igual 🙂 Pueden continuar leyendo xD.

Script para desinfectar un equipo Windows contagiado

Hace varios días me encontré un post en Usemos Linux que habla sobre como desinfectar una máquina con Winbugs desde tu Linux usando ClamAV

Después de leer todo les prometí un script para hacer el proceso un poco más fácil y aquí se los comparto también pero antes, pueden pasar a leer el post completo para que vean exactamente cuál es el proceso: 

Cómo desinfectar un Windows contagiado con virus o malware usando Linux

Y ahora sí, aquí les dejo el script. Guárdenlo con el nombre que quieran, denle permisos de ejecución “chmod +x nombre_del_script” y lo ejecutan con “/.nombre_del_script” ya saben, todo sin comillas.

La partición a escanear debe estar desmontada ya que el script se encarga de ello. Y sin más blablabla aquí está 😛