Gentoo con instalador gráfico v. 2006.0!!
Asi es, gentoo ya tiene instalador grafico para x86 (por el momento)
No tenia pensado escribir nada por aqui, pero creo esto merece la pena..
Algunos screenshots:
Clic xD
Informatica, Programación, Gnu/Linux, Proyectos y Pasatiempos.
Asi es, gentoo ya tiene instalador grafico para x86 (por el momento)
No tenia pensado escribir nada por aqui, pero creo esto merece la pena..
Algunos screenshots:
Clic xD
Publicado Por Soul Lost A las 8:25:00 p.m. 1 Escribe tu Comentario
Categorias: GNU/Linux
Como bien saben tenemos a nuestro querido emerge XD..
Pues miramos los paquetes necesarios (miren con atención las USES):
[ebuild R ] net-www/apache-2.0.55-r1 +apache2 +debug
+doc -ldap -mpm-leader -mpm-peruser -mpm-prefork -mpm-threadpool
-mpm-worker -no-suexec (-selinux) +ssl -static-modules -threads
[ebuild R ] dev-php/mod_php-4.4.0-r9 +X +apache2 +berkdb
+crypt +curl +debug +doc -fdftk -firebird +flash -freetds +gd
-gd-external +gdbm -gmp -hardenedphp +imap -informix +ipv6 +java +jpeg
-kerberos -ldap -mcal -memlimit +mssql +mysql +nls -oci8 -odbc +pam
+png +postgres -snmp +spell +ssl +tiff +truetype +xml2 -yaz
Calculating dependencies ...done!
[ebuild R ] dev-db/mysql-4.1.14 +berkdb -big-tables -cluster
+debug +doc -extraengine -geometry -minimal +perl +readline (-selinux)
+ssl -static +tcpd -utf8
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] dev-db/phpmyadmin-2.7.0_p1 -vhosts 0 kB
## Este directorio es donde trabaja apache, contiene archivos de conf. y logs
ServerRoot "/usr/lib/apache2"
## Tiempo en segundos donde apache puede esperar a realizar peticiones o recibir paquetes
Timeout 300
## Permite conecciones multiples al servidor
KeepAlive On
## Numero de peticiones por conexión, si el valor = 0 entonces es ilimitado
MaxKeepAliveRequests 100
## Segundos que el servidor Apache esperará una paetición antes de cerrarla
KeepAliveTimeout 15
## Ip y puerto por donde escuchará apache al estar encendido
Listen 80
## Usuario y grupo al que se le permite tener acceso a la información de directorios del servidor
User apache
Group apache
## Correo del admin del servidor
ServerAdmin root@soullost.com
## Nombre del servidor y puerto que utilizará el servidor para identificarse a si mismo. En este
## caso cuanto con un servidor DSN XD pero por lo regular se pone localhost:80
ServerName www.soullost.com:80
## Directorio donde se guardaran las paginas del servidor
DocumentRoot "/var/www/localhost"
## Aqui se determinar que tipo de pagínas se admiten como index ( principal)
DirectoryIndex index.html index.html.var index.php
## Archivo de config. personales ( útil en el caso tener dominios virtuales )
AccessFileName .htaccess
## Si esta opción esta en "on" en los archivos de bitacora (logs) en vez de usar direcciones ip
## se usaran dominios. Por ejemplo www.soullost.com en vez de 192.168.1.3
HostnameLookups Off
## Ubicación del archivo de errores (tener el cuenta la opción ServerRoot )
ErrorLog logs/error_log
## Nivel de depuración de errores (algo como una directiva)..
LogLevel warn
## Directorio donde se guardan los cgi-bins y un alias, en este caso, el alias es /cgi-bin/
## Recordando la directiva de ServerRoot quedaría /var/www/cgi-bin/
ScriptAlias /cgi-bin/ /var/www/localhost/cgi-bin/
## En gentoo tenemos este directorio para configurar los VirtualHost
Include /etc/apache2/vhosts.d/*.conf
## Esta opción especificamos que el directorio para los host virtuales, también usaremos el modulo
## de apache y activamos el directorio para que lo usuarios del sistema puedan subir paginas.
## Ahi mismo en el archivo menciona de que se trata cada opción:
# Config file for /etc/init.d/apache2
# When you install a module it is easy to activate or deactivate the modules
# and other features of apache using the APACHE2_OPTS line. Every module should
# install a configuration in /etc/apache2/modules.d. In that file will be an
#where NNN is the option to enable that module.
# Here are the options available in the default configuration:
# USERDIR Enables /~username mapping to /home/username/public_html
# INFO Enables mod_info, a useful module for debugging
# PROXY Enables mod_proxy
# DAV Enables mod_dav
# DAV_FS Enables mod_dav_fs (you should enable this when you enable DAV
# unless you know what you are doing)
# SSL Enables SSL
# SSL_DEFAULT_VHOST Enables default vhost for SSL (you should enable this
# when you enable SSL unless you know what you are doing)
# LDAP Enables mod_ldap
# AUTH_LDAP Enables authentication through mod_ldap
# DEFAULT_VHOST Enables the default virtual host in /var/www/localhost/htdocs
APACHE2_OPTS="-D DEFAULT_VHOST -D PHP4 -D USERDIR"
/etc/init.d/apache2 start
<?php
phpinfo();
?>
adduser -m -g apache -s /bin/bash usuario
passwd usuario
test1@UnderHouse ~ $ id
uid=1005(test1) gid=81(apache) grupos=81(apache)
ebuild /var/db/pkg/dev-db/mysql-4.1.14/mysql-4.1.14.ebuild config
mysqladmin -u root -h localhost password 'mi_password'
/etc/init.d/mysql start
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.1.14-debug-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| pmadb |
| test |
+----------+
3 rows in set (0.02 sec)
mysql> \q
Bye
Publicado Por Soul Lost A las 9:50:00 a.m. 2 Escribe tu Comentario
Categorias: GNU/Linux, Servidores
Introducción a C++
C++ es originalmente creado por Bjarne Stroustrup dentro de los laboratorias Bell (AT&T) a principios de la decada de los 80's, como bien se sabe c++ evolucionó a partir del lenguaje C (programación estructurada) y simula 67.
C++ es un lenguaje de alto nivel orientado a objetos, lo que sinifica, que tenemos la capacidad de crear programas "modulares" y claramente con código reutilizable (una ventaja enorme en cuanto a c). Esto permite programar mejor, con mayor rapidez y corregir errores fácilmente.
Conceptos básicos de la POO (Programación orientada a objetos)
Objeto: Vivimos en un mundo de objetos, cualquier sustantivo puede ser tomado como tal (automóvil, avión, edificio, celular, mesa, silla etc).
Clases: Es la descripción de un objeto (características y funcionalidad).
Variables / Propiedades miembros: Es un almacén de datos relacionados con los objetos, estan suelen ser públicas o privadas.
Funciones miembro: Es la funcionalidad que se le dan a los objetos, similar a las funciones en la programación estructurada o a los métodos en java =).
Herencia: Permite crear clases (subclases) a partir de otras clases (clase base). Una subclase hereda código y datos de la clase base, no obstante, una subclase puede contener su código y datos particulares.
Instancia: Es un objeto creado a partir de un clase deifínida por el usuario.
Conceptos básicos de programación.
Lenguaje de programación: Son una serie de instrucciones que a groso modo indican lo que realizará la computadora para un fin determinado, estos lenguajes de programación son parecidos al lenguaje común del ser humano (en la mayoria de los casos al Ingles).
Secciones lógicas de una computadora.
Unidad de entrada: Es donde se recibe toda la información/datos que almancena/utiliza una computadora para realizar ciertas instrucciones especificas (Dispositivos de entrada: teclado, mouse/raton, Red, Internet, Microfono, etc.).
Unidad de salida: Es la sección donde se deposita toda la información ya procesada por la computadora para que este disponible. (Dispositivos de salida: Monitor, Impresora, Bocinas, etc).
Unidad de memoria: Es la parte donde se almacena información temporal para que este disponible durante la ejecución de procesos y es donde los dispositivos de salida obtienen lo que se mostrará una vez realizada una petición por los dispositivos de salida.
Unidad aritmética y lógica (ALU): Es la que se encarga de realizar las operaciones y decisiones al momento de procesar información ( operaciones aritméticas, operaciones lógicas).
Unidad central de procesamiento (CPU): Es la que administra todo el relajo al momento de manipular datos, la que inidica cuando se escribe en memoria, cuando se envia información a los dispositivos de salida, etc.
Este término es mal usado por muchos al referirse al gabinete de una computadora, asi que ya saben :D (no vuelvan a decir: Pasame el CPU!! XD).
Unidad secundaria de almacenamiento: Es donde se guarda información a largo plazo la cual puede ser utilizada cuando se requiera (discos).
Lenguaje maquina: Es el lenguaje o idioma natural que entiende un computadora, que básicamente son arreglos de puros 0 y 1. Este tipo de lenguaje es muy poco entendible y complicado para realizar programas.
Lenguaje esamblador: Este lenguaje sustituye al lenguaje maquina por una variante que es la sintaxis ( parecido al ingles), el cual se pueden realizar las operaciones básicas de una computadora. No es tan complicado de entender pero requiere de de mucho código.
Lenguaje de alto nivel: Es el utilizado hoy en día para realización de programas para una computadora. Estos lenguajes tiene una sintaxis mucho más sencilla que un lenguaje esamblador y que además proprociona ser más eficiente al programar.
Compilador: Es el encargado de convertir las instrucciones de un lenguaje de alto nivel (código fuente) a lenguaje maquina para que puede ser entendible para una computara. Esto a su vez crea un ejecutable el cual se encargará de realizar las operaciones que indicamos al momento de programar.
Interprete: Ejecuta un programa de alto nivel sin tener que compilarlo.
Ambiente de programación en C++
Los programas escritos en C++ y el código fuente de este se almacenan en archivos con extensión .cc .cxx .cpp ó .C.
Un programa en c++ pasa por 6 fases para su ejecución, que se describen a continuación:
Edición: Es la fase donde se escribe el código fuente del programa mediante un editor. En linux hay varios como vim, vi, gvim, anjuta IDE xD, etc ( Ya estaré escribiendo algo sobre esto ;).
Preproceso: Esta fase se realiza antes de compilar el programa y la cual usa directivas de un programa llamado preprocesador el cual es invocado por el compilar antes de convertir a código objeto nuestro programa.
Compilación: Se crea el código objeto y se almacena en disco.
Enlace: Se enlaza nuestro código objeto con las librerias estandar de c++ o las creadas por nosotros para crear una imagen ejecutable.
Carga: El programa se almacena en memoria para su ejecución, sencillo no?
Ejecución: Se ejecuta el programa mediante la administración de la CPU.
Escribiendo código en C++
Después de un poco de teoria y espero haberlo hecho bien XD, empezamos con la acción, PERO antes debemos saber algunas cosas más al momento de programar.
Las variables son usadas en cualquier lenguaje de programación y no es más que un espacio de memorial reservado para algunos tipos de datos que utilizaremos durante la ejecución de un programa.
1. Enteros
1. int
2. long int
3. long long
4. short
5. char
2. Flotantes
1. float (IEEE754 Simple)
2. double (IEEE754 Normal)
3. long double (IEEE754 Extendido)
Los operadores aritméticos son especialmente para realizar operaciones/cálculos aritméticas(os) xD
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Residuo o Módulo
Existe una precedencia al momento de evaluar una expresión aritmética
Orden de operaciones:
1.- Paréntesis
2.- Potencias y raíces
3.- Multiplicaciones y divisiones
4.- Sumas y restas
5.- Dos o más de la misma jerarquía u orden entonces resolver de izquierda a derecha
Los operadores relacionales con para evaluar ó comparar expresiones.
<> Mayor que
<= Menor o igual que >= Mayor o igual que
== Igual que (identidad)
!= Desigual que (desigualdad)
El flujo estándar de entrada se hace mediante la instrucción cin (c-in) y por lo regularmente obtenemos los datos necesarios mediante el teclado.
El flujo estándar de salida se manda a pantalla mediante la instrucción cout.
El flujo estándar de errores se usa mediante la expresión cerr y se manda al monitor junto con cout regularmente.
Secuencias de escape.
Secuencia Valor Símbolo Que hace
\a 0x07 BEL Sonido audible (bell)
\b 0x08 BS Retroceso (backspace)
\f 0x0C FF Salto de formato (formfeed)
\n 0x0A LF Saltar una línea (linefeed)
\r 0x0D CR Retorno de carro (carriage return)
\t 0x09 HT Tabulación horizontal (H Tab)
\v 0x0B VT Tabulación vertical (V Tab)
\\ 0x5c \ Barra invertida (backslash) [2]
\' 0x27 ' Apóstrofo (comilla simple)
\" 0x22 " Doble comilla
\? 0x3F ? Interrogación
\O cualquiera cualquiera O = cadena de hasta tres dígitos octales
\xH cualquiera cualquiera H = cadena de dígitos hexadecimales
\XH cualquiera cualquiera H = cadena de dígitos hexadecimales
Los comentarios son usados para expresar una opinión o algún comunicado a la persona que mire el código de nuestro programa.
En c++ se pueden escribir de la siguiente manera:
// Esto es comentario de una linea
/* Esto es
un comentario de
muchas lineas
XD
BU!*/
Pues empezemos con un programa sencillo:
// Esta es una liberia estandar de C++, se tiene que declarar para usar el
//flujo de entrada, salida y de errores.
//Esta linea es usada por el preprocesador de C++.
1 #include<>
2 int main(){
3 std::cout <<"Hola, \n Que tal? \n Nos vemos!"; 4 return 0; 5 }
Que es lo que hace?
En la linea 2 se declara la función principal del programa, la cual siempre se debe escribir y decimos que devuelve un valor de tipo entero (ya veremos esto a fondo). Sabemos que es una función por la forma de declarar los parentesis a la derecha despues del nombre.
La llave izquierda ({) señala que ahi empieza una bloque de instrucciones que son parte de la función main.
La linea 3 se manda a imprimir en pantalla mediante la instrucción std::cout y el operador de insercción de flujo (<<) el siguiente mensaje, por cierto, cada instrucción termina con punto y coma (;): Hola, Que tal? Nos vemos! En la linea 4 indicamos que regresamos un valor nulo (nada). La linea 5 simplemente con la llave derecha (}) se da por concluido el bloque de instrucciones de la función main y por lo tanto el termino del programa. Nota: Siempre que se abrá un bloque de instrucciones se debe cerrar, si al momento de compilar nos mandará un mensaje de error y no podrá crearse la imagen ejecutable del programa. El programa anterior se puede escribir con algunas variantes y con el mismo resutado:
// Esta es una liberia estandar de C++, se tiene que declarar para usar el
//flujo de entrada, salida y de errores.
//Esta linea es usada por el preprocesador de C++.
1 #include<>
2 int main(){
3 std::cout <<"Hola, \n"; 4 std::cout <<"Que tal? \n"; 5 std::cout <<"Nos vemos! \n"; 6 return 0;
// Esta es una liberia estandar de C++, se tiene que declarar para usar el
//flujo de entrada, salida y de errores.
//Esta linea es usada por el preprocesador de C++.
1 #include<>
2 int main(){
3 std::cout <<"Hola, \n" 4 <<"Que tal? \n" 5 <<"Nos vemos! \n"; 6 return 0;
Entre algunas formas mas pero bueno ahi prueben que es la unica manera de aprender (practicando).
Ahora algo un poco mas complejo, algunas operaciones mediante el uso de los operadores aritméticos.
#include<>
int main()
{
using std::cout;
using std::cin;
using std::cerr;
int num1, num2;
cout<<"Escribe el num1: "; cin>>num1;
cout<<"Escribe el num2: "; cin>>num2;
cout<<"La suma de los dos numero es: "<<>
Vaya hay cosas nuevas XD..
Using std:: Es para poder omitir el std:: cada vez que ocupemos cout, cin o cerr (esto es referente a los espacios de nombre que veremos después).
int num1, num2 Nada especial declaramos dos variables que solo guardaran datos enteros.
cin>> Lo mismo que cout, se usa para obtener datos mediante el operador de extracción de flujo (>>). En este caso pedimos el valor de la variable num1.
<<>
Publicado Por Soul Lost A las 4:07:00 a.m. 1 Escribe tu Comentario
Categorias: C++, Programación
Pues de nuevo regresamos a las carreras y a la buena vida que nos da la uni :P XD
Sin embargo el primer dia la gran mayoria de los maestros ni se presentaron, esperemos para después de la primera semana todas la clases se normalizen..
Ps las materias que veremos esta semestre son estas:
Ética
Programación POO
Química X(
Probabilidad y Estadística
Dibujo (que ni idea de que se trata creo es AutoCad)
Matemáticas II
Ps la verdad la unica que me interesa es la de Programación y algo de dibujo si se da lo de AutoCad ya que si es de llevar la gran regla "T" ps safo XD.
Los maestros que se presentaron es el de mate., que seguraménte nos tendrá matandole con ejercicos XD, el de química, otro que estaremos viendo teoría y haciendo unas manualidades y documentación en diapositivas ( que comentó que al último con esa información subiriamos los tutoriales a la pagína de la escuela), la de ética, que ps se ve buena onda pero no espero hacer gran cosa..
Pues así están las cosas hasta el momento y espero tener tiempo para seguir con esto y hacer la sección de cursos =)..
Hasta la próxima.
Publicado Por Soul Lost A las 9:14:00 p.m. 2 Escribe tu Comentario
Categorias: Pasatiempos
Publicado Por Soul Lost A las 10:42:00 p.m. 0 Escribe tu Comentario
Categorias: Cine, Opinión, Pasatiempos
No me considero un adicto
Pero si fumo de vez en cuando..
Esto lo encontré buscando en google y espero les seá de utilidad y de paso también un test para mirar que tan adicto eres..
Me sorprendio mirar que quimicos se utilizan en la elaboración de los cigarrillos
Mi resultado fue este: Clic
Y el de ustedes? XD
Articulo
Test
Publicado Por Soul Lost A las 7:35:00 p.m. 5 Escribe tu Comentario
Categorias: Pasatiempos
Apenas hice una compra de una memoria USB Kingston de 512 MB (mas que necesario XD, ya es una necesidad no un lujo)..
Para sopresa el gnome 2.12 ahora estable en gentoo me monto y desmonto automaticamente el dispositivo y la reconocio correctamente =), al parecer no realizé nada por que antes habia dado soporte a un impresora USB EPSON CX 1500 para que la detectara de la mismo forma..
Hay que tener soporte en el kernel de la siguiente forma:
Loadable module support --->
[*] Enable loadable module support
[*] Module unloading
[*] Automatic kernel module loading
Device Drivers
[*] Plug and Play support
USB support
[*] USB device filesystem
File systems --->
DOS/FAT/NT Filesystems --->
En gentoo hay dos demonios que cargan los modulos al inicio del sistema (claro si tienes un kernel modular): Coldplug y Hotplug
En mi caso uso coldplug y lo arranco al iniciar el sistema. También en vez de usar supermount uso ivman + hald + coldplug (seguir esta guia Ivman, sustituto de supermount)
La unica desventaja de ivman es que no funciona con los disquettes XD (ya casí obsoletos), si quieren usar supermount los usuarios de gentoo deberan usar las sources originales del kernel (vainilla creo se llaman). Aqui esta una guia Supermount
El unico problema que se me presento es que no tenia permisos para leer, escribir ni ejecutar nada en /media/Kingston, para esto miré que sucede y solo bastaba con agregar mi usuario al grupo plugdev
soullost@UnderHouse ~ $ ls -l /media
total 16
drwxrwx--- 3 ivman plugdev 16384 Dec 31 1969 Kingston
gpasswd -a soullost plugdev
soullost@UnderHouse ~ $ id
uid=1000(soullost) gid=100(users) groups=10(wheel),11(floppy),18(audio),19(cdrom),27(video),35(games),
80(cdrw),81(apache),85(usb),100(users),409(qemu),410(plugdev),411(vmware)
Publicado Por Soul Lost A las 9:17:00 a.m. 3 Escribe tu Comentario
Hoy (mas bien dicho ayer, ya es de madrugada xD ) llevó un chavo al curso su super pc (hd de 200 GB creo, RAM 1 GB, etc) para que el maestro le dierá soporte a la tarjeta Ethernet en Linux..
Resulta que fui a mirar que hacian y pum al ultimo termine dandole soporte =), siempre les recomiendo que antes de dar soporte a cualquier cosa en el kernel esten seguros de cual es su dispositivo (nombre, modelo) y de ahi busquen el modulo o "controlador" que use Linux para darle soporte.
Ps como este amigo no sabia ni como se llamaba su tarjeta Ethernet XD, realize algunos comandos para obtener un poco de información, aparte de verificar en windows la información ( vaya idea del maestro ¬¬ xD )
dmesg este manda a pantalla avisos del kernel, por ejemplo, dispositivos conectados recientemente o algún error con el hardware
Intel(R) PRO/100 Network Driver - version 2.3.38-k1
modprobe -l | grep net La primera parte ( separada por "|") muestra absolutamente todos los modulos o "controladores" qie soporta el kernel actual. La segunda parte hace una busqueda por la categoria "net" (la verdad solo busca cualquier cadena con "net") igual pueden poner directamente el nombre del modulo que da soporte a nuestro dispositivo si ya saben cual es (solo para verificar si existe el modulo y lo podemos cargar).
El resultado da una lista algo asi:
/lib/modules/2.6.14-gentoo-r5/kernel/drivers/net/mii.ko
/lib/modules/2.6.14-gentoo-r5/kernel/drivers/net/epro100.ko
modinfo e100 Este da un poco de información sobre el modulo:
escription: Intel(R) PRO/100 Network Driver
author: Copyright(c) 1999-2004 Intel Corporation
license: GPL
parm: debug:Debug level (0=none,...,16=all)
vermagic: 2.6.6-1.435.2.3 686 REGPARM 4KSTACKS gcc-3.3
depends: mii
alias: pci:v00008086d00001029sv*sd*bc02sc00i*
alias: pci:v00008086d00001030sv*sd*bc02sc00i*
alias: pci:v00008086d00001031sv*sd*bc02sc00i*
modprobe modulo Pues una vez sabiendo que esta el modulo que soporta el dispositivo solo queda levantarlo.. Esto se hace con el nombre del modulo quitandole la extención .ko por asi decirlo:
modprobe e100
ifconfig eth0 up mtu 1500 netmask 255.255.255.0 192.x.x.x Con esto le indicamos que levante la interfaz de red y le asigne una ip "192.x.x.x" y una mascara de red "255.255.255.0".
Ps con este es suficiente, ya solo quedo crear un archivo ifcfg-eth0 para que lo arrancará desde el inicio del sistema y no será necesario volver a repetir los datos =). Eso depende en gran medida de la distribución que manejes..
Solo para verificar hagan un ping a algún equipo de la red que pertenesca a la subred correspondiente..
Publicado Por Soul Lost A las 2:13:00 a.m. 2 Escribe tu Comentario
Buenas..
Pues lo prometido es deuda xD, aqui esta el juego del gato. Falta depurarlo aún mas y afinar detalles como por ejemplo poner una alerta en javascript si el lugar en el que se tiro ya esta ocupado entre otras circunstacias que pueden surgir xD. Pero de que funciona, funciona xD..
Cualquier comentario haganmelo saber. Sin mas que decir lo pongo aqui abajo..
Por cierto traté de acortarlo usando en un principio arreglos y funciones pero no pude hacer funcionar un arreglo declarado en otras funciones (que se a de poder pero no investigué mucho).
Una vez mas si lo quieren probar quitenle los espacios que puse entre las etiquetas html.
Ya despues estaremos explicando algo de prog. en php ;)
Archivo index.html
< html>
< head>
< title> Juego del gato
< /head>
< body>
< center>
< h1> Bienvenidos al juego del gato
< h5>Juega Jugador 1 con una 'X' (Favor escribir con Mayusculas)
< FORM action="gato.php" METHOD="GET">
< INPUT type="text" name="jd1" size=1 maxlength=1>
< INPUT type="text" name="jd2" size=1 maxlength=1>
< INPUT type="text" name="jd3" size=1 maxlength=1>
< br>
< INPUT type="text" name="jd4" size=1 maxlength=1>
< INPUT type="text" name="jd5" size=1 maxlength=1>
< INPUT type="text" name="jd6" size=1 maxlength=1>
< br>
< INPUT type="text" name="jd7" size=1 maxlength=1>
< INPUT type="text" name="jd8" size=1 maxlength=1>
< INPUT type="text" name="jd9" size=1 maxlength=1>
< br>
< INPUT type="hidden" name="jugador" value="1">
< INPUT type="hidden" name="contador" value="0">
< INPUT type="hidden" name="jugada" value="X">
< INPUT type="submit" value="Enviar Jugada">
< /FORM>
< /center>
< /body>
< /HTML>
Archivo gato.php
< html>
< head>
< title>Jugando al gato
< /head>
< body>
< center>
< h1> Juego del gato
$jd1=$_GET['jd1'];
$jd2=$_GET['jd2'];
$jd3=$_GET['jd3'];
$jd4=$_GET['jd4'];
$jd5=$_GET['jd5'];
$jd6=$_GET['jd6'];
$jd7=$_GET['jd7'];
$jd8=$_GET['jd8'];
$jd9=$_GET['jd9'];
$contador=$_GET['contador'];
$jugada=$_GET['jugada'];
$ganador=0;
//Checando Verticales
if ( $jd1 == $jugada && $jd2 == $jugada && $jd3 == $jugada )
{
$ganador=1;
}
if ( $jd4 == $jugada && $jd5 == $jugada && $jd6 == $jugada )
{
$ganador=1;
}
if ( $jd7 == $jugada && $jd8 == $jugada && $jd9 == $jugada )
{
$ganador=1;
}
//Checando Horizontales
if ( $jd1 == $jugada && $jd4 == $jugada && $jd7 == $jugada )
{
$ganador=1;
}
if ( $jd2 == $jugada && $jd5 == $jugada && $jd8 == $jugada )
{
$ganador=1;
}
if ( $jd3 == $jugada && $jd6 == $jugada && $jd9 == $jugada )
{
$ganador=1;
}
//Checando Diagonales
if ( $jd1 == $jugada && $jd5 == $jugada && $jd9 == $jugada )
{
$ganador=1;
}
if ( $jd3 == $jugada && $jd5 == $jugada && $jd7 == $jugada )
{
$ganador=1;
}
$jugador=$_GET['jugador'];
if ( $jugada=='X' || $jugada=='x')
{
$jugada='O';
}
else{
$jugada='X';
}
if ( $contador <= 8 && $ganador != 1 )
{
if ( $jugador==1)
{
$jugador=2;
}
else{
$jugador=1;
}
$contador++;
echo "< h5>Juega Jugador ",$jugador ," con una ",$jugada," (Favor escribir con Mayusculas)< /h5>";
echo "< FORM action=\"gato.php\" METHOD=\"GET\">";
echo "< INPUT type=\"text\" name=\"jd1\" size=1 maxlength=1 value=",$jd1,">";
echo "< INPUT type=\"text\" name=\"jd2\" size=1 maxlength=1 value=",$jd2,">";
echo "< INPUT type=\"text\" name=\"jd3\" size=1 maxlength=1 value=",$jd3,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd4\" size=1 maxlength=1 value=",$jd4,">";
echo "< INPUT type=\"text\" name=\"jd5\" size=1 maxlength=1 value=",$jd5,">";
echo "< INPUT type=\"text\" name=\"jd6\" size=1 maxlength=1 value=",$jd6,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd7\" size=1 maxlength=1 value=",$jd7,">";
echo "< INPUT type=\"text\" name=\"jd8\" size=1 maxlength=1 value=",$jd8,">";
echo "< INPUT type=\"text\" name=\"jd9\" size=1 maxlength=1 value=",$jd9,">";
echo "< br>";
echo "< INPUT type=\"hidden\" name=\"jugador\" value=",$jugador,">";
echo "< INPUT type=\"hidden\" name=\"contador\" value=",$contador,">";
echo "< INPUT type=\"hidden\" name=\"jugada\" value=",$jugada,">";
echo "< INPUT type=\"submit\" value=\"Enviar Jugada\">";
echo "< /FORM>";
}
if ( $contador < 8 && $ganador == 1 )
{
echo "< h2>Gano el Jugador ",$jugador ,"!!!";
echo "< FORM action=\"gato.php\" METHOD=\"GET\">";
echo "< INPUT type=\"text\" name=\"jd1\" size=1 maxlength=1 value=",$jd1,">";
echo "< INPUT type=\"text\" name=\"jd2\" size=1 maxlength=1 value=",$jd2,">";
echo "< INPUT type=\"text\" name=\"jd3\" size=1 maxlength=1 value=",$jd3,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd4\" size=1 maxlength=1 value=",$jd4,">";
echo "< INPUT type=\"text\" name=\"jd5\" size=1 maxlength=1 value=",$jd5,">";
echo "< INPUT type=\"text\" name=\"jd6\" size=1 maxlength=1 value=",$jd6,">";
echo "< br>";
echo "< INPUT type=\"text\" name=\"jd7\" size=1 maxlength=1 value=",$jd7,">";
echo "< INPUT type=\"text\" name=\"jd8\" size=1 maxlength=1 value=",$jd8,">";
echo "< INPUT type=\"text\" name=\"jd9\" size=1 maxlength=1 value=",$jd9,">";
echo "< br>";
echo "< INPUT type=\"hidden\" name=\"jugador\" value=",$jugador,">";
echo "< INPUT type=\"hidden\" name=\"contador\" value=",$contador,">";
echo "< INPUT type=\"hidden\" name=\"jugada\" value=",$jugada,">";
echo "< /FORM>";
}
if ( $contador == 9 && $ganador != 1 )
{
echo "< h2>Juego Terminado
EMPATE!! ";
}
?>
< /center>
< /body>
< /html>
Publicado Por Soul Lost A las 1:51:00 a.m. 2 Escribe tu Comentario
Categorias: PHP, Programación