• Publicidad

Ayuda para proyecto 4 en raya

¿Estás desarrollando un proyecto, o piensas hacerlo? Pon aquí tu propuesta, lo más seguro es que alguien esté interesado en ayudarte.

Re: Ayuda para proyecto 4 en raya

Notapor Progra_GC » 2012-04-09 11:19 @513

Claro, muchas gracias.
¿Me podrías ayudar con algunas partes? Generalmente variables que no me quedan muy claras del todo, como :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #lin 27
  2.         ( my $in = <STDIN> ) =~ s/^\s+|\s+$//g;
  3.  #=~ s/^\s+|\s+$//g
  4. #28
  5. grep
  6. #103
  7. if ( grep $in eq $_, 1 .. $w and $board[0][ --$in ] eq " " )
  8. #eq $_
  9. #125
  10. select undef, undef, undef, 0.04;
  11. #undef
  12. #143
  13.   while ( ( $x -= $xdir * $_ ) >= 0
  14.  #  -=
  15. #166
  16. if ( not grep $_ eq " ", map @$_, @board )
  17. #map @$_
  18.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ya las he quitado del código y he visto para qué sirven pero si me puedes confirmar mi teoría ;) , te escribí la línea en la que aparecen y como comentario la parte específica para que no hayan marañas; la primera es la que aún me cuesta más.

Por favor.
Avatar de Usuario
Progra_GC
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-26 10:50 @493
Ubicación: Costa Rica

Publicidad

Re: Ayuda para proyecto 4 en raya

Notapor explorer » 2012-04-09 15:31 @688

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#lin 27
        ( my $in = <STDIN> ) =~ s/^\s+|\s+$//g;
#=~ s/^\s+|\s+$//g
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es el operador sustitución. Se buscan todos (g) los conjuntos de espacios (\s+) que están al principio (^) o (|) al final ($) de la cadena. Y esos conjuntos se sustituyen por nada (//). El efecto final es quitar los espacios en blanco que están delante y detrás de la cadena.

Más información en perldoc -f s, en perlop, en la sección Regexp Quote Like Operators (traducido).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#28
grep
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es la función de "filtrado". Dada una lista de valores en la parte derecha, es filtrada hacia la parte izquierda, según lo indique la condicional.

Más información en tu propio ordenador en perldoc -f grep, en perlfunc, y en la Web (traducido).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#103
if ( grep $in eq $_, 1 .. $w and $board[0][ --$in ] eq " " )
#eq $_
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es el operador de comparación de igualdad entre cadenas de caracteres. Está comparando el valor contenido en $in con el valor contenido en $_;

Más información en tu propio ordenador en perldoc perlop, en la sección Operadores de igualdad (Equality Operators) y en la Web (traducido).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#125
select undef, undef, undef, 0.04;
#undef
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
select() sirve para muchas cosas, pero en la línea que pones, es que Perl solicite una espera de 40 milisegundos al sistema operativo.

Más información en tu propio ordenador en perldoc -f select, y en la Web (traducido).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#143
  while ( ( $x -= $xdir * $_ ) >= 0
 #  -=
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
$x -= $xdir * $_;

es equivalente a

$x = $x - ($xdir * $_);

Más información en perlop, en la sección de operadores de asignación.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#166
if ( not grep $_ eq " ", map @$_, @board )
#map @$_
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
La función map{} "mapea" la lista de elementos que hay a la derecha hacia la izquierda, según lo que indique el primer argumento.

En este caso, está leyendo los elementos de @board, pasando uno por uno a través de $_, y como la expresión de map() es @$_ quiere decir que $_ es una referencia a un array, así que @$_ devuelve todos los elementos apuntados por $_ (el efecto final es recorrer una matriz de dos dimensiones, elemento a elemento). Cada elemento es pasado a grep(), en un nuevo $_, que pregunta si cada celda es igual a " ". Si no (not) es así, el if() se activa.

El resultado final es que el if() se dispara si hay al menos una celda en la matriz que es distinta de " ".

El código está demasiado comprimido. Si es tu primer proyecto, todo esto te estará liando demasiado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda para proyecto 4 en raya

Notapor Progra_GC » 2012-04-12 22:22 @973

Compañeros, ¿cómo creen que pueda hacer para pasar el código o 'juego' para jugar contra la PC? No sé, tal vez un método de random pero definiendo de un numero entre 1 a 8.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #-----------------------------
  2. $random = int( rand(10));
  3. print "$random\n";
  4. #-----------------------------
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Ahhmmm! No sé, algo para empezar. Por favor.
Avatar de Usuario
Progra_GC
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-26 10:50 @493
Ubicación: Costa Rica

Re: Ayuda para proyecto 4 en raya

Notapor explorer » 2012-04-13 04:22 @224

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $random = 1 + int(rand(10));
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Con esto el programa puede elegir una columna para poner la "ficha".

Otro tema es que el programa tenga "inteligencia". Y de menos a más... Ejemplo:

* buscar columna con tres fichas, colocar nuestra ganadora

* lo mismo para filas

* lo mismo para diagonales

* buscar filas donde hay dos o tres fichas del programa y tienen casillas libres a los lados. En ese caso, colocar la ficha en una de estas columnas libres

* "molestar" al jugador humanos en las formaciones de dos fichas seguidas suyas (evitar la formación de 3 seguidas)

* etcétera...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda para proyecto 4 en raya

Notapor Progra_GC » 2012-04-13 12:32 @563

He puesto, por ejemplo, el random en la línea 101 y línea 27 del código, sustituyendo el <STDIN> pero me quedaría igual para dos jugadores pero solo la PC no me deja intervenir.
Avatar de Usuario
Progra_GC
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-26 10:50 @493
Ubicación: Costa Rica

Re: Ayuda para proyecto 4 en raya

Notapor explorer » 2012-04-13 12:35 @566

No entiendo la pregunta... :( :?:
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda para proyecto 4 en raya

Notapor Progra_GC » 2012-04-14 12:24 @558

Bueno, cómo hago para jugar contra la PC, no importa si no se defiende, yo me encargaría de eso, pero ocupo saber dónde intervenir en el código para poner a jugar a la PC.
Avatar de Usuario
Progra_GC
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2012-03-26 10:50 @493
Ubicación: Costa Rica

Re: Ayuda para proyecto 4 en raya

Notapor explorer » 2012-04-14 12:51 @577

Supongo que en la fase de turnos.

Hay un turno para el jugador humano, y otro para la máquina... cada uno entra o elige una jugada, que ha de ser verificada si es legal, y comprobar luego si el juego ha terminado. Y si no, repetimos turnos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Proyectos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados