Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Menú Mostrar Mensajes

Mensajes - dixon

#1
General / Re:Scripts de otros lenguajes.
Ayer a las 03:44:00 AM
Hola buenas noches. :P

Aqui les dejaré el código javaScript que sirve para agregarle a nuestros juegos HTML5 un boton de "full screen" bastante ajustado.


/////FUNCIÓN PANTALLA COMPLETA VERSIÓN 2:
//Solo deben copiar y pegar el siguiente código en su index.html, al final de la página, por encima de la etiqueta </body>
<!----_Boton full screen--------->
        <div id="full_screen_button"></div>
        <style>
        #full_screen_button{background: transparent; width: 5vw;height: 5vw;position: absolute;text-align: center;top: 5px;right: 5px;border: 2px solid white;border-radius: 5px;}
        </style>
        <script>
        color = "blue";
        full_screen_button = document.getElementById("full_screen_button");
        full_screen_button.style.border="2px solid "+color;
        function ajustar_full_screen(){var medida = 2*window.innerWidth/100;if(medida<32){medida=32};if(window.innerWidth<window.innerHeight){medida = 2*window.innerHeight/100; if(medida<64){medida=64}} ;full_screen_button.style.width = medida+"px";full_screen_button.style.height = medida+"px";full_screen_button.style.fontSize = medida/1.5+"px";}
        ajustar_full_screen();
        window.addEventListener("resize", function(){ajustar_full_screen()})
        var touchDevice = ('ontouchstart' in document.documentElement);
        if(touchDevice){full_screen_button.addEventListener("touchstart", function(){toggleFullScreen()},false);}else{
        full_screen_button.addEventListener("mousedown", function(){toggleFullScreen()},false);}
        function toggleFullScreen() {
                if ((document.fullScreenElement && document.fullScreenElement !== null) ||  
                (!document.mozFullScreen && !document.webkitIsFullScreen)) {
                if (document.documentElement.requestFullScreen) {
                document.documentElement.requestFullScreen();
                    } else if (document.documentElement.mozRequestFullScreen) {
                document.documentElement.mozRequestFullScreen();
                } else if (document.documentElement.webkitRequestFullScreen) {
                document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
                }
                } else {
                if (document.cancelFullScreen) {
                document.cancelFullScreen();
                } else if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen();
                } else if (document.webkitCancelFullScreen) {
                document.webkitCancelFullScreen();
            }}}
        </script>

Solo hay que copiarlo y pegarlo en nuestro index.html sobre la etiqueta "</body>".

Parece un código sencillo de conseguir pero realmente me ha costado mucho tiempo crearlo y lo llevo puliendo desde hace mucho tiempo. Realmente no se conseguirá en ninguna parte de la web, solo aquí y en mi repositorio de Github. El simple hecho de que funcione en pantallas táctiles y pc me costó un mundo. :'(

Este es el repositorio:
https://github.com/ReyesDavila/full_screen_javaScript/blob/main/script_full_screen

Recuedo que nuestro compañero Marth necesitaba uno para un juego html5 pero en ese entonces no tenia muy claro como crear un boton adecuado.

