sábado, 9 de julio de 2011

Video Juegos en Python: La Culebra

La Culebra

Autor: José Miguel Medina, sección B

Descripción del Juego:
Versión del juego LA CULEBRITA, muy parecido al realizado por el profesor. Este que le presento es muy parecido a versiones ya existentes, pero con una nueva versión y modificación. Consiste en comer el Objetivo y acumular puntos y a la vez aumentar de tamaño, no debe chocar de los bordes porque muere.
 INSTRUCCIONES DEL JUEGO:

 (El juego esta codificado en Python 2.4.1 para Win32 y Pygame 1.9 para Win32)
Debe contener los siguientes archivos:
Modulo Inicio (Realiza el enlace y llamado al modulo de juego o Nivel Principal “Doble clic a este nivel” para hacer el llamado)
Modulo Nivel (Nivel de Juego, contiene indicaciones para ingresar al juego o en su defecto abandonarlo)
Archivo Fuego (Este archivo es para las colisiones con los bordes de la ventana de juego en caso de perder)

REQUERIMIENTOS DE SOFTWARE:
Python 2.4.1 Win32
Py2.4.exe
WxPython 2.6.0.0(ansi) For Python 2.4.1
Pyreadline-1.6.2
Descargar en:
www.python.org/getit/

Pygame 1.9 Win32
Pygame-1.9.1release.win32-py2.4.exe
Descargar en:
www.pygame.org


Como de costumbre, las observaciones, preguntas y comentarios sobre este video juego se colocarán como comentarios a este post (ver infra).

