Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: La carreta precisa  (Leído 2429 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dixon2010

en: Octubre 05, 2018, 11:47:12 pm


La carreta precisa


Plataformas


GM4

Hola, gusto en saludarles.

Les presento este reto informático de precisión donde se controla el ángulo de inclinación de la carreta para lograr que se adapte a las superficies. A algunos usuarios pueden llegar a sentir miedo cuando la carreta está apunto de precipitarse.







Lo puedes ejecutar desde pc, movil, table, etc..sin descargar en el siguiente enlace:
https://www.kongregate.com/games/reyesdavila1987/la-carreta-precisa

ANDROID:
https://mega.nz/#!aroHxIAA!TWtJpnlzkcKOqLKnhEyQ61kvpb5gEKLyP5rrTAkk-7U

WINDOWS:
https://mega.nz/#!X35HEQDD!TX4D32Er9KhN5qjF6cQHBFxZ271gll2DaNfeMoOp6VM


Presenta tres características:
1. Mono codigo: Se programó con un unico codigo para el evento draw de un objeto principal.
2. Compatibilidad El código interno del programa es el mismo en todas las versiones del Game Maker desde Game maker 4.3c (March4, 2003) hasta GM studio2. La versión del game maker 3.3 no fue calificada por que no usa la variable sprite_index y en ves de usar mouse_x usa mousex, las posteriores versiones 1 y 2 tampoco.
3. Multisistema: La versión html5 es ejecutable en android, windows, mac y otros sistemas. No requiere descarga. En moviles y tablets hay que activar en el navegador la vista de escritorio, modo pc o vista ordenador. Entrando en configuración-sitio de escritorio.

 :o sorprendentemente el código usado es el mismo para la versión android. y no requiere más modificación por lo tanto este juego pudo haber sido creado en el 2001 e inclusive poder jugarse en android oreo sin modificar su código fuente




Proceso de armado del juego

Aquí les dejo el proceso sencillo que debe seguirse para armar este juego mediante cualquier versión del game maker exceptuando las anteriores a Game maker 4.0 (2001).


0.Descargar las imagenes.https://mega.nz/#!LihAnCBI!7FBQpRuJtrDdv8lnCyS4ehcfvJnG5SRORE1b1oQaj0Y
1.Habre tu Gamemaker, en cualquier Gamemaker te funcionará.
2.Crear 6  sprites y modificarlos como se indica mas abajo (desde el cero al 5).
3.Crear 6 objetos (desde el cero al 5).
4.Al objeto0 crearle un evento DRAW e introducele el código fuente que está mas abajo.
5.Crear un room y colocarle los 6 objetos en cualquier sitio (desde el cero al 5).
 Listo ejecutar...



Características de los sprites:

sprite0: 00_man.gif
origin x=26; y=24
Precise: NO

sprite1: 01_map.gif
origin: x=0; y=0
Precise: SI

sprite2: 02_rueda.gif
origin: x=20; y=20
Precise: SI

sprite3: 03_carreta.gif
origin: x=52; y=52
Precise: SI

sprite4: 04_boton.gif
origin: x=0; y=0
Precise: SI

sprite5: 05_titulo.gif
origin: x=0; y=0
Precise: SI

Código fuente:

if(x=0)
{

global.sprite_man=0
global.sprite_map=1
global.sprite_rueda=2
global.sprite_carreta=3
global.sprite_boton=4
global.sprite_titulo=5

global.idmap=object1.id
global.idmap.x=0
global.idmap.y=0
global.idmap.sprite_index=global.sprite_map
global.idmap.image_speed=0
global.idmap.depth=2

global.idmap2=object2.id
global.idmap2.x=320
global.idmap2.y=0
global.idmap2.sprite_index=global.sprite_map
global.idmap2.image_speed=0
global.idmap2.image_index=1+floor(random(31))
global.idmap2.depth=2

global.idman=object3.id
global.idman.x=175
global.idman.y=167
global.idman.sprite_index=global.sprite_man
global.idman.image_speed=0

global.idcarreta=object4.id
global.idcarreta.x=100
global.idcarreta.y=171
global.idcarreta.sprite_index=global.sprite_carreta
global.idcarreta.image_speed=0
global.idcarreta.image_index=18

global.idrueda=object5.id
global.idrueda.x=100
global.idrueda.y=171
global.idrueda.sprite_index=global.sprite_rueda
global.idrueda.image_speed=0
global.idrueda.depth=-1

global.idcontrol=id
global.pause=1
global.choque=0
global.reloj=0
global.escena=1
global.v=0
global.puntos=0

depth=1
kbk=0
show_score=0
dp=0
x=1
}

//para objeto control
kbkp=(kbk=0)*keyboard_key
kbk=keyboard_key
if(kbkp=113){x=0;game_restart()}
if(kbkp=123){game_end()}

//boton
bajar_boton=0
mover_boton=0
subir_boton=0
if(global.choque && global.idrueda.y<120)bajar_boton=200
if(global.choque){mover_boton=185;subir_boton=100}
boton_x=185-mover_boton
boton_y=100-subir_boton+bajar_boton
toque=0
if(mouse_x>boton_x && mouse_y>boton_y && mouse_x<boton_x+128 && mouse_y<boton_y+39){global.reloj+=0.1;toque=1}else{global.reloj=0}
if(global.pause)
{
global.v=0
if(global.choque=0)
{
draw_sprite(global.sprite_titulo,0,90,40)
draw_text(105,70,"Puntaje más alto: "+string(highscore_value(1)))
}
if(floor(global.reloj)=1)
{
if(global.choque)
{
highscore_add("usuario",global.puntos)
game_restart();x=0
}
global.pause=0
global.v=1
}
draw_sprite(global.sprite_boton,global.choque*2+toque,boton_x,boton_y)
}

//mapa
with(object1)
{
if(global.pause=0)
{
x-=floor(global.v)
}
if((x+320)<0)
{
x+=640
image_index=1+floor(random(31))
}
}

//mapa2
with(object2)
{
if(global.pause=0)
{
x-=floor(global.v)
}
if((x+320)<0)
{
x+=640
image_index=1+floor(random(31))
}
}

//man
with(global.idman)
{
if(global.pause=0)
{
//movimientoy
vs=5
while(place_meeting(x,y+vs,object1))vs-=1
while(place_meeting(x,y+vs,object2))vs-=1
y+=vs
}
image_speed=global.v/5
if(place_meeting(x,y+5,all)=0)image_index=2
}

//rueda
with(global.idrueda)
{
if(global.pause=0)
{
//movimientoy
vs=10
while(place_meeting(x,y+vs,object1))vs-=1
while(place_meeting(x,y+vs,object2))vs-=1
y+=vs
}
image_speed=global.v/3
}


//carreta
with(global.idcarreta)
{
if(place_meeting(x,y,object1)){global.choque=1;global.pause=1}
if(place_meeting(x,y,object2)){global.choque=1;global.pause=1}
if(global.choque=0)
{
if(global.pause=0)
{
if(mouse_y>0 && mouse_y<240)image_index=floor(mouse_y/6.6)
}
//movimiento vertical
y=global.idrueda.y
}
}


//PAUSE Y CAMARA
if(global.pause=0)
{
//movimiento camara
global.v+=0.001
global.puntos+=1

//dibujando cueda al final
//cuerda
if(mouse_y>0 && mouse_y<240)direction=90-floor(mouse_y/6.6)*5

}

//cuerda
dcx=cos(direction*pi/180)
dcy=-sin(direction*pi/180)
draw_line(global.idman.x-3,global.idman.y-11,global.idcarreta.x+dcx*35,global.idcarreta.y+dcy*35)

//puntos
if(global.puntos)
{
draw_text(260,0,global.puntos)
}


« Última modificación: Noviembre 16, 2018, 06:34:28 pm por dixon2010 »

Dios nos ayuda y nos da sabiduría para vivir. Cáda código es una obra maestra que hay que respetar aunque exista un código mas eficiente y sencillo.
 


No Tienes Permisos Para Dar Puntos
point 12 Puntos

Usuarios que puntuaron el tema » n0k (5 Pts) » MasterMaker (7 Pts) 


Desconectado n0k

Respuesta #1 en: Octubre 06, 2018, 02:54:58 pm
Está genial amigo, felicidades!

 
Los siguientes usuarios dieron las gracias a este tema: dixon2010


Desconectado Goganpis

Respuesta #2 en: Octubre 06, 2018, 03:09:44 pm
No entendi, Es una herramienta o un juego? al parecer no se en que consiste... Me podrian explicar  :-[

 
Los siguientes usuarios dieron las gracias a este tema: dixon2010


Desconectado Clamud

Respuesta #3 en: Octubre 09, 2018, 05:11:45 am
Es divertido, pero por poco tiempo.

 
Los siguientes usuarios dieron las gracias a este tema: dixon2010


Desconectado Jeshuamartix129

Respuesta #4 en: Mayo 03, 2019, 10:54:49 pm
Pues soy programador,grafista y musico y si quieres o quieren puedo contribuir en el juego por ahora tengo  :GM8: y bueno mi edad 12 algo joven no pero si necesitan ayuda me avisan.

 
Los siguientes usuarios dieron las gracias a este tema: dixon


Desconectado dixon

Respuesta #5 en: Julio 04, 2021, 09:44:39 pm
Hola un gusto en saludarlos, otra vez.





   La carreta precisa v2   



Jugar desde la siguiente web
Para todas las plataformas.
bit.ly/la_carreta_precisa


Más información:
Hoy he venido a compartir con ustedes la primera actualización de este juego llamado “la carreta precisa”, mi objetivo era crear un juego que se pudiese ejecutar en todos los game makers y que fuera fácil de armar y cuyos recursos fueran fáciles de obtener.

COMPATIBILIDAD: el juego podrá ejecutarse en cualquier Game Maker desde la versión 4 del año 2000 hasta la actual game maker studio 2.
MULTIPLATAFORMA: el juego podrá exportarse a cualquier plataforma.
ARMABILIDAD: El juego puede armase fácilmente siguiendo los siguienes pasos.

Para armar este juego necesitas:

Materiales:

1.   Dos sprites, son las dos imágenes llamadas: sprite0 y sprite1
sprite0
sprite1

2.   El script: es el código llamado "script";
3.   Cualquier game maker superior a la versión 3.3 (April 3, 2001), se incluye la versión 4.

Instrucciones:

a.   Abre tu game maker.
a.   Cargar el sprite0, el cual debe ser llamado “sprite0”.
b.   Cargar el sprite1, el cual debe ser llamado “sprite1”.
c.   Crear un objeto.
d.   Crear una room con un tamaño de 320x240.
e.   Colocar el objeto en cualquier parte de la room.
f.   Colocar en el evento draw (dibujo) del objeto, el siguiente script:


Script que controla todo el juego:

Código: [Seleccionar]
//Simulando el evento create con la variable direction
if(direction=0)
{
//highscore_clear();
font_size=12;
//font_name="Arial";

if(highscore_value(1)=0)
{
highscore_add("Viajes pokémon",5500);
highscore_add("Festival de Cannes",3542);
highscore_add("Tom Holland",3339);
highscore_add("El sr d los Anillos",3332);
highscore_add("NFT y criptoarte",1078);
highscore_add("The Game of Life",896);
highscore_add("Princesa Diana",789);
highscore_add("Huracán Elsa",492);
highscore_add("Vehículo Tesla",448);
highscore_add("COVID-19",200);
}
//Para el objeto mapa
sprite_index=sprite0;
x=0;
y=0;
image_index=0;
image_speed=0;
mapa_activo=0;
click_time=0;
secuencia_image=1;//secuencia de imagenes
estado="portada";//Estado del juego
show_score=0;
velocidad=1;

//Para el mapa
idmap0_x=x;
idmap0_y=y;
idmap0_image=image_index;
ancho_mapa=319;

//Para el mapa 2
idmap1_x=idmap0_x+320;
idmap1_y=y;
idmap1_image=1+floor(random(image_number-1));
idmap1_image=11;

//Para el objeto player
idman_x=149;
idman_y=143;
idman_image=0;
idman_image_inicio=0;
idman_image_final=3;

//Para la rueda
idrueda_x=80;
idrueda_y=151;
idrueda_image=4;
idrueda_image_inicio=4;
idrueda_image_final=23;
idrueda_direction=0;
idrueda_gravedad=0;

//para el centro de la rueda
idcentro_rueda_x=idrueda_x+20;
idcentro_rueda_y=idrueda_y+20;

//Para la carreta
idcarreta_x=48;
idcarreta_y=idrueda_y-32;
idcarreta_image=42;
idcarreta_direction=0;
idcarreta_gravedad=0;

//para el centro de la carreta
idcentro_carreta_x=idcarreta_x+52;
idcentro_carreta_y=idcarreta_y+52;

//Para el titulo
idtitulo_x=90;
idtitulo_y=40;
idtitulo_image=61;

//Para el texto de portada
idtexto_portada_x=100;
idtexto_portada_y=70;
nombre=highscore_name(1);
puntaje=highscore_value(1);
idtexto_texto=string(nombre)+"..."+string(puntaje);

//para el boton comenzar
idcomenzar_x=room_width-64-10;
idcomenzar_y=106;
idcomenzar_image=62;
idcomenzar_estado=0;

//para el boton reiniciar
idreiniciar_x=10;
idreiniciar_y=106+64+10;
idreiniciar_image=64;
idreiniciar_estado=0;

//para el boton TOP 10
idtop10_x=room_width-64-10;
idtop10_y=106+32+10;
idtop10_image=66;
idtop10_estado=0;

//para el boton volver
idvolver_x=5;
idvolver_y=5;
idvolver_image=68;
idvolver_estado=0;

//para la cuerda
idcuerda_x1=idcentro_rueda_x+35*cos(idcarreta_direction*pi/180);
idcuerda_y1=idcentro_rueda_y-35*sin(idcarreta_direction*pi/180);
idcuerda_x2=idman_x+23;
idcuerda_y2=idman_y+13;

//para el punto de colision A
idcoliciona_x=idcentro_rueda_x-36*cos(idcarreta_direction*pi/180);
idcoliciona_y=idcentro_rueda_y+36*sin(idcarreta_direction*pi/180);

//para el punto de colicion con el player;
idcolicion_man_x=idman_x+26;
idcolicion_man_y=idman_y+46;

direction=1
}//fin if(direction=0)



//Evento draw
//Botones a usar
if(keyboard_check(vk_f2)){game_restart()}








//////////////////////////////Juego iniciado
if(estado="juego iniciado")
{
//aumentando velocidad
velocidad+=0.003;

//Para la carreta
//Movimiento y
idcarreta_gravedad+=1;
if(idrueda_gravedad>10){idrueda_gravedad=10}
while((idcarreta_y+idcarreta_gravedad>idrueda_y-32)and (idcarreta_gravedad)){idcarreta_gravedad-=1}

idcarreta_y+=idcarreta_gravedad;
if(idcarreta_y>idrueda_y-32){idcarreta_y=idrueda_y-32;idcarreta_gravedad=0}

//cambiando la direccion de la carreta
if(mouse_y>0 && mouse_y<240)idcarreta_direction=90-floor(mouse_y/6.6)*5;
//Cambiando la imagen de la carreta
if(mouse_y>0 && mouse_y<240){idcarreta_image=42-18+floor(mouse_y/6.6)};

//para el centro de la carreta
idcentro_carreta_x=idcarreta_x+52;
idcentro_carreta_y=idcarreta_y+52;

//para el punto de colision A
idcoliciona_x=idcentro_carreta_x-36*cos(idcarreta_direction*pi/180);
idcoliciona_y=idcentro_carreta_y+36*sin(idcarreta_direction*pi/180);



for(i2=0;i2<=1;i2+=1)
{
if(i2=0){x=idmap0_x;image_index=idmap0_image}
if(i2=1){x=idmap1_x;image_index=idmap1_image}

//Detectando colicion
for(i=0;i<=72;i+=5)
{
posx=idcoliciona_x;
posy=idcoliciona_y;
posx+=i*cos(idcarreta_direction*pi/180);
posy-=i*sin(idcarreta_direction*pi/180);

//Colisionando y finalizando el juego
if((instance_position(posx,posy,0)=id) and (estado="juego iniciado")){estado="game over"}
}


}//  fin for(i2=0;i2<=1;i2+=1)

/////////////////para la cuerda
idcuerda_x1=idcentro_carreta_x+35*cos(idcarreta_direction*pi/180);
idcuerda_y1=idcentro_carreta_y-35*sin(idcarreta_direction*pi/180);
idcuerda_x2=idman_x+23;
idcuerda_y2=idman_y+13;

}//fin if(estado="juego iniciado")
/////////////////////////////////////////////////////////////////////


//////////////////////////////Juego iniciado
if(estado="juego iniciado"){

//sumando puntos;
score+=1;

//Para los mapas
if(idmap0_x>idmap1_x){idmap1_x-=velocidad;idmap0_x=idmap1_x+ancho_mapa}
if(idmap1_x>idmap0_x){idmap0_x-=velocidad;idmap1_x=idmap0_x+ancho_mapa}
if(idmap0_x<-ancho_mapa){idmap0_x=idmap1_x+ancho_mapa;idmap0_image=1+floor(random(image_number-1))}
if(idmap1_x<-ancho_mapa){idmap1_x=idmap0_x+ancho_mapa;idmap1_image=1+floor(random(image_number-1))}









//Para La rueda
//Movimiento y
idrueda_gravedad+=2;
if(idrueda_gravedad>10){idrueda_gravedad=10}

//Para el player
//Movimiento y
vs=5






////////////////////////////////////Duplicando la posicion del objeto
for(i2=0;i2<=1;i2+=1)
{
if(i2=0){x=idmap0_x;image_index=idmap0_image}
if(i2=1){x=idmap1_x;image_index=idmap1_image}


//Para el player
//para el punto de colicion con el player;
idcolicion_man_x=idman_x+26;
idcolicion_man_y=idman_y+46;

//Movimiento y

while((instance_position(idcolicion_man_x,idcolicion_man_y+vs,0)=id)and vs){vs-=1}
idman_y+=vs;

while(instance_position(idcolicion_man_x,idcolicion_man_y,0)=id)
{
idman_y-=1;
//para el punto de colicion con el player;
idcolicion_man_x=idman_x+26;
idcolicion_man_y=idman_y+46;
}


//Para La rueda
//Movimiento y

idrueda_direction-=(1+velocidad);
if(idrueda_direction>360){idrueda_direction-=360}
if(idrueda_direction<0){idrueda_direction+=360}

posx=0;
posy=0;
for(i=0;i<360;i+=5)
{
direction_ram=(idrueda_direction+i-15);
//if(direction_ram>360){direction_ram-=360}
//if(direction_ram<0){direction_ram+=360}

dis=28;
if(frac(i/180)=0){dis=30}

posx=idcentro_rueda_x+dis*cos(direction_ram*pi/180);
posy=idcentro_rueda_y-dis*sin(direction_ram*pi/180);

while(instance_position(posx,posy,0)=id)
{
idrueda_y-=1;
//para el centro de la rueda
idcentro_rueda_x=idrueda_x+20;
idcentro_rueda_y=idrueda_y+20;
posx=idcentro_rueda_x+dis*cos(direction_ram*pi/180);
posy=idcentro_rueda_y-dis*sin(direction_ram*pi/180);
}

//if(frac(i/120)=0)
//if(dis=27 and i2=0)
{
//draw_circle(posx,posy,2);
//draw_line(idcentro_rueda_x,idcentro_rueda_y,posx,posy);
}

while((instance_position(posx,posy,0)=id) and (idrueda_gravedad))
{
//gravedad
idrueda_gravedad-=1;
}

}// fin for(i=0;i<360;i+=5)






}//fin for(i2=0;i2<=1;i2+=1)
////////////////////////////////////////Fin Duplicando la posicion del objeto


idrueda_y+=idrueda_gravedad;

//para el centro de la rueda
idcentro_rueda_x=idrueda_x+20;
idcentro_rueda_y=idrueda_y+20;

////////////////secuencia de imagenes
//Para la rueda
idrueda_image=idrueda_image_inicio+floor(idrueda_direction/18);
idman_image+=0.2;
//para el hombre
if(idman_image>idman_image_final){idman_image=idman_image_inicio}
/////////////Fin secuencia de imagenes

}//fin if(estado="juego iniciado")
/////////////////////////////////////////////////////////////////////













//////////////////////////////////////Seccion de dibujos
//Dibujando objetos



c1=(estado!="top 10");
if(c1)
{
//dibujando el mapa 1
draw_sprite(sprite_index,idmap0_image,idmap0_x,idmap0_y);
//dibujando el mapa 2
draw_sprite(sprite_index,idmap1_image,idmap1_x,idmap1_y);
//dibujando cuerda
draw_line(idcuerda_x1,idcuerda_y1,idcuerda_x2,idcuerda_y2);
//dibujando el player
draw_sprite(sprite1,idman_image,idman_x,idman_y);
//dibujando la carreta
draw_sprite(sprite1,idcarreta_image,idcarreta_x,idcarreta_y);
//dibujando la rueda
draw_sprite(sprite1,idrueda_image,idrueda_x,idrueda_y);
}





bloquear='
///Para la carreta
for(i=0;i<=72;i+=5)
{

posx=idcoliciona_x;
posy=idcoliciona_y;
posx+=i*cos(idcarreta_direction*pi/180);
posy-=i*sin(idcarreta_direction*pi/180);
draw_circle(posx,posy,2);
}
draw_circle(idcentro_carreta_x,idcentro_carreta_y,2);
//'





//dibujando score
c1=(estado="juego iniciado");
c2=(estado="game over");
if(c1 || c2){draw_text(280,10,score)}


///////////////////////////////Dibujos de portada
if(estado="portada")
{

//controlando botones
click=0;
click_id="";

//dibujando boton comenzar
boton_id="comenzar";
boton_x=idcomenzar_x;
boton_y=idcomenzar_y;
boton_image=idcomenzar_image;
boton_estado=idcomenzar_estado;

c1=(mouse_x>boton_x);
c2=(mouse_x<boton_x+64);
c3=(mouse_y>boton_y);
c4=(mouse_y<boton_y+32);
c5=(c1 and c2 and c3 and c4);
if(c5){boton_estado=1;click=1;click_id=boton_id}else{boton_estado=0}
draw_sprite(sprite1,boton_image+boton_estado,boton_x,boton_y);


//dibujando boton top 10
boton_id="top 10";
boton_x=idtop10_x;
boton_y=idtop10_y;
boton_image=idtop10_image;
boton_estado=idtop10_estado;

c1=(mouse_x>boton_x);
c2=(mouse_x<boton_x+64);
c3=(mouse_y>boton_y);
c4=(mouse_y<boton_y+32);
c5=(c1 and c2 and c3 and c4);
if(c5){boton_estado=1;click=1;click_id=boton_id}else{boton_estado=0}
draw_sprite(sprite1,boton_image+boton_estado,boton_x,boton_y);

//Al hacer click
if(click)
{
click_time+=1;
if(click_time>10)
{
if(click_id="comenzar"){estado="juego iniciado"}
if(click_id="top 10"){estado="top 10"}
}
}
else
{
click_time=0;
}


//dibujando texto portada
draw_text(idtexto_portada_x,idtexto_portada_y,idtexto_texto);

//dibujando titulo del juego
draw_sprite(sprite1,idtitulo_image,idtitulo_x,idtitulo_y);
}
/////////////////////////////   Fin dibujos de portada



//////////////////////////////Dibujos del top 10
if(estado="top 10")
{
draw_text(85,10,"Los 10 puntos más altos:");
dx=75;
dy=35;

for(i=1;i<=10;i+=1)
{
nombre=highscore_name(i);
puntaje=highscore_value(i);
puntos=".";
texto=string(i)+". "+string(nombre)+" "+string(puntos)+" "+string(puntaje);

while((string_width(texto)>200) and string_length(nombre))
{
nombre=string_delete(nombre,string_length(nombre),1);
texto=string(i)+". "+string(nombre)+" "+string(puntos)+" "+string(puntaje);
}

while(string_width(texto)<200)
{
puntos+=".";
texto=string(i)+". "+string(nombre)+" "+string(puntos)+" "+string(puntaje);

}

while(string_width(texto)>200 and string_length(puntos))
{
puntos=string_delete(puntos,1,1);
texto=string(i)+". "+string(nombre)+" "+string(puntos)+" "+string(puntaje);

}




draw_text(dx,dy,texto);
dy+=20;
}

//controlando botones
click=0;
click_id="";

//dibujando boton volver
boton_id="volver";
boton_x=idvolver_x;
boton_y=idvolver_y;
boton_image=idvolver_image;
boton_estado=idvolver_estado;

c1=(mouse_x>boton_x);
c2=(mouse_x<boton_x+64);
c3=(mouse_y>boton_y);
c4=(mouse_y<boton_y+32);
c5=(c1 and c2 and c3 and c4);
if(c5){boton_estado=1;click=1;click_id=boton_id}else{boton_estado=0}
draw_sprite(sprite1,boton_image+boton_estado,boton_x,boton_y);

//Al hacer click
if(click)
{
click_time+=1;
if(click_time>10)
{
if(click_id="volver")
{
game_restart();
}
}
}
else
{
click_time=0;
}

}//fin if(estado="top 10")



////////////////////////////Dibujos de game over
if(estado="game over")
{
//controlando botones
click=0;
click_id="";

//dibujando boton reiniciar
boton_id="reiniciar";
boton_x=idreiniciar_x;
boton_y=10+idreiniciar_y*(idcentro_carreta_y<100);
boton_image=idreiniciar_image;
boton_estado=idreiniciar_estado;

c1=(mouse_x>boton_x);
c2=(mouse_x<boton_x+64);
c3=(mouse_y>boton_y);
c4=(mouse_y<boton_y+32);
c5=(c1 and c2 and c3 and c4);
if(c5){boton_estado=1;click=1;click_id=boton_id}else{boton_estado=0}
draw_sprite(sprite1,boton_image+boton_estado,boton_x,boton_y);

//Al hacer click
if(click)
{
click_time+=1;
if(click_time>10)
{
if(click_id="reiniciar")
{

if(score>highscore_value(10))
{
mensaje="!Has entrado en el top 10!
Escribe tu nombre:";
nombre=get_string(mensaje,"Anónimo");


c1=(string_length(nombre)>10);
c2=(string_length(nombre)<3);

while(c1 || c2)
{

if(string_length(nombre)>10)
{
mensaje="Los nombres no pueden tener más de 10 caracteres.
Vuelve a intentarlo:";
nombre=get_string(mensaje,nombre);
}

if(string_length(nombre)<3)
{
mensaje="Los nombres no deben tener menos de tres caracteres.
Vuelve a intentarlo:";
nombre=get_string(mensaje,nombre);
}
c1=(string_length(nombre)>10);
c2=(string_length(nombre)<3);
}

highscore_add(nombre,score);
}
game_restart();

}
}
}
else
{
click_time=0;
}
}
////////////////////////////Fin Dibujos de game over

//////////////////Fin seccion de dibujos





//texto
vw00=room_width;
vh00=room_height;
dx=0;
dy=0;
txt="";
ver="txt";

//Posicionar cursor aquí
if(ver!='txt'){draw_text(dx,dy,'txt: '+string(txt));dy+=20;if(dy>vh00-20){dy=0;dx+=vw00/2}}
if(ver!='txt'){draw_text(dx,dy,'txt: '+string(txt));dy+=20;if(dy>vh00-20){dy=0;dx+=vw00/2}}
if(ver!='txt'){draw_text(dx,dy,'txt: '+string(txt));dy+=20;if(dy>vh00-20){dy=0;dx+=vw00/2}}
if(ver!='txt'){draw_text(dx,dy,'txt: '+string(txt));dy+=20;if(dy>vh00-20){dy=0;dx+=vw00/2}}
if(ver!='txt'){draw_text(dx,dy,'txt: '+string(txt));dy+=20;if(dy>vh00-20){dy=0;dx+=vw00/2}}
if(ver!='txt'){draw_text(dx,dy,'txt: '+string(txt));dy+=20;if(dy>vh00-20){dy=0;dx+=vw00/2}}
//fin codigo


Desventajas de la primera versión:
1. Presentó algunas fallas en el código.
2. Los pasos para armar el juego eran complicados.
3. La exposición html5 dificultaba la entrada de dispositivos móviles.

Mejoras:
1. Ahora los pasos para armar el juego son fáciles de seguir, evitando la modificación de sprites y el uso de varios objetos.
2. La exposición html5 es más agradable y permite móviles.

Datos técnicos:
1. Se desarrolló un sistema de colisiones que no emplea el place_empty, place_meeting o place_free, el cual está compuesto principalmente por la función instance_position.
2. Al principio se requería el uso de varios objetos (la carreta, la rueda, el hombre, la superficie y el objeto controlador),  Ahora en la room existe un solo objeto sin instancias, el cual se encarga de interpretar todo.
3. Lamentablemente el score no es online, ya que carezco de conocimientos para crear un score online html5.

« Última modificación: Julio 15, 2021, 06:30:54 am por dixon »

Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.
 


Desconectado Marth

Respuesta #6 en: Julio 05, 2021, 01:09:33 pm
Como minijuego para descansar unos segundos está bastante bien, y es un minijuego original.
Pero tras un rato ya está. Podrías irle añadiendo mejoras, como efectos de sonido o eventos como que la velocidad del juego aumente para hacerlo más completo.

 
Los siguientes usuarios dieron las gracias a este tema: dixon