bye. :)
#2
General / Re:Html, Css y JavaScript
Diciembre 05, 2022, 02:41:48 AM
Hola buenas noches. :-[

Mejoré la compatibilidad del visor de partículas, ahora funciona en dispositivos de bajo rendimiento.
Nota: las versiones viejas de google chrome y otros exploradores no reconocen la declaración de clases por tanto me tuve que encontrar un script que me sirviera para crear objetos según un modelo sin emplear "clases javascript" y es este:
//Para crear objetos a partir de objeto modelo sin usar clases.
list_objects = []
function instance_create(object_model){
                var object = JSON.parse(JSON.stringify(object_model))
                object.index = list_objects.length;
                list_objects.push(object);
                return object.element
            }

Este es la versión actualizada del sistema visor de partículas:
http://estudiosistemas.infinityfreeapp.com/Dixon/web/javaScript/particulas/

Probé este sistema en un dispositivo móvil viejo de bajo rendimiento y me sorprendieron los resultados. El dispositivo puede dibujar unas 1000 particulas sin problema (recordemos que cada particula representa un objeto en un video juego), en cambio al probarlo con el juego "euforia"(creado con game maker) corre demasiado lento. Eso me indica que game maker consume muchos recursos.
Me hurge ahora profundizar en la creación de juegos html5 puros con JavaScript y abandonar gradualmente a game maker :'( .
Estoy sorprendido de verdad, la calidad de juegos que se pueden crear es muy elevada y lo mejor de todo es el rendimiento.
¡Se han abierto nuevas puertas!, de eso se trata la expresión "reinventar la rueda" o volver a los orígenes para encontrar secretos ocultos. Es un trabajo duro pero siempre trae recompensas.


Bye.
:)
#3
Hola saludos a todos. :D


En esto estoy trabajando actualmente y estoy contento con los resultados.

Esta es la práctica del game pad html5 para móviles (probar desde un móvil), este presenta fallas con el multi touch.
http://estudiosistemas.infinityfreeapp.com/Dixon/practicas/gamepad/


Este es el Multi_touch html5 para móviles (probar desde un móvil)
http://estudiosistemas.infinityfreeapp.com/Dixon/practicas/Multi_touch_movil/index_0.html

Ahora tengo que unir ambos sistemas para mejorar el joystick tactil.

Me conviene hacer un tutorial en youtube para explicar cómo se hace esto. En youtube y en varias webs hay tutoriales pero me parecen muy dificultosos, por eso quiero crear uno que explique de manera fácil como crear este tipo de joystick.

Luego de unir ambos sistemas tengo que aprender a "emular un gamepad" y si lo logro, la implementación será increible ya que los programadores de juegos solo tendrán que copiar y pegar el codigo para que sus juegos html5 adquieran el gamepad virtual y puedan jugarse efectivamente en cualquier dispositivo, movil o pc.

 XD

#4
Hola, saludos a todos, espero que tengan un buen d�a.

El joystick táctil o gamepad táctil html5 sigue en proceso, diariamente estoy programando sobre este sistema, en el proceso he aprendido muchas cosas sobre javascript y la compatibilidad con móviles antiguos. El reto es crear un gamepad táctil que funcione tanto en dispositivos viejos como en los nuevos.
Tengo un reto enorme y no es muy fácil de explicar por tanto daré varias explicaciones de lo que quiero conseguir:
Primero voy hablar de las palabras que usaré:
A.   GamePad fÃ�sico: Son los controles de video juegos que compramos y conectamos al pc para jugar, normalmente son de puerto USB.
B.   GamePad táctil: Es la herramienta virtual o el conjunto de botones digitales que sirven para jugar, los cuales aparecen sobre el juego y se usan en pantallas táctiles.
C.   Señal: Es la señal que envÃ�a un gamepad fÃ�sico a game maker para que el jugador pueda interactuar con el juego.
Lo que necesito lograr (explicado de varias formas):
1.   Simular que un joystick ha sido conectado, sin conectar uno real.
2.   Emplear javascript para que simule las señales del gamepad.
3.   Emplear javascript para que el gamepad táctil envie señales como si fuera game pad fÃ�sico.
4.   Hacerle creer a game maker que un joystick o gamepad ha sido conectado.
Si logro esto será muy fácil implementar el joystick, cuestión de copiar y pegar, funcionar�a en cualquier juego html5 y de cualquier motor de video juegos. Los programadores solo tendrán que crear juegos donde se interactúe con gamepad y al finalizar podr�an integrarle el gamepad táctil tan solo copiando y pegando el código en el archivo index.html.
Si no puedo conseguir eso, tengo otras alternativas menos prácticas, es decir tendr�a que simular la presión de teclado mediante el gamepad táctil e interactuar con game maker de ese modo creando un script especial que interprete las señales. No es muy agradable pero es lo que me aquedar�a.

