La carreta precisa

Publicado por dixon2010, Octubre 05, 2018, 11:47:12 PM

Tema anterior - Siguiente tema

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

dixon2010



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:

[gml]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)
}[/gml]


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.

n0k

Está genial amigo, felicidades!

Goganpis

No entendi, Es una herramienta o un juego? al parecer no se en que consiste... Me podrian explicar  :-[

Clamud

Es divertido, pero por poco tiempo.

Jeshuamartix129

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.

dixon

#5
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:

//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.

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é.

Marth

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.

Powered by EzPortal
SMF spam blocked by CleanTalk