[CODE]pequeño programa que simula recarga de armas

Started by Soviet, December 18, 2013, 08:31:55 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Soviet

Puede que a alguien le sirva esto, lo hice yo mismo, simula los valores numericos de recarga de armas y una reserva de municion, en fin puede que muchos sepan hacerlo, pero supongo que no esta demas comparitrlo, aca va:
import "mod_key";
import "mod_text";
import "mod_video";
import "mod_proc";

global
int weap=0;
int mun=30;
int bloqueo=0;
end

process main()
begin
set_mode(320,240,32);
loop
delete_text(0);
write(0,10,10,0,"Balas en la recamara: ");
write(0,10,20,0,"Municion restante: ");
write(0,10,40,0,"Pulsa SPACE para disparar.");
write(0,10,50,0,"Pulsa 'r' para recargar.");
write(0,10,60,0,"Pulsa ESC para salir");
write(0,10,100,0,"si quieres rellenar reservas de municion pulsa 'a'");
write_var(0,160,10,0,weap);
write_var(0,160,20,0,mun);
if(key(_r) and weap==0) //se puede remplazar r por un proceso de recarga q se active con r, ó que este proceso de una orden que active estas secuencias
if(mun=>8)
weap=weap+8; mun=mun-8;
else weap=weap+mun; mun=0;
end
end
if(key(_r) and weap==7)
if(mun=>1)
mun=mun-1; weap=weap+1;
end
end
if(key(_r) and weap==6)
if(mun=>2)
mun=mun-2; weap=weap+2;
else weap=weap+mun; mun=0;
end
end
if(key(_r) and weap==5)
if(mun=>3)
weap=weap+3; mun=mun-3;
else weap=weap+mun; mun=0;
end
end
if(key(_r) and weap==4)
if(mun=>4)
weap=weap+4; mun=mun-4;
else weap=weap+mun; mun=0;
end
end
if(key(_r) and weap==3)
if(mun=>5)
weap=weap+5; mun=mun-5;
else weap=weap+mun; mun=0;
end
end
if(key(_r) and weap==2)
if(mun=>6)
weap=weap+6; mun=mun-6;
else weap=weap+mun; mun=0;
end
end
if(key(_r) and weap==1)
if(mun=>7)
weap=weap+7; mun=mun-7;
else weap=weap+mun; mun=0;
end
end
if(key(_space) and weap>0)
if(bloqueo==0) weap=weap-1; bloqueo=1; end
else bloqueo=0;
end
if(key(_a)) mun=30; end
if(key(_esc)) exit(); end
frame;
end
end


espero que le sirva a alguien saludos!!

gecko

no me gustó nada que hayas puesto tantos ifs. Si te fijas en todos los casos haces casi exactamente lo mismo.

Te paso una version distinta: agrego una variable nueva que son "las balas que le faltan al arma", y una vez que calculo eso, resto de un lado y sumo del otro ese numero.


import "mod_key";
import "mod_text";
import "mod_video";
import "mod_proc";

global
int weap = 0;
int mun = 30;
int reload = 0;
int bloqueo = 0;
end

process main()

begin

set_mode(320,240,16, mode_window);

loop

delete_text(0);
write(0,10,10,0,"Balas en la recamara: ");
write(0,10,20,0,"Municion restante: ");
write(0,10,40,0,"Pulsa SPACE para disparar.");
write(0,10,50,0,"Pulsa 'r' para recargar.");
write(0,10,60,0,"Pulsa ESC para salir");
write(0,10,100,0,"si quieres rellenar reservas de municion pulsa 'a'");
write_var(0,160,10,0,weap);
write_var(0,160,20,0,mun);

if( key(_r) )

reload = 8 - weap; // pregunto cuantas balas le faltan al arma

if( mun > reload )
// si tiene suficientes balas
weap=weap+reload;
mun=mun-reload;
else
// si no le quedan balas carga todas las que tiene
weap=weap+mun;
mun=0;
end
end

if(key(_space) and weap>0)
if(bloqueo==0)
weap=weap-1;
bloqueo=1;
end
else
bloqueo=0;
end

if(key(_a)) mun=30; end

if(key(_esc)) exit(); end

frame;

end
end
Torres Baldi Studio
http://torresbaldi.com

Soviet

tienes toda la razon, tu codigo esta mucho mas eficiente, bueno, me sirve de leccion para mejorar mi algoritmia, Gracias!!