bye.
#5
Hola, gusto en saludarlos.

Solo quería mostrarles el joystick táctil que estoy diseñando.
Joystick_html5

Funciona en pc y móviles. este es el repositorio que contiene todo el código:
https://github.com/ReyesDavila/joystick_html5

Ahora bien, ¿qué metodos se pudiesen aplicar para que game maker reciba el estado de un joystick virtual creado con javascript?

Realmente se puede implementar este tipo de joystick virtual en juegos html5 de game maker, pero el método que conozco es un poco fastidioso y no muy amigable, por eso me estoy ideando otro método más sencillo para que todos podamos implementarlo con solo copiar y pegar.

Requiero un gamepad(control de juego) para poder crear un script completo que controle el teclado, pantallas táctiles y los posibles gamepad. Es decir que el diseñador del juego solo tenga que copiar el código para que todas las interfaces mencionadas estén disponibles para los posibles jugadores.


bye
0923









#6
General / Re:Scripts de otros lenguajes.
Noviembre 23, 2022, 02:24:00 AM
Hola buenas noches.

Aqui voy a dejar un codigo javaScript muy basico pero que considero importante para crear juegos y aplicasiones Web. En mi caso lo voy a usar de base para crear un joystick tipo palanca para un juego html5.

//Para obtener la posicion X y Y de un elemento html
//esto devuelve un objeto con posiciones X y Y
//Ejemplo:
//var objeto = posicion(id_elemento)
//var objeto_x = objeto.x
//var objeto_y = objeto.y
function posicion(id_elemento)
{
elem = document.getElementById(id_elemento); 
return elem.getBoundingClientRect();
}

//Para obtener la posicion del mouse en la página.
//las variables mouse_x y mouse_y almacenarán la posición del mouse.
mouse_x = 0
mouse_y = 0
document.addEventListener("mousemove", mouseMoveHandler, false);
function mouseMoveHandler(e)
{
mouse_x = e.clientX
mouse_y = e.clientY
}

//Para detectar que se ha cambiado el alto y/o el ancho de la ventana
window.addEventListener("resize",ajustar_todo);
function ajustar_todo(){
//aqu� va el código que se empleará para ajustar todo
alert("ajustando")
}

//Para la ejecucion constante de código o para crear un ciclo.
setInterval(function x(){ejecucionConstante()}, 1000/30);
function ejecucionConstante(){
//aqu� va el código que necesita ser ejecutado frecuentemente.
}
#7
Juegos completos / Re:Euforia
Noviembre 22, 2022, 11:59:15 AM
#8
Juegos completos / Euforia
Noviembre 22, 2022, 04:50:43 AM
#9
General / Re:Crear un motor.
Noviembre 19, 2022, 01:30:14 AM


Hoy quiero reconocer que no estoy listo para crear el mini motor de juegos pero de igual manera voy a seguir adelante porque en estos pocos d�as que llevo con ese proyecto he logrado detectar algunas fallas que tengo como programador y voy a nombrarlas:

1.   Me falta estudio: no he cursado carrera informática, los conocimientos lo he adquirido empÃ�ricamente y aunque puedo enfrentar códigos desconocidos, me falta estudiar más teorÃ�as para quizás buscar soluciones de manera más eficientes.
2.   No sé pseudocódigo: desde mi vaga experiencia en pseudocódigo este puede servir para diseñar los sistemas antes de iniciar la programación, esto facilitarÃ�a el proceso de creación.
3.   No sé diagrama de flujo: El diagrama a mi parecer permite la comprensión de procesos, mediante el uso de gráficos, esto me pudiese servir para poder entender códigos difÃ�ciles.
4.   Falta de disciplina: Me acuesto tarde y me levanto sin energÃ�a, eso me quita la motivación. Reconozco que cuando me acuesto temprano recupero la energÃ�a y me levanto con mucho ánimo y alegrÃ�a. Tampoco tengo disciplina de estudio ni horarios para programar. Si aumentase mi disciplina entonces trabajarÃ�a más eficiente y alcanzarÃ�a muchas metas, no solo de programación, también tengo metas en diseño gráfico y otras muchas más, pero si no me aplico no llegaré lejos.

