Tutoriales no image

Publicado el 21-08-2005 | por admin

Programación de juegos en Python – Tutorial 1

En este tutorial vamos a tomar contacto con el lenguaje python, y hacer un jueguecito muy simple en modo consola.

El objetivo es que nos familiaricemos con el lenguaje y veamos el sistema de la mayoria de los juegos, esto es:
procesar -> mostrar -> interactuar -> procesar ….

La idea del juego es que el ordenador elije un numero y nosotros tenemos que adivinarlo en menos de los intentos que le digamos.
El ordenador nos dará pistas de si nuestro numero es mayor o menor que el secreto.

Como veis, es muy simple, apenas 20 lineas …

Podeis descargaros el código fuente de aquí: Código fuente tutorial 1


IMPORTAR LIBRERIAS
El primer paso es importar las librerias (o bibliotecas) que vayamos a necesitar, en este caso usaremos la libreria random, que nos da la posibilidad de generar números aleatorios (esto es una de las bases de los juegos, los números aleatorios, ya hablaremos de las semillas, y que no son tan «aleatorios» como parecen más adelante).
Esto se hace con la siguiente instrucción:

import random

Las sentencias acaban tal cual, nada de puntos y comas al final. (A los que vengan de otros lenguajes les costará acostumbrarse a esto).


LA FUNCIÓN MAIN
Para ser clásicos y ordenados, crearemos una función main, que es la principal del programa, la que realizará todas las tareas.
Es conveniente acostumbrarse a trabajar con funciones, para tener mas abstracción, esto es, dividir el problema grande en problemas más pequeños (divide y vencerás).

En este juego solo vamos a usar la función principal (main).

Las funciones se definen de la siguiente manera:

def main():
    # Esta es la funcion principal

#Esto no está dentro de la funcion principal
if __name__ == '__main__': main()

Aquí viene una de las carácteristicas de python, y es que no usa llaves para englobar, usa código sangrado.
Así definimos la función con def, luego el nombre de la funcion, despues dos puntos, y todo lo que esté sangrado pertenecerá a la función.

Todo lo que empiece por almuadilla (#) será interpretado como comentario y no vale más que para informar a quién lo lea.

La ultima instrucción es un truco para que se ejecute el main si todo va bien.


EMPEZAMOS EL DESARROLLO
Dentro de la función main, cambiamos el comentario por el siguiente código:

def main():

    numero_secreto = random.randint(1, 60)
    print "nTienes que adivinar un numero !!!!nEn cuantos intentos crees que lo conseguiras?"
    intentos = input("Introduce numero de intentos: ")
    print "Bien asi que lo haras antes de ", intentos, " intentos ...nA ver si es verdad !!n"
    acertado = 0
    cont=1

En la primera instrucción generamos un número aleatorio y entero entre 1 y 60 y lo guardamos en la variable numero_secreto.

Informamos al usuario mediante la función print. Todo lo que vaya entre comillas aparecera en pantalla, y el retorno de carro es n.

En la tercera instrucción le pedimos al usuario que nos de el número de intentos que tendrá y lo guardamos en la variable intentos.
NOTA: no pongais ningún caracter de salto de linea en la función input, o no funcionará.

Por último mostramos al usuario el numero de intentos y lo retamos a jugar.
Cabe destacar que para mostrar una varible en la funcion print hay que separar por comas la función.

La función print es mucho, pero muho más completa de lo que parece, al igual que input y su hermana gemela raw_input, estaría bién echarles un ojo …

Por último decimos que aún no lo ha acertado (acertado=0) y que va a realizar el primer intento (cont=1)


EL BUCLE PRINCIPAL
Este es el nucleo del juego, donde se realiza lo principal, vamos a ver el código:

while (not acertado and cont< =intentos):     print "nIntento numero ", cont     num_user = input("Introduce un numero (entre 1 y 60): ")     if(num_user == numero_secreto):
        acertado=1
        break
    elif(num_user > numero_secreto):
        print "nEl numero secreto es MENOR que " , num_user
    elif(num_user < numero_secreto):         print "nEl numero secreto es MAYOR que " , num_user
    cont = cont + 1

Es un bucle while, que significa «mientras», en este caso su tradución sería:
Mientras no lo haya acertado y el numero de intentos sea menor o igual a los que dijo, haz …

Y se repetirá una y otra vez hasta que pase alguna de las condiciones de salida.

Luego se informa al usuario de los intentos que lleva y le pedimos un nuevo número.

Ahora comparamos el número que nos ha dado con el secreto mediante la sentencia if (que se traduce como: SI «condicion», haz …).
Si ha adivinado el número marcamos que ha acertado y utilizamos la sentencia break, que se encarga de parar el bucle que la contiene y salir (en este caso no haría falta, pero es necesario conocerla para evitar los «bucles infinitos sin control»).
La siguiente sentencia solo se ejecuta si no es correcta la de arriba, asi, si no es el numero secreto, miro si es mayor, y si lo es informo al usuario, sino, miro si es menor (aunque por lógica no haga falta) he informo al usuario.

Por último aumento el numero de intentos.
Y volveriamos al while … mostrar -> interactuar -> procesar -> mostrar …


GAME OVER
Si ha salido del bucle puede ser por dos motivos, que haya acertado el número, o que se le hayan acabado los intentos, vamos a ver cómo sabemos que ha ocurrido …


if(acertado):
    print "nGUUAAAUUU !!!! Lo acertaste !!!nn El numero secreto era " , numero_secreto
    print "nn Gracias por jugar !!!"
else:
    print "nOOOOHHHHHH !!!! Lo siento, pero NO has acertado ...nEl numero secreto era " , numero_secreto
    print "nn Gracias por jugar !!!"

Simple, miramos si ha acertado, y si es asi, mostramos mensaje de ganador, sino, mensaje de perdedor.


NOTAS FINALES
Para los que ya hayan programado les habrá parecido muy simple, muy básico, pero era necesario un juego en consola para acostumbrarnos un poco a python, pero ya no habrá más juegos por consola, los siguientes seran en sdl (pygame).

ESTE JUEGO NO ESTA TERMINADO …
Si quereis practicar un poco mientras salen nuevos tutoriales, podeis probar las siguientes mejoras:

– Cuando se acaba el juego, el jugador podría querer volver a jugar, ¿podrias solucionar eso?
– Como todo programa informático, este script tiene bugs, y uno de ellos es que si en vez de insertar un número, introducimos una cadena (tu nombre, por ejemplo) el programa peta (petar es que no va, que se rompe). ¿Podrias solucionar esto? ( Vendría bién mirar la función type() … quizas te sirva de algo).


Como siempre, cualquier error, corrección y mejora serán bienvenidos.


Sobre el autor



46 respuestas a Programación de juegos en Python – Tutorial 1

  1. Pingback: moeblog

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Back to Top ↑