¡Hola! Yo volviendo con PyGame. Una duda en plan teórica para empezar, porque mi problema tiene más de 50 líneas jaja, si veo que alguien me responde y necesita el código para entender lo subiré, supongo: Tengo una clase principal, y dentro de esta clase llamo a otras dos clases, llamadas jugador y enemigo. Primero llamo a la clase jugador, que solo contiene el módulo __init__, en el cuál está el temporizador de velocidad de movimiento y algunas variables. También hay un módulo de movimiento y otro de estado. En el módulo principal hay un while y un for que verifican si el personaje presiona alguna tecla, esto para el módulo de estados de la misma clase. En el módulo principal (__init__) también se llaman los otros dos módulos de la clase, movimiento y estado. En la clase Enemigo solo tengo el módulo __init__, en el cuál se declaran algunas variables así como un temporizador y se llama a el módulo Movimiento, en el cuál hay otro while que hace que el objeto se mueva de la izquierda a la derecha mediante unas iteraciones y un temporizador. El caso es que al momento de ejecutar se ejecuta bien, puedo mover al personaje, pero es como si no se ejecutara la clase de Enemigo puesto que el objeto no empieza a moverse, a pesar de ser llamado. Tengo la sospecha de que es por el ciclo de la primera clase llamada (la clase jugador) pero no estoy seguro y no sé como evitar esto. Esto me ha tenido dando vueltas la cabeza durante ya dos días, y no encuentro la solución.
Score: +0
2043. alfred,
Yo nunca me he visto en la necesidad de crear una clase dentro de otra. Mucha confusión me genera. Si he creado una función dentro de otra para las decoraciones.
Score: +0
2044. Symbian,
para @Qhay hay una cosa en el mundo de la Programación Orientada a Objetos que se llama herencia, consiste en que una clase (hija) hereda propiedades, atributos y/o funciones de otra clase (padre), tendrías que ver cómo funciona, no puedo darte más información pues no sé que lenguaje usas.
Score: +0
2045. CoachJos,
Entiendo tu problema, a mi me ocurrió algo similar con BGT, es justo lo que dijiste, el bucle de la clase jugador se está ejecutando y hasta que no termine de ejecutarse no se ejecutará el bucle de la clase enemigo. Mi solución fue utilizar un solo bucle para ambas clases, entonces en cada iteración del bucle se verifica si el jugador presionó alguna tecla pero también se llama a la clase enemigo para que ataque o realice determinadas acciones, con condiciones puedes decidir cuando hará cada acción. no sé si es la mejor opción pero a mi me funcionó.
Score: +0
2046. Qhay,
Gracias, @CoachJos: A decir la verdad, ya se me había ocurrido pero no quería hacerlo por tozudo y por intentar tener todo por independiente, es decir, que el Enemigo tuviera su bucle propio, y no quería mezclarlo con la clase Personaje. De todos modos, ya me impulsaste. Seguiré probando algunas veces, quizá logre hacerlo funcionar, pero no sé, sigue sin gustarme esto jajjaa.
Score: +0
2047. CoachJos,
No estoy seguro pero creo que en python puedes tener dos bucles corriendo al mismo tiempo con multi threads. o en español se conoce como multiprocesos. Investiga eso, te puede servir.
Score: +0
2048. alfred,
Puedes tener una clase principal, por ejemplo la clase Game. Esta se encarga de inicializar las clases que hagan falta y lanzar el bucle.
Score: +0
2049. Fluttershy,
hola, a alguien no le pasa que cuando usa el visual code. como que cuando ponen el nvda para que diga todas las letras que precionan, se queda como medio trabado. como si estuvieran usando el traductor. creo que avía un complemento, pero mi nvda no lo soporta, yo tengo la versión: 2020.4. alguien que sepa como arreglar eso, o que hacer. gracias xd
Score: +0
2050. Yares,
Hola. Acá yo con otra duda como siempre jaja. Para los que están avanzados con java script: ahún me cuesta aplicar la teoría de los callbacks a pesar de aver leído por todos lados como funciona. Entiendo que es para ejecutar una función después de que otra sea procesada. No se si entendí mal pero en js las funciones se ejecutan al mismo tiempo y eso en un prollecto grande no está bueno. Mi duda es: si yo quisiera representar un callback en unas simples funciones como estas cómo lo aría? function primero(){ console.log('Primer mensaje'); } function segundo(){ console.log('Segundo mensaje'); } ovbiamente la idea es que se ejecute primero la segunda función y si todo está bien luego pase a la primera
Score: +0
2051. Symbian,
una pregunta hay algún método para ocultar elementos html a la vista de los lectores de pantalla (preferentemente sin usar JavaScript)?
Score: +0
2052. sol-dorado,
Css, pero ahí se ocultaría a la parte visual.
Score: +0
2053. Symbian,
leí en otros sitios algo de aria-hidden, pero suponía que eso aplicaba solo a botones o controles similares. Por otro lado, no quiero tampoco ocultar la parte visual, no vaya a ser que me cargue la página.
Score: +0
2054. CoachJos,
si con el atributo aria-hidden="true" lo ocultas para los lectores de pantalla. No es recomendable porque puede generar problemas de accesibilidad.
Score: +0
2055. Dherhion,
si quieres ocultar algo para lectores de pantallas y no visualmente, estás generando un problema de accesibilidad.
Score: +0
2056. Symbian,
si pretendo ocultar un elemento es porque considero que de alguna forma entorpece la navegación, y no quiero eliminarlo visualmente. Sé que no es la mejor opción pero, o eso o altero por completo la página.
Score: +0
2057. Dherhion,
En ese caso, elimínalo del dom, hombre.
Score: +0
2058. Symbian,
si lo borro del DOM, tal vez me cargue algo de la apariencia visual. Habría que meter entonces algo de código css de por medio.
Score: +0
2059. Dherhion,
Depende. si el código css está bien hecho, no debería romperse nada.
Score: +0
2060. isacelite10 ,
luego de andar estudiando con autoit logre crear algo simple,almenos eso creo yo una calculadora. y no ya me las ingenie para crear todo yo mismo,porque como comentava anteriormente. de nada sirve leer practicar y estudiar. cuando tienes algo a la vista para copiar y no,de el archivo que pasaron solo tome la carpeta claces. programas y ejercicios a la papelera de resiclaje
Score: +0
2061. James_Potter,
Buenas. hoy, en mi estar al pedo, se me dio por instalar python en la mac. qué onda con los editores? qué es lo mas piola para usar ahí. no creo keynote funcione para eso jajajajaja.
Score: +0
2062. nicolae-guta,
pues... vs code
Score: +0
2063. alfred,
Notepad++, eclipse y vscode son los más accesibles.
Score: +0
2064. fruitsec,
coteditor también podría funcionar. Nunca descartemos a text edit, que es el que ya viene con el sistema.
Score: +0
2065. nicolae-guta,
no, por que text edit no te deja quitarle la extensión.
Score: +0
2066. fruitsec,
Hay que entrar en las preferencias con comando coma, como en todos los programas. Yo sí que he podido guardar en formato de texto plano y con extensiones que no fueran txt.
Score: +0
2067. LaNenaPreciosaDeUlises,
holaa se que ya e posteado varias veces por acá pero alguien me podría decir como instalar java y eclipce por favor?. por que lo e intentado varias vese pero no me sale
Score: +0
2068. Rayo,
para instalar java, ocupas el jdk, y eclipse no es un isntalador, es un portable, si no recuerdo mal.
Score: +0
2069. Symbian,
luego configurar las variables de entorno de java, agregando la ruta al path. Era algo como ir a panel de control, buscar sistema y ahí propiedades o así, buscar las variables de entorno, buscar la variable path, modificarla y agregarle lo siguente: ;%ruta donde está Java%\bin Respecto al eclipse, el instalador es inaccesible, debes usar el portable.
Score: +0
2070. el_helado_que_muerde,
No sé si preguntar esto acá o en el hilo de nvda, pero bueno, vamos acá. Resulta que el nvda no me lee los resultados de scrip en pyton. Lo de más si se lee Por ejemplo hago un print(“ hola mundo”) guardo ese scrip, lo abro, se abre la consola, pero cuando se abre no me lee el resultado del scrip, no me lee el hola mundo, también lo hice poniendo mal la sintaxis pero tampoco lee el error. Solo se abre, se cierra y ya está. Usé el Speech history para copiar el texto que aparecía en la consola cuando se abría y se serraba, y nope, efectivamente el nvda no lo leía. Probé con narrador y este sí, lo leía. Si ponía print(“hola mundo”) me leía el hola mundo cuando se mostraba el resultado en la consola. En cambio con el nvda no. Espero no a verme hecho un lío explicando xd :datos. tengo versión 2021.3.5, probé a reinstalarlo limpiamente y nada nada