Una de las cosas que quisiera retomar es la creación juegos de preguntas y respuestas los cuales me pudiesen servir para agilizar la comprensión de algunos temas.
En cuanto al tema del motor de juegos, hoy no tengo código nuevo que compartir porque estuve haciendo otras actividades. Me tocó platicar con un amigo emprendedor y me transmitió su motivación, ahora también reconozco que para estar motivado necesito estar alegre y vivir buscando siempre la paz, de esa manera se me har�a mucho más fácil alcanzar metas y ayudar a otras personas.
Ahora que lo pienso, los video juegos sirven para transmitir alegr�a y felicidad por lo tanto sirve para motivar a las personas.

Bye.
#10
General / Re:Crear un motor.
Noviembre 18, 2022, 04:19:52 AM
Hola, buenas noches.

Hoy me dediqué a buscar la solución del draw_text_ext y aunque he obtenido un resultado aceptable, voy a tratar de crear un diagrama del funcionamiento para poder comprender mejor ese sistema.

Realmente invertí todo el día en este simple script y no quedó preciso. Eso me impulsa a buscar estrategias para aumentar precisión, entre ellas crear diagramas de flujo y el pseudocódigo.


Nueva versión del draw_text_ext para Python – pygame.

def draw_text_ext(x, y, string, w):
    global count
    font_sys = pygame.font.SysFont(font_name, font_size)
    if w < font_size:
        w = font_size
    string_x = string_replace_all(string, chr(pygame.K_TAB), chr(pygame.K_SPACE)*8)
    index_x = 0
    count_x = 0
    char_num = len(string_x)
    while char_num > 0:
        copy_x2 = string_copy(string_x, index_x+count_x, 1)
        while copy_x2 == chr(pygame.K_RETURN):
            index_x += count_x+1
            count_x = 0
            copy_x2 = string_copy(string_x, index_x+count_x, 1)

        char_num -= 1
        count_x += 1
        copy_x = string_copy(string_x, index_x, count_x)
        area = font_sys.render(copy_x, True, font_color)
        copy_x2 = string_copy(string_x, index_x+count_x, 1)
        area_char = font_sys.render(copy_x2, True, font_color)
        if interface.keyboard_check_pressed("any"):
            print(copy_x2)
        if area.get_width() > w-area_char.get_width():
            count_previo = count_x
            sumar_x = 0
            while string_x[index_x+count_x-1] != " " and count_x > 0:
                sumar_x += 1
                count_x -= 1
            if count_x == 0:
                count_x = count_previo
                sumar_x += 1

            string_x = string_insert(chr(pygame.K_RETURN), string_x, index_x+count_x)
            index_x += count_x+1
            count_x = sumar_x
            char_num += 1

    list_out = string_x.split(chr(pygame.K_RETURN))
    draw_rectangle(x, y, w, len(list_out)*font_size)
    draw_text(x, y, list_out)

Considero que este script está 75% preciso.

Este es el estado de las metas del draw_text_super.




Retos personales:
Ahora me tengo que enfrentar nuevos retos personales para poder acelerar la producción de scripts.




Bueno, en cuanto a mejorar como programador quisiera agragar que tengo que aumentar mi disciplina y obligarme a dormir temprano.



v: 194
#11
General / Re:Crear un motor.
Noviembre 17, 2022, 02:04:00 PM
Hola, saludos a todos en este nuevo día.

Mantenerme motivado es todo un reto, tengo que imaginar que todo marcha de maravilla, XD.

Ahora bien continuando con el draw_text_ext estos son los retos que tengo hoy para poder concretar el script.


#12
General / Re:Crear un motor.
Noviembre 17, 2022, 02:44:59 AM
Hola mundo.