21 comentarios:

  1. Como en el video juego anterior, para poder correr este juego tuve que prefijar los scripts con el consabido:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    Entiendo que aparentemente esto de la codificación utf no es un problema en guindou$ (?). En tal caso, supongo que este prefijo sería inofensivo al correr el script en guin. Alguien que me corrija si estoy equivocado. La línea del primer comentario indica que como ejecutable, necesita el interprete python que se encuentra en /usr/bin/env. Dicha ubicación naturalmente variaría en güindous.

    Observo que la indentación en el script es de un espacio (caracter #32 ascii) por cada nivel de anidamiento. En lo particular, esto me dificulta la lectura del script. ¿Sería posible que editaras el script para utilizar el tabulador (caracter ascii #09 si no me equivoco) en vez del espacio? Lean mi entrada sobre "La Estetica de Python".

    Por lo demás, el programa corrió a la perfección en Geany (usando Ubuntu aquí). No pude correrlo en el IDLE. Luego te estaré haciendo preguntas sobre el juego en sí...

    ResponderEliminar
  2. Buenas noches jose Miguel, tu presentas una version propia de snake un cuego que sus reglas son conocidas por muchos, realmente solo lo he probado, no he observado el codigo. La pregunta es continuaras mejorando la funcionalidad del juego, anexaras alguna especie de obstaculos o regalas nuevas?

    detalle que observe: el objetivo, bocadillo o el cuadro rojo que el "gusano" tiene que "comer" no siempre toma ubicaciones que puede ser posible tomarla. ejemplo, en cualquiera de las esquinas, ya por la velocidad de reaccion de la "culebra", es imposible poder tomar el bocadillo y continuar. Es obligatorio perder.

    Es todo Jose Miguel. Saludos.

    ResponderEliminar
  3. Hola habib como estas? si de hecho no es una version original propiamente mia he tomado ideas de otros programadores y internet me ha ayudado mucho, pienso que me falta mucho por aprender de python, en cuanto a tus preguntas he pensado si el tiempo me lo permite en realizarle otro nivel al juego he pensado en un nuevo modulo o nivel de avance que pudiera ser activado una vez haya alcanzado cierto puntaje acumulado en el nivel actual, pudiendo existir unos obstáculos aleatorios. En cuanto al bocadillo su ubicación es aleatoria (from random import randint),para ser comido debe tocarse exactamente centrando la culebra al punto o bocadillo (tamano=[22,22]) pudiendo ser modificada si lo deseas, también puedes modificar la velocidad o movimiento de la culebra. Esta codificación la puedes observar en el modulo llamado nivel (el cual yo considero como nivel I)

    ResponderEliminar
  4. Buenas tardes, Jose Miguel, el juego esta algo adictivo, gracias por responder, el unico detalle hasta los momentos como te dije, es que cuando el cuadra se ubique aleatoriamente en una de las 4 esquinas. me obligas a perder, jaja.

    Respetando la pregunta de mi compa;ero Richard, el tiempo.tick() de la linea 125, debe ser mas elevado, para ahorrar un poco mas el tiempo de el jugador.

    Saludos.

    Grupo MundoLibO.

    ResponderEliminar
  5. Buenas tardes Jose Miguel, gracias por responder.

    Realmente el juego esta adictivo, gracias por la aclaratoria, como te dije el unico problema, es si el cuadro se ubica aleatoriamente en cualquiera de las esquinas.

    Respetando la pregunta anterior de mi compa;ero, creo que el segundo tiempo.tick() en la linea 125, deberias de aumentarlo, para que el jugador no pierda tanto tiempo mientras inicie la nueva ronda de juego.

    Saludos Jose.

    ResponderEliminar
  6. Hola.! Al correr el programa principal del juego me aparece una instrucción que haga click para ingresar a jugar pero presente un pequeño problemita al clickear ya que si hago click en “Aqui” no puedo ingresar al juego solo da la opción para entrar al juego clickeando en “Click”, eso a que se debe? No debería poder hacer click en cualquier parte de la frase “CIick aquí ”?
    Otra cosita mas, cuando ya pude entrar al juego y estaba jugando pude notar que solo sumo punto si la culebrita engloba la parte total del cuadradito si lo hago solo por la mitad o me falta un poco para completar el cuadrito no acumulo puntos, porque?? Rosmauris Carrasquel

    ResponderEliminar
  7. Hola Richard saludos, puedes hacer todas las modificaciones que desees, para eso estamos para que aprendamos uno de los otros y gracias por tu sugerencia y la verdad funciona mejor asi con tus modificaciones.
    tiempo.tick() Oye en cuanto a tus preguntas El de la línea 116 es un argumento de codificación que va muy relacionado con el desplazamiento por cuadro calculado en milisegundos de dicho desplazamiento. Esto es muy utilizado para limitar o aumentar la velocidad de ejecución del juego y el programa estara ejecutándose a la cantidad de cuadros por segundo al indicado en el argumento o codificación.

    Correspondiente a la línea 125 es para la duración en milisegundos en el momento de las colisiones o muerte del juego.

    ResponderEliminar
  8. Hola habib gracias por tu sugerencia y tienes toda la razon lo puedo modificar aumentandolo y el tiempo de colision seria menor. ¿oye he tratado de ver tu juego y se me ha hecho dificil? debido a que ingreso al blog indicado por ti y me realiza varios llamados de links y nunca al de descargar el juego. me gustaria verlo ya que se ve bastante interesante

    ResponderEliminar
  9. Hola Rosmauris Eso se debe a que, bueno yo denomine la palabra “Clic” como una etiqueta y para mi es la etiqueta numero 5 y está relacionada con una variable que denomine variable 13 donde se devuelve un nuevo objeto font que es cargado desde la fuente (Letras) del sistema y a su vez esta fuente está ligada con un valor lógico y todo eso está conexo con un evento de dar clic a esa etiqueta que yo definí con la variable clicmouse. Eso de definir la etiqueta como la número 5 es algo netamente personal de cada quien tu le puedes decir como tu lo desees yo lo asocio a la palabra label de otros lenguajes de programación por eso le digo etiqueta.

    En cuanto a tu otra pregunta debes tratar de centrar la culebrita con el objetivo para que queden totalmente alineados y lo puedas comer o puedes modificar el código (Del modulo nivel) en cuanto al movimiento, tamaño del objetivo y tiempo de desplazamiento por cuadros de la culebrita estas últimas son sugerencias hechas por los muchachos Richard y habib

    movimiento=20
    tamano=[22,22] #Tamaño del Punto (comida) y de la Culebrita
    for i in culebrita_lista:
    pygame.draw.rect(pantalla,(0,255,0),Rect(i,tamano))
    pygame.display.flip()
    tiempo.tick(8) # Linea 116

    if muerte==1:
    explosiones(20,20)#Explosiones
    for i in xrange(7):
    pantalla.blit(b[j],(culebritaxy[0],culebritaxy[1]))
    update()
    pygame.display.update()
    tiempo.tick(10) #linea 125

    ResponderEliminar
  10. Buenas noches Jose Miguel.

    Gracias por la anterior respuesta, ahora en cuanto a tu ultimo comentario, dices que no has podido descargar el juego, dirigete al siguiente enlace:

    https://sourceforge.net/projects/mundolibo/files/MundoLibO.zip/download

    Esperas 5 segundos y debería de aparecerte en el navegador una ventana para descargarlo, De todas formas si sigues teniendo problemas en descargarlo avisa para trabajar en ello.

    Saludos Jose Miguel.

    Grupo MundoLibO,

    ResponderEliminar
  11. Hola chico soy Diana Mendoza de la sección B descargue tu juego pero no puedo ejecutarlo no se que pueda estar pasando, tengo los tres módulos que subiste el modulo inicio, el modulo nivel y el archivo fuego. Corro el inicio.py me aparece la ventana donde indica q presione S para iniciar y Q para salir, presiono S y me manda a la ventana de “clic aquí” para ingresar hago clic y no me hace ninguna función.

    ResponderEliminar
  12. Hola, soy Jocabed Garcia, mi compañero ya se adelanto en lo que te iba a decir, era sobre la culebrita que no se come el objetivo al menos que este exactamente sobre el. espero que el tiempo te de para que no solo t quedes alli, hasta podrias colocarle imagenes.. :P SHALOM

    ResponderEliminar
  13. Hola Diana, acabo de verificarlo y funciona perfectamente, trata de hacer clic exactamente en la palabra que dice "Clic" y no en otro lado de la etiqueta, de todas forma puedes leer el comentario que le realice a Rousmauris y alli lo explico mas detalladamente

    ResponderEliminar
  14. Hola Jacabel gracias por tu deseo, en cuanto a tu pregunta si es cierto ya los chic@s me han comentado que hay cierto problema para tomar el objetivo, debido a que debe estar alineado la culebrita con el objetivo para poder tomarlo. eso se podria corriger modificando velocidad, tiempo de juego y tamaño del objetivo en el modulo llamado nivel

    movimiento=20
    tamano=[22,22] #Tamaño del Punto (comida) y de la Culebrita
    for i in culebrita_lista:
    pygame.draw.rect(pantalla,(0,255,0),Rect(i,tamano))
    pygame.display.flip()
    tiempo.tick(8) # Linea 116

    if muerte==1:
    explosiones(20,20)#Explosiones
    for i in xrange(7):
    pantalla.blit(b[j],(culebritaxy[0],culebritaxy[1]))
    update()
    pygame.display.update()
    tiempo.tick(10) #linea 125

    ResponderEliminar
  15. ok, eso si lo entiendo perfectamente, gracias..
    :P ah y soy Jocabed jejeje no Jacabel :P

    ResponderEliminar
  16. chicos este es mi link el de antes ya no,... ahora es este...
    http://sourceforge.net/projects/sanson/files/

    ResponderEliminar
  17. Hola Jose Miguel te felicito por tu juego, aunque estabas solo lo puediste lograr,

    Comerse el objetivo significa que hay que entrar justo en el recuadro rojo que es el objetivo en cuanto a los que otros ven como un problema y te han dado tips para solucionarlo yo lo veo como lo novedoso del juego que hay que ingeniarselas e insistir para quedar en el recuadro y asi poder comernos el objetivo. Pero bueno es cuestion de gustos, igual te felicito otra vez..!!!:)

    ResponderEliminar
  18. NAICELIS PULIDO:

    Yo respaldo la opinion de Marilin... Me gusto tu juego... Me entretuve tratando de cuadrar la culebrita para comerme el objetivo!! Bien Hecho...

    ResponderEliminar
  19. BÁRBARA LEOTA.

    Buenas noches. José Miguel, te felicito por tu juego, se que te esforzarte por dar lo mejor de ti. Tu juego esta bien elaborado.

    ResponderEliminar
  20. (javier arcia)
    Oye miguel de verdad me gustaron los efectos adaptados en el juego, aunque no puedo descargar el actualizado para ver si has corregido algunas cosas que note en la ejecución del movimiento de la serpiente.

    ResponderEliminar
  21. (javier arcia)
    oye una pregunta como hiciste para que la serpiente al colision con las paredes?, por que la serpi esta a una velocidad demaciada rapida? de ese modo no se puede interactuar de manera rapida al momento de jugarlo.

    ResponderEliminar