Академический Документы
Профессиональный Документы
Культура Документы
Inicio
Siendo al mismo tiempo un jugador maestro/contador de historias y un desarrollador, con
frecuencia me hallo escribiendo pequeñas herramientas útiles y scripts para ayudarme cuando
estoy ejecutando, jugando y planeando juegos. Algunas veces necesito una idea rápida. Otras
veces, simplemente necesito toda una pila de nombres para Non-Player Characters (NPCs).
Ocasionalmente, necesito idear números, trabajar en algunos contratiempos o integrar algunos
juegos de palabras a algún juego. Muchas de estas tareas se tornan más manejables con un poco
de trabajo de script adelantado.
Este artículo explorará 10 scripts fundamentales que pueden utilizarse en diferentes tipos de
juegos. El archivo de código contiene la fuente completa de cada script que trataremos, y usted
puede ver los scripts en acción en chaoticneutral.
Pasaremos por estos scripts bastante rápido. No cubriremos el tema de encontrar un host ni
de configurar un servidor. Hay muchas compañías de hospedaje Web que ofrecen PHP, y el
instalador XAMPP es fácil de usar si usted desea configurar el suyo propio. No emplearemos
mucho tiempo hablando sobre las mejores prácticas PHP ni sobre técnicas de diseño de juegos.
Estos scripts están diseñados para ser fáciles de entender, fáciles de usar y de uso rápido.
En muchos casos, eso sería más o menos suficiente. Pero cuando hablamos de juegos
de oportunidades, nos gustaría algo un poco mejor. PHP ofrece un generador aleatorio de
números mucho mejor: mt_rand(). Sin entrar en detalles sobre las diferencias entre los dos, es
seguro suponer que mt_rand es un generador aleatorio de números más rápido y mejor: echo
mt_rand(1,6);. Generalmente estaríamos más satisfechos si ponemos esto en una función.
echo roll();
Luego podemos pasar el tipo de dado que queremos lanzar como un parámetro para la función.
Desde aquí, podemos avanzar para lanzar múltiples dados al mismo tiempo, retornando
un conjunto de resultados, o lanzar múltiples dados de diferentes tipos al mismo tiempo,
dependiendo de nuestras necesidades. Pero este simple script puede usarse para la mayoría de
tareas.
$last = array(
"Smith",
"Jones",
"Winkler",
"Cooper",
"Cline",
);
Tomando este concepto básico, podemos crear archivos de texto para guardar nuestros nombres
y apellidos. Si ponemos un nombre por línea en nuestro archivo de texto, podemos separar
fácilmente el contenido del archivo en la línea de nuevo personaje para construir nuestros arrays
fuentes.
Construya o encuentre algunos buenos archivos de nombres (se incluyen algunos en el archivo
de código), y nunca más necesitaremos crear nombres.
Generador de escenarios
Tomando los mismos principios básicos que hemos usado para crear el generador de nombres,
podemos hacer lo que se llama un generador de escenarios. Esto es útil en los juegos de rol o en
otras situaciones en las que necesitemos producir un conjunto pseudoaleatorio de circunstancias
que puedan utilizarse para jugar un rol, improvisación, escritura, etc. Uno de mis juegos favoritos,
Paranoia, incluye algo llamado "mezclador de misiones" en su GM Pack. El mezclador de
misiones puede usarse para armar una misión tan rápido como lanzar un dado. Armemos nuestro
generador de escenarios.
Contemple el siguiente escenario: Usted se despierta perdido en el bosque. Usted sabe que debe
regresar a Nueva York, pero no sabe por qué. Usted puede oír perros ladrando y el inconfundible
sonido cercano de las hostiles personas que le buscan. Usted tiene frío, está temblando y está
desarmado. Cada frase en ese escenario presenta un aspecto específico del mismo:
shuffle($settings);
shuffle($objectives);
shuffle($antagonists);
shuffle($complications);
echo $settings[0] . ' ' . $objectives[0] . ' ' . $antagonists[0] . ' '
. $complications[0] . "<br />\n";
Podemos añadir elementos a nuestros escenarios agregando nuevos archivos de texto, o tal vez
deseemos agregar múltiples complicaciones. Entre más agreguemos a nuestros archivos de texto
base, más variados serán nuestros escenarios con el tiempo.
$faces = array (
"Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho",
"Nueve", "Diez", "J", "Q", "K", "As"
);
Luego construimos un arreglo de mazo que contenga todos los valores de las cartas. Podemos
hacer esto simplemente utilizando un par de bucles foreach .
Cuando tenemos construido el array del mazo, fácilmente podemos barajarlo y repartir una carta
al azar.
$card = array_shift($deck);
Desde aquí, hay un corto trayecto hacia repartir manos de un mismo número establecido de
cartas, o para crear un sabot de múltiples mazos.
Luego podemos analizar el mazo para ver cuántas cartas quedan y cuáles son las posibilidades
de repartir una carta específica. Saber cuántas cartas quedan es fácil. Es simplemente contar
cuántos elementos hay en el array $deck . Para obtener las posibilidades de repartir una carta
específica, necesitamos una función que analice todo el mazo y que evalúe las cartas restantes
para ver si coinciden.
Ahora podemos seleccionar la carta que estamos tratando de obtener. Para facilitar esto, pase un
array que se vea tal como una carta. Podemos buscar una carta específica.
Como se mostró en la sección anterior, genere y baraje un mazo y luego cree una mano simple
de cinco cartas. Muestre estas cartas por su índice del array para poder especificar cuáles
cartas devolver. Puede hacerlo usando recuadros de selección para señalar cuáles cartas va a
reemplazar.
Luego, evalúe la entrada array $_POST['card'] para saber cuáles cartas se han marcado para
ser reemplazadas.
Usando este script, usted puede ensayar su mano — valga la ironía — descubriendo las mejores
formas de manejar un conjunto de cartas específico.
Usando las técnicas cubiertas antes, podemos mover estas palabras hacia un archivo de texto
externo de lista de palabras e importarlas como queramos.
En cuanto tenemos la lista de palabras necesitamos seleccionar una al azar, mostrar un espacio
en blanco para cada letra y comenzar a recibir los intentos. Necesitamos llevar la cuenta de
los intentos correctos y fallidos, tras cada intento. Haremos eso sin complicarnos simplemente
serializando los arrays de intentos y pasándolos junto con cada intento. Si deseamos evitar que
las personas hagan trampa observando la página fuente, preferiríamos hacer algo un poco más
seguro.
Construir arrays que contengan nuestras letras y nuestros intentos correctos/errados. Para
intentos correctos, encontraríamos un array con las letras como teclas y los puntos como valores.
Ahora necesitamos un poco de código para evaluar los intentos y mostrar la palabra a medida que
avanza el juego de adivinarla.
} else {
$show = '';
$wrong[$guess] = $guess;
if (count($wrong) == 6) {
$show = $word;
} else {
foreach ($wordletters as $letter) {
$show .= $right[$letter];
}
}
}
En el archivo fuente podemos ver cómo serializar los arrays de intentos y pasarlos intento tras
intento.
Mad Libber
Mad Libs es un juego de palabras en el que el jugador toma una corta historia y reemplaza tipos
clave de palabras por palabras diferentes del mismo tipo, para crear una versión tonta de la
misma historia. Tome el siguiente texto: "Estaba caminando por el parque cuando encontré un
lago. Salté a él y tragué mucha agua. Tuve que ir al hospital". Comience reemplazando los tipos
de palabras con indicadores de palabras diferentes. Comience cada señal con una raya al piso
para evitar coincidencias accidentales de cadenas de caracteres.
Luego cree un par de listas de palabras básicas. Para este ejemplo, no lo haremos elaborado en
exceso.
Ahora podemos evaluar repetidamente el texto para reemplazar las señales según se necesite.
echo $text;
Obviamente, este es un ejemplo simple y rudimentario. Entre más precisas sean nuestras
listas de palabras, y entre más tiempo dediquemos a nuestro texto base, mejores resultados
obtendremos. Ya hemos utilizado archivos de texto para crear listas de nombres y listas de
palabras básicas. Usando el mismo principio, podemos crear listas de palabras separadas por tipo
y uso para crear Mad Libs más diversos.
Selector de lotería
Adivinar los seis números correctos en una lotería es, por decirlo de alguna forma,
estadísticamente improbable. A pesar de ello, muchas personas aún pagan por jugar, y si le
gustan los números, puede ser divertido ver las tendencias. Vamos a armar un script que nos
permita hacer seguimiento de los números ganadores y proporcionar los seis números menos
seleccionados de nuestra lista.
(Aviso de límite de responsabilidad: Esto no le ayudará a ganar la lotería, así que por favor no
gaste su dinero en los tiquetes. Esto sólo es por diversión.)
Guardamos los números ganadores de la lotería en un archivo de texto. Separamos los números
individuales con una coma y ponemos cada conjunto de números en su propia línea. Cuando
obtengamos el resultado del archivo, lo dividimos en líneas nuevas y separamos cada línea por
comas, para obtener algo que se ve como el Listado 23.
Obviamente, esto no es un muy buen archivo base para generar estadísticas. Pero es un
comienzo y lo suficiente para ilustrar los principios.
Establezca un array base para guardar el rango seleccionado. Por ejemplo, si seleccionamos
números del 1 al 40 (esto es, $numbers = array_fill(1,40,0);, luego analizamos nuestros
ganadores, incrementando los valores coincidentes apropiados.
Finalmente, ordenamos los números con base en el valor. Esto debe poner a los números que
menos han ganado al frente del array.
$pick = array_slice($numbers,0,6,true);
Al agregar regularmente números ganadores reales de la lotería al archivo de texto que contiene
nuestra lista de ganadores, podemos buscar una tendencia de los números seleccionados en el
largo plazo. Es interesante ver la frecuencia con que aparecen algunos números.
Resumen
Este artículo es un recurso para que usted dé un salto hacia el uso de PHP para ayudar a
enriquecer su experiencia de juego. En la Parte 2 (en inglés) de esta serie de "30 scripts de
juegos que usted puede escribir en PHP", construiremos el código que se encuentra aquí y
profundizaremos en scripts más complejos que le pueden beneficiar más.
Temas relacionados
• Getting started with XAMPP: XAMPP es una distribución Apache muy fácil d e instalar que
contiene MySQL, PHP y Perl.
• Observe ejemplos funcionales de todos los scripts.
• U.S. Census Bureau es una excelente fuente de listas de nombres.
• Obtenga algo de información sobre Paranoia.
• Aprenda las reglas básicas para Five-card draw.
• Aquí hay algunas listas de palabras útiles. Y ManyThings.org tiene aún más.
• Visite el sitio oficial Mad Libs.
• Apache V2 and PHP Installation: Lea un artículo sobre cómo obtener Apache V2 y PHP V4.x
(también puede usar PHP V5.x) trabajando conjuntamente en Linux.
• "Connecting PHP applications to Apache Derby" muestra cómo instalar y configurar PHP en
Windows (algunos pasos aplican para Linux).
• Lea "Learning PHP, Part 1" para aprender lo básico de PHP. Lea luego la Parte 2 para
aprender cómo cargar archivos a ubicaciones no accesibles por la Web, usando DOM y SAX.
Y la Parte 3 completa el flujo de trabajo de la aplicación.
• Consulte el Manual PHP para aprender más sobre los objetos de datos PHP y sus
capacidades.
• PHP.net es el recurso central para desarrolladores PHP.
• Consulte la "Recommended PHP reading list."
• Navegue por todo el contenido PHP en developerWorks.
• Expanda sus habilidades PHP consultando los recursos del proyecto PHP de IBM
developerWorks.
• ¿Usando una base de datos con PHP? Consulte Zend Core for IBM, un entorno HP para
desarrollo y producción, fácil de usar, de instalar y listo para usarse que soporta IBM DB2 V9.