Son las 9:32pm y ya terminé lo que ser�a un draw_text_ext para python - pygame.





def draw_text_ext(x, y, string, w):
    font_sys = pygame.font.SysFont(font_name, font_size)
    area = font_sys.render(string, True, font_color)
    linea_list = []
    if area.get_width() > w:
        while area.get_width() > w:
            count_x = 1
            copy_x = string_copy(string, 0, count_x)
            area_x2 = font_sys.render(copy_x, True, font_color)
            while area_x2.get_width() < w:
                count_x += 1
                count_previo = count_x
                count_x2 = count_x
                copy_x = string_copy(string, 0, count_x)
                area_x2 = font_sys.render(copy_x, True, font_color)
            # La división correcta.
            c1 = string_copy(string, count_x, 1) != " "
            c2 = len(string) != count_x
            if c1 and c2:
                while string_copy(string, count_x, 1) != " " and count_x > 0:
                    count_x -= 1
                count_x += 1
                if count_x == 1:
                    count_x = count_previo
            else:
                count_x += 1

            index = 0
            count = count_x
            linea_list.append(string_copy(string, index, count))
            index = count_x
            count = len(string)-index
            string = string_copy(string, index, count)
            area = font_sys.render(string, True, font_color)
        linea_list.append(string)
    else:
        linea_list = [string]

    draw_text(x, y, linea_list)

Este codigo trabajará en conjunto con el paquete de script del post: "scripts de otros lenguajes".

Pero esto es solo el comienzo del problema del código, ahora es necesario crear ajustar este draw_tex_ext para que permita saltos de l�nea mediante la tecla Enter, la cual proporciona un carácter de código 13.


Me tardé una hora y media más o menos porque estuve cenando unas arepas con mortadela más o menos como estas.




El tiempo para programar tengo que aprovecharlo al máximo porque queda mucho camino por recorrer.



Ser�a bueno acostarme a dormir para comenzar mañana pero ya me enganché y tengo que aprovechar esta pequeña motivación. Aunque realmente necesito autocontrol para poder dormir temprano y programar mejor. No sé cómo hacen ustedes en esos casos ¿se trasnochan, amanecen o se duermen temprano?.
#13
General / Re:Crear un motor.
Noviembre 17, 2022, 12:41:21 AM
Hola buenas noches,

Aquí en Venezuela son las 7:42pm del día miércoles 16/11/2022 y me encuentro programando la solución al draw_text_ext para hallar la división correcta de las líneas que componen un cuadro de texto.


Esta es la imagen que tengo del script por los momentos.


#14
General / Re:Crear un motor.
Noviembre 16, 2022, 07:55:20 PM
Hola a todos.

Microstudio



Black_cat tiene razón, microstudio es un gran sistema para crear video juegos y quizás el mejor actualmente. Me gusta mucho la imagen principal de microstudio en donde aparece un juego parecido a “top gear snes� y realmente quiero programar uno de esa clase.

Programar un motor de video juegos “simple� o simplificado me parece bastante interesante porque me obliga a razonar e inclusive me motiva a mejorar mis hábitos de programador.

Las técnicas que se requerir�an para crear este motor “simple� son muy parecidas a las que necesitar�an los siguientes juegos:
1.   Mario maker.
2.   Juegos de construcción de ciudades.

Por tanto esta experiencia puede prepararme para en algún futuro lograr crear uno de esos.

El block de notas
Crear un simple block de notas es uno de los primeros objetivos y valla que no ha sido fácil. Ayer reprogramé el código desde cero y hoy tengo que ajustarlo un poco más.
La siguiente tabla me permite visualizar  algunos pasos que debo seguir para lograr concretar la creación de un block de notas:




Imagen: primera etapa del draw_text_ext en Python. En esta primera etapa el sistema intenta ajustar el texto a un tamaño espec�fico pero recorta las palabras de manera inadecuada.



Modo de creación:
Posiblemente exista un módulo para Python que pudiese facilitar la creación de cuadros de textos, pero programarlo con pygame me obliga a razonar y eso me combiene. Con lo poco que he aprendido he conseguido comprender algunas técnicas que podré usar para cuando me toque trabajar a fondo con archivos Json. También me he visto obligado a crear un script que me permita tener gran control sobre el teclado y el mouse, cosa que necesitaré bastante cuando comience a crear los scripts que permitirán mover los objetos con teclado y/o ratón. Ahora que me acuerdo voy a necesitar un Joystick, si alguien puede enviarme uno USB se lo agradecer�a, me conviene integrar las funciones del joystick inmediatamente.



#15
General / Re:Scripts de otros lenguajes.
Noviembre 14, 2022, 06:52:46 PM
Hola, saludos a todos. :-[

Aquí les dejo un script para python que imita algunas funciones del game maker.

import pygame
import math

"""
Notas importantes: 
1. A la pantalla la llamaremos "screen".
2. Tenemos que importar los módulos: pygame y math.
3. Para poder comprender este código es necesario ver unos cuantos tutoriales de pygame-python.
"""

#Pantalla
screen_size = [800, 600]
screen = pygame.display.set_mode(screen_size, pygame.RESIZABLE)
pygame.display.set_caption("Game editor")
clock = pygame.time.Clock()

# colores
c_aqua = [0, 255, 255]
c_black = [0, 0, 0]
c_blue = [0, 0, 255]
c_dkgray = [64, 64, 64]
c_fuchsia = [255, 0, 255]
c_gray = [128, 128, 128]
c_green = [0, 128, 0]
c_lime = [0, 255, 0]
c_ltgray = [192, 192, 192]
c_maroon = [128, 0, 0]
c_navy = [0, 0, 128]
c_olive = [128, 128, 128]
c_purple = [128, 0, 128]
c_red = [255, 0, 0]
c_silver = [192, 192, 192]
c_teal = [0, 128, 128]
c_white = [255, 255, 255]
c_yellow = [255, 255, 0]
brush_color = c_white

# inicializando las fuentes
pygame.font.init()
font_size = 32
font_name = "Sylfaen"
font_color = c_black
font_position = "left"
font = pygame.font.Font(None, font_size)

def draw_circle(x, y, r):
    pygame.draw.circle(screen, brush_color, (x, y), r, 1)

def draw_text(x, y, txt):
    global font_color
    font_sys = pygame.font.SysFont(font_name, font_size)
    area = font_sys.render(str(txt), True, font_color)
    screen.blit(area, (x, y))

def draw_text_color(x, y, txt, color):
    font_sys = pygame.font.SysFont(font_name, font_size)
    area = font_sys.render(str(txt), True, color)
    screen.blit(area, (x, y))

def draw_rectangle(x, y, w, h):
    global brush_color
    pygame.draw.rect(screen, brush_color, (x, y, w, h))

def draw_rectangle_color(rect, color):
    pygame.draw.rect(screen, color, (rect.x, rect.y, rect.w, rect.h))

def draw_set_color(color):
    brush_color = color

def execute_string(str):
    exec(str)

def floor(x):
    return math.trunc(x)

def point_distance(x1, y1, x2, y2):
    p = [x1, y1]
    q = [x2, y2]
    distancia = math.dist(p, q)
    distancia_entero = math.trunc(distancia)
    return distancia_entero

def string_count(substr, str):
    return str.count(substr)

def string_copy(str, index, count):
    return str[index:index + count]

def string_delete(str, index, count):
    return str[0:index:] + str[index + count::]

def string_insert(substr, str_x, index):
    if type(str_x) == list:
        list_prev = str_x[:index]
        list_prev.append(substr)
        list_prev += str_x[index:]
        return list_prev
    else:
        substr_x = str(substr)
        return str_x[:index] + substr_x + str_x[index:]

def string_length(str):
    return len(str)

def string_pos(substr, str):
    return str.index(substr)

Powered by EzPortal
SMF spam blocked by CleanTalk