elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: 1 2 [3] 4 5
21  Foros Generales / Foro Libre / Busco una página que me haga un libro. en: 5 Mayo 2013, 09:34 am
Puede sonar raro, pero en la red hay de todo.
Estoy buscando una página que me encuaderne un libro que yo le pase en PDF y así lo pueda comprar.
Se trata de un libro que no existe en soporte físico y que a mí me gustaría tener.

¿Alguien conoce alguna página que ofrezca ese servicio?

Gracias por vuestra ayuda ;)
22  Foros Generales / Foro Libre / Dividir por 0 en: 17 Abril 2013, 20:07 pm
Ya, dividir por 0 está prohibido, es una indefinición, no tiene solución.
Esto probablemente sea una parida, pero permitidme entreteneros un poco, será divertido.

Antes de abordar el tema, mejor veamos un caso similar conocido por todos.
Es bien sabido que el cuadrado de cualquier número real es un número positivo. Es imposible que al elevar un número al cuadrado se obtenga un resultado negativo, y por ende, tampoco se puede hacer la raiz cuadrada de un número negativo.
Bueno, por lo que todos habéis estudiado me diréis que no, que en el cuerpo de los números complejos sí que tiene solución y el resultado es "i", la unidad imaginaria.
Los números complejos no siempre existieron, de hecho costó bastante tiempo hasta que los matemáticos dieron el concepto por válido.

Se creó un número extraño, un número que no puede existir y entra en contradicción con las reglas matemáticas:

i^2 = -1

Bueno, ¿por qué no hacemos lo mismo con la división por cero, y a ver qué sale?

El problema en este caso es el siguiente:

Nosotros sabemos que 10/2 = 5, ya que 5*2 = 10. Dividir por cero es un problema principalmente porque 10/0 = ?. No hay ningún número que multiplicado por 0 dé 10, ya que cualquier número multiplicado por 0 da 0. ¿Eso no os suena? ¡Claro que sí! Es el mismo caso que en los números complejos, y vamos a saltarnos esa regla con la misma técnica.

Crearemos un número, una unidad imaginaria 2.0 perteneciente a un cuerpo de números sin bautizar. Vamos a llamarla "u", por ejemplo.

u = 1/0

Esto es interesante porque ahora:

1/1 = 1 ---> porque 1*1 = 1
1/0 = u ---> porque 0*u = 1

10/2 = 5 ---> porque 5*2 = 10
10/0 = 10u ---> porque 0*10u = 10

Sí, los números de nuestro nuevo cuerpo multiplicados por 0 no dan 0. Esto no provoca en ningún caso un caos matemático y no llegaremos nunca a la típica falsa demostración de 2 = 1.

Y bueno, si veis que esto se cae por algún lado o por todos, decidlo. Yo de momento no le he visto error, aunque hay que reconocer que es ciertamente inútil todo esto.
23  Informática / Hardware / ¿Qué tal este portátil? en: 21 Febrero 2013, 02:36 am
Hola a todos  :-*

Quería pediros opinión sobre este portátil en relación calidad precio.
Su coste es de 799€... vamos, para que los ojos se enfoquen bien, de 800€

Se trata de un TOSHIBA L850-1UX, características generales:

-Procesador Intel Core i7-3630QM a 2,4 GHz
-Memoria 4 GB
-HDD de 500 GB
-Gráfica AMD Radeon HD 7670M 2 GB

No sé, yo tal vez lo encuentro un poco caro. ¿Qué decís?
24  Foros Generales / Foro Libre / El sentido de la vida, el universo y todo lo demás en: 18 Diciembre 2012, 01:09 am
Sí, ya se sabe que es 42. Aunque la pregunta está mal formulada  :xD

Yendo un poco más en serio, empezaré con una cita:

“No pierdas la sonrisa ni siquiera cuando te vayan a ejecutar. La vida es una broma de mal gusto; en vez de centrarte en el «mal gusto», céntrate en la «broma». Si buscas justicia en vez de tranquilidad en este mundo democrático, suicídate. Para vivir hoy hay que saber reírse de la estúpida realidad”.

Robert Brasillach

Creo que eso define muy bien mi concepción de la vida últimamente. Es una p**a broma de mal gusto. Es efecto sin causa. Es vivir por el mero hecho de seguir viviendo, pero sin un objetivo en concreto. La vida es un fin en si mismo, y la vida únicamente se busca a sí misma. Filosofía barata de mercadillo.

Me gustaría que reflexionarais unos instantes. Mirad a vuestro alrededor y sed conscientes de la realidad que os envuelve. Luego, cerrad los ojos e imaginad el paso de toda vuestra vida. No os costará, el tiempo pasa muy rápido. Situados en esa realidad, podéis imaginar seguramente el momento de vuestra muerte, justo ese instante donde vuestra vida acaba. Y quiero que reflexionéis, y que sepáis que ese momento es real. De hecho, es tan real como lo que os rodea ahora mismo y sucederá. Dejad de pensar en el mañana, en el pasado o en la semana que viene. La vida tiene un final y vosotros estáis en él.

Sí, por supuesto, ahora uno me podría decir: ¿y qué? Es evidente que moriremos todos, nadie se libra.
Claro que sí, pero cuando uno dice eso lo hace suponiendo a la muerte como algo ficticio. Se dice por decir, vamos, sin ser consciente de lo que realmente eso significa.

Yo, para ser sincero, sólo he logrado ser consciente de esa realidad durante una infinitamente pequeña fracción de instante, y me fue suficiente para decir: ¿y entonces qué cojones?

No busco un motivo para mi existencia, ni mucho menos. Es el peor error en el que incurrió la humanidad durante su historia intelectual, a mi modo de ver.
Estoy aquí porque sí, porque a mis padres una buena noche les dio por divertirse un rato. Más lejos, mis abuelos, más lejos, ... ... , más lejos, la humanidad en sí. Y no hay ninguna razón para que estemos aquí, simplemente estamos y ya y además no es ninguna casualidad, simplemente era un hecho que tenía que ocurrir en el universo. Pero es más, al universo no le importa en absoluto que estemos o dejemos de estar.

El caos es el caos, y no se rige por nada más que el propio caos.

Pero dejando eso de lado, lo que más nos afecta como humanos es nuestra concepción de la vida. Obviando nadie se quiere morir, ¿cómo concebís vosotros la vida? Olvidando a dioses varios, por supuesto, que no vienen al caso.
25  Foros Generales / Foro Libre / Llamada real a la SGAE en: 24 Noviembre 2012, 18:30 pm
No sé si lo habréis visto, que ya es un poco viejo, pero si no, aquí tenéis para reiros un rato.

26  Foros Generales / Foro Libre / ¿Algún conlanger por aquí? en: 14 Noviembre 2012, 02:23 am

Buenas foro,

Vengo a preguntar a los aquí presentes si alguno de ellos tiene como pasatiempo el conlanging, es decir, la creación de ideolenguas (o idiomas artificiales, aunque a mí no me gusta llamarlas así).
Para los que no estén familiarizados con los términos, conlang viene de "constructed language" y los conlangers somos un puñado de frikis que pasamos las horas de nuestra miserable existencia dándole vida a idiomas propios. Vale no, tal vez la mayoría no llegue a ese extremo, pero sí que es cierto que para muchos es un hobby algo absurdo.

Como sea, es actualmente una de las cosas que más hago junto con programar y tenía curiosidad por ver si por aquí hay gente con esa misma afición.

¡Un saludo!
27  Foros Generales / Foro Libre / ¿Por qué soy ateo? en: 1 Septiembre 2012, 06:40 am
Yo soy ateo. ¿Que por qué lo soy? Podría decir que porque sí, ya que realmente uno no necesitaría de razones para no creer en leyendas que no se basan en ningún razonamiento lógico más que la fe ciega; no obstante, como gran parte de la gente tiene alguna creecia religiosa, hay que tener ciertos motivos para apartarse de ello y reafirmarse mentalmente.
Antes que nada deseo explicar qué es el ateísmo. Ser ateo significa principalmente  no creer en ningún ser o historia mitológica incluídos en cualquier cultura religiosa. En consecuencia y por compartir la misma esencia, también significa no aceptar la existencia de fantasmas, espíritus o fuerzas sobrenaturales, estando estos incluídos generalmente en la cultura popular y las leyendas urbanas.
Una metáfora sobre el ateísmo podría ser la siguiente: ser ateo es como la muerte. Si estás muerto, no existes y por ende no se puede hablar de ti como entidad. Así pues, ser ateo no es como tal una forma de pensar, sino más bien la ausencia de necesidad de cavilar sobre cosas sin fundamento.
Es como la hoja de papel sobre la cual nunca se derramó tinta. La tinta no existe, no se expande, no llena tu mente. Simplemente, no está.
Yo, como todo ser humano y bestia sobre la faz de la tierra, nací pues ateo. Fue en mis años de crianza cuando, estando en el seno de una familia católica, mis padres comenzaron a instruirme en su liturgia: la religión católica.
La verdad es que por aquel entonces mi mente no daba muchas vueltas. Me limitaba a escuchar lo que me decían y a aceptarlo como válido; santa inocencia. Además, con todas las historias que había escuchado sobre Los Reyes Magos, Papá Noel, Ratoncito Pérez y otros, lo cierto es que el cuento de un hombre sentado en los cielos que nos había creado a todos y a todo, tampoco me parecía tan inverosímil. Eso sí, notaba que se le estaba dando demasiado énfasis al asunto, hasta un punto anormal al que no llegaban las otras historias.
Yo antes que ateo fui agnóstico. ¿Y cómo di el paso de creyente a agnóstico? Bueno, dicen que gato escaldado al agua le tiene miedo, y eso es básicamente lo que me ocurrió: perdí la anteriormente mencionada santa inocencia. Resulta que a lo largo de mis años fui acumulando incongruencias que surgían en mi mente alrededor de las historias que me iban explicando.
Todos los padres llegan a un momento en el que no les queda más remedio que contarles a sus hijos que los tres señores barbudos que traen regalos no existen en realidad. A mí eso me tocó muy pronto, en torno a los cinco años, cuando les solté de golpe todas esas incoherencias que había encontrado y ellos no tuvieron otra opción que relatarme la verdad.
Aquí estamos en una situación en la que se matan bastante pájaros de un tiro, porque esa verdad aniquiló por completo todas las otras mentiras. Vi que todas las historias contadas poseían los mismos pilares fundamentales: tienes que creer ciegamente, no puedes exigir pruebas, tienes que hacer lo que te dicen y entonces tendrás tu recompensa (o castigo en caso de incumplimiento). En el caso de los Reyes Magos si crees en ellos, te portas bien y les haces caso tus papás, te traerán muchos regalos y, si no, te traerán carbón. En el caso de Dios, si crees en él, te portas bien y haces caso a todo lo que dice su libro sagrado, irás al cielo. En caso contrario arderás eternamente en las llamas del infierno. Vamos, lo mismo, así que analizando un poco descarté todas esas ideas.
En ese momento yo simplemente era agnóstico y no creía en los cuentos de hadas que oía, aunque no negaba rotundamente tampoco la existencia de algo; una fuerza, un ser supremo o lo que fuera.
Y después yo fui ateo. ¿Y cómo di el paso de agnóstico a ateo?
Sucedió cuando empecé la educación primaria, que en España es a los seis años, y más tarde, obligado por mis progenitores, las clases de catequesis.
Durante mi educación primaria fui aprendiendo sobre diferentes culturas, diferentes formas de pensar así como avances científicos y tecnológicos que dieron explicación a muchas de las incógnitas que padecía la humanidad desde el principio de los tiempos. Fíjate que los diluvios no eran causados porque un dios estuviera irritado. Ni los terremotos. El sol y la luna eran astros, entre otro tantos que se observan en el cosmos, y no dioses a los que adorar. Y así podemos seguir con un largo etcétera.
Mala suerte tuve, porque resulta que en el colegio donde estudiaba también había clases de religión, y aunque eran optativas por supuesto a mí no me era permitido elegir nada y todo pasaba a cargo de mis tutores legales. Así que, a tragárselas sin rechistar, que a quien no quiere un plato se le dan dos.
Algo que me enfadó sobremanera es la falta de consideración y de respeto hacia otras religiones. Lo cierto es que me tocó bastante la moral ya que encima la profesora resultó ser una patética xenofóbica, siendo esto poco raro si se siguen las pautas bíblicas al pie de la letra (literatura miles de años anterior a nuestra época, con una moralidad muy distinta).
Considerando el por qué de la existencia de las religiones, ya con la experiencia y la madurez de unos ocho o nueve años, vi que simplemente estaban allí para saciar un mero vacío existencial. Para atribuir a seres místicos todo aquellos desconocido y para apaciguar un poco ese miedo exorbitante que le tenemos a la muerte.
A partir de ahí dejé totalmente atrás cualquier creencia y me dediqué a reflexionar sobre otra cuestiones que todavía al día de hoy y por siempre me seguirán dando dolores de cabeza. Poco a poco la humanidad va avanzando y llegará un momento de plenitud en el que nuestra autoestima real (y no el falso egocentrismo que padecen muchos) nos permita prescindir de falsas mitologías y confiar totalmente en nuestras capacidades para resolver cualquier problema o duda que nos corroa por dentro.
Esta es mi experiencia y las razones de por qué pienso como pienso. Únicamente quería compartirla.
Un saludo.
28  Programación / Scripting / [BATCH]Bin2Bat en: 29 Julio 2012, 02:25 am
Este es un pequeño script que hice hace ya tiempo que es capaz de descomponer un fichero de un tamaño no superior a 64kb en hexadecimal, para luego volver a ensamblarlo usando debug.

Por cierto, no se me olvida, ¡muchas gracias a "Germaniac", que me ayudó a perfeccionarlo y a quitar la basura innecesaria!

Código:
@Echo Off
Title Bin2Bat
Set/P "File_Con=File: "
Set/P "File_Fin=BAT Name: "
Echo.
If Not Exist "%File_Con%" (
    Echo.File not Found.
    Pause>Nul
    Exit
)
Call:BfE "%File_Con%" "%File_Fin%"
Echo.Completed.
Pause>NUL
Exit
:BfE
  SetLocal EnableDelayedExpansion
 Set "_=Echo."
   Set/A "$=%~z1+0xFF"
 Call:D2H "%~z1" "#" & Call:D2H "%$%" "$"
    !_!@more +1 %%0^|Debug^>NUL^&Exit>"%~2"
   For /f "Eol=- Tokens=*" %%z in ('
       ^(!_!D 0100 %$%^&!_!Q^)^|DEBUG %~1
      ') do (Set "_TEX=%%z"
       Set "_SEX= !_TEX:~11,47!"
       Set "_SEX=!_SEX:   =!"
        call !_!e!_TEX:~5,4!%%_SEX:-= %%>>"%~2"
   )
(!_!RCX&!_!!#!&!_!N %~n2%~x1&!_!W&!_!Q)>>"%~2"
EndLocal & Exit/B
:D2H
  %ComSpec% /c Exit/B %~1
 For /f "Tokens=* Delims=0" %%_ in (
     "%=ExitCode%") Do Set "%~2=%%_"
 GoTo:EoF

Y ya que estamos, dejo un ejemplo de cómo queda el "CHOICE.COM" (para quienes no lo tengan para correr el Batch Tetris que posteé).

Código:

@more +1 %0|Debug>NUL&Exit
e0100 E9 32 04 59 4E 00 00 00 00 00 00 00 00 00 00 00
e0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0180 00 00 00 00 00 57 61 69 74 73 20 66 6F 72 20 74
e0190 68 65 20 75 73 65 72 20 74 6F 20 63 68 6F 6F 73
e01A0 65 20 6F 6E 65 20 6F 66 20 61 20 73 65 74 20 6F
e01B0 66 20 63 68 6F 69 63 65 73 2E 0D 0A 0D 0A 00 43
e01C0 48 4F 49 43 45 20 5B 2F 43 5B 3A 5D 63 68 6F 69
e01D0 63 65 73 5D 20 5B 2F 4E 5D 20 5B 2F 53 5D 20 5B
e01E0 2F 54 5B 3A 5D 63 2C 6E 6E 5D 20 5B 74 65 78 74
e01F0 5D 0D 0A 0D 0A 00 2F 43 5B 3A 5D 63 68 6F 69 63
e0200 65 73 20 53 70 65 63 69 66 69 65 73 20 61 6C 6C
e0210 6F 77 61 62 6C 65 20 6B 65 79 73 2E 20 44 65 66
e0220 61 75 6C 74 20 69 73 20 59 4E 0D 0A 2F 4E 20 20
e0230 20 20 20 20 20 20 20 20 20 44 6F 20 6E 6F 74 20
e0240 64 69 73 70 6C 61 79 20 63 68 6F 69 63 65 73 20
e0250 61 6E 64 20 3F 20 61 74 20 65 6E 64 20 6F 66 20
e0260 70 72 6F 6D 70 74 20 73 74 72 69 6E 67 2E 0D 0A
e0270 2F 53 20 20 20 20 20 20 20 20 20 20 20 54 72 65
e0280 61 74 20 63 68 6F 69 63 65 20 6B 65 79 73 20 61
e0290 73 20 63 61 73 65 20 73 65 6E 73 69 74 69 76 65
e02A0 2E 0D 0A 2F 54 5B 3A 5D 63 2C 6E 6E 20 20 20 20
e02B0 44 65 66 61 75 6C 74 20 63 68 6F 69 63 65 20 74
e02C0 6F 20 63 20 61 66 74 65 72 20 6E 6E 20 73 65 63
e02D0 6F 6E 64 73 0D 0A 74 65 78 74 20 20 20 20 20 20
e02E0 20 20 20 50 72 6F 6D 70 74 20 73 74 72 69 6E 67
e02F0 20 74 6F 20 64 69 73 70 6C 61 79 0D 0A 0D 0A 45
e0300 52 52 4F 52 4C 45 56 45 4C 20 69 73 20 73 65 74
e0310 20 74 6F 20 6F 66 66 73 65 74 20 6F 66 20 6B 65
e0320 79 20 75 73 65 72 20 70 72 65 73 73 65 73 20 69
e0330 6E 20 63 68 6F 69 63 65 73 2E 0D 0A 0D 0A 00 49
e0340 6E 76 61 6C 69 64 20 73 77 69 74 63 68 20 6F 6E
e0350 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2E 20 45
e0360 78 70 65 63 74 65 64 20 66 6F 72 6D 3A 0D 0A 20
e0370 20 20 20 00 43 48 4F 49 43 45 3A 20 69 6E 76 61
e0380 6C 69 64 20 63 68 6F 69 63 65 20 73 77 69 74 63
e0390 68 20 73 79 6E 74 61 78 2E 20 45 78 70 65 63 74
e03A0 65 64 20 66 6F 72 6D 3A 20 2F 43 5B 3A 5D 63 68
e03B0 6F 69 63 65 73 0D 0A 00 43 48 4F 49 43 45 3A 20
e03C0 49 6E 63 6F 72 72 65 63 74 20 74 69 6D 65 6F 75
e03D0 74 20 73 79 6E 74 61 78 2E 20 20 45 78 70 65 63
e03E0 74 65 64 20 66 6F 72 6D 20 54 63 2C 6E 6E 20 6F
e03F0 72 20 54 3A 63 2C 6E 6E 0D 0A 00 43 48 4F 49 43
e0400 45 3A 20 54 69 6D 65 6F 75 74 20 64 65 66 61 75
e0410 6C 74 20 6E 6F 74 20 69 6E 20 73 70 65 63 69 66
e0420 69 65 64 20 28 6F 72 20 64 65 66 61 75 6C 74 29
e0430 20 63 68 6F 69 63 65 73 2E 0D 0A 00 43 48 4F 49
e0440 43 45 3A 20 6F 6E 6C 79 20 6F 6E 65 20 70 72 6F
e0450 6D 70 74 20 73 74 72 69 6E 67 20 61 6C 6C 6F 77
e0460 65 64 2E 20 45 78 70 65 63 74 65 64 20 46 6F 72
e0470 6D 3A 0D 0A 20 20 20 20 00 43 48 4F 49 43 45 3A
e0480 20 72 65 71 75 69 72 65 73 20 4D 53 2D 44 4F 53
e0490 20 76 65 72 73 69 6F 6E 20 34 2E 30 20 6F 72 20
e04A0 6C 61 74 65 72 2E 0D 0A 00 00 00 01 00 00 00 00
e04B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e04C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e04D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e04E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e04F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0530 00 00 00 00 00 FC B0 01 B4 30 CD 21 3C 03 7F 0B
e0540 BB 79 04 E8 57 02 B0 FF E9 4E 02 06 B8 02 65 BB
e0550 FF FF B9 05 00 8B D3 0E BF 2F 05 CD 21 47 C4 3D
e0560 26 8B 1D B8 00 01 2B C3 A3 33 05 83 C7 02 89 3E
e0570 2F 05 8C 06 31 05 07 BE 81 00 AC 3C 0D 75 03 E9
e0580 38 01 3C 2F 74 41 3C 20 74 F0 3C 09 74 EC BF AF
e0590 04 80 3D 00 75 20 3C 22 75 04 B2 22 EB 03 B2 2F
e05A0 AA 8A 04 3C 0D 74 D3 3A C2 74 04 AA 46 EB F2 3C
e05B0 2F 74 C7 46 EB C4 BB 3C 04 E8 E1 01 BB BF 01 E8
e05C0 DB 01 B0 FF E9 D2 01 AC E8 E9 01 3C 3F 74 24 3C
e05D0 43 74 37 3C 4E 74 6D 3C 54 74 71 3C 53 75 03 E9
e05E0 D0 00 BB 3F 03 E8 B5 01 BB BF 01 E8 AF 01 B0 FF
e05F0 E9 A6 01 BB 85 01 E8 A4 01 BB BF 01 E8 9E 01 BB
e0600 F6 01 E8 98 01 B0 FF E9 8F 01 BF 03 01 8A 04 3C
e0610 3A 75 03 46 8A 04 3C 20 74 12 3C 09 74 0E 3C 0D
e0620 74 0A 3C 2F 74 06 AA 46 8A 04 EB EA B0 00 88 05
e0630 81 FF 03 01 74 03 E9 41 FF BB 74 03 E8 5E 01 B0
e0640 FF E9 55 01 C6 06 AB 04 00 E9 2E FF 8A 04 3C 3A
e0650 75 03 46 8A 04 3C 0D 74 4E 3C 2F 74 4A 3C 20 74
e0660 46 3C 09 74 42 A2 AE 04 46 8A 04 3C 2C 75 38 46
e0670 8A 04 3C 30 72 31 3C 39 77 2D 83 E0 0F A2 AD 04
e0680 46 8A 04 3C 30 73 03 E9 F0 FE 3C 39 76 03 E9 E9
e0690 FE A0 AD 04 BA 0A 00 F6 E2 8A 1C 80 E3 0F 02 C3
e06A0 A2 AD 04 46 E9 D3 FE BB B8 03 E8 F0 00 B0 FF E9
e06B0 E7 00 C6 06 AC 04 01 E9 C0 FE 80 3E AC 04 01 74
e06C0 1B A0 AE 04 E8 ED 00 A2 AE 04 BE 03 01 80 3C 00
e06D0 74 0A 8A 04 E8 DD 00 88 04 46 EB F1 BF 03 01 B9
e06E0 80 00 A0 AE 04 F2 AE 74 0B BB FB 03 E8 AE 00 B0
e06F0 FF E9 A5 00 BB AF 04 E8 A3 00 80 3E AB 04 01 75
e0700 29 BF 03 01 B4 02 B2 5B CD 21 B4 02 8A 15 CD 21
e0710 47 80 3D 00 74 08 B4 02 B2 2C CD 21 EB EC B4 02
e0720 B2 5D CD 21 B4 02 B2 3F CD 21 80 3E AD 04 00 74
e0730 2D B4 2C CD 21 88 36 AA 04 B4 0B CD 21 83 E0 01
e0740 83 C8 00 75 19 B4 2C CD 21 38 36 AA 04 74 EA 88
e0750 36 AA 04 FE 0E AD 04 75 E0 A0 AE 04 EB 04 B4 08
e0760 CD 21 BF 03 01 80 3E AC 04 01 74 03 E8 45 00 80
e0770 3D 00 74 05 AE 74 0A EB F6 B4 02 B2 07 CD 21 EB
e0780 DD B4 02 8A D0 CD 21 B4 02 B2 0D CD 21 B4 02 B2
e0790 0A CD 21 81 EF 03 01 8B C7 B4 4C CD 21 50 57 52
e07A0 B4 02 33 FF 8A 11 80 FA 00 74 05 CD 21 47 EB F4
e07B0 5A 5F 58 C3 53 57 06 3C 61 72 1B 3C 7A 77 04 2C
e07C0 20 EB 13 3C 80 72 0F C4 3E 2F 05 8B D8 32 FF 2B
e07D0 1E 33 05 26 8A 01 07 5F 5B C3
RCX
6DA
N CHOICE.COM
W
Q

Un saludo  :P
29  Programación / Scripting / [BATCH GAME] ¡Batch Tetris V 1.0! en: 28 Julio 2012, 09:01 am
¡Hola a todos!
En su momento, SmartGenius hizo un Tetris en batch (¡ya hace dos años, cómo corre el tiempo!).

Yo me he dedicado también a hacer una. Esta, como podéis ver, está coloreada.



El código es un poco complejo porque usando ANSI.SYS, a no ser que hagas una cutrada, no tienes tanto control sobre el plano como si lo definieras manualmente.


Requisitos:

Funciona únicamente en una plataforma Windows de 16 o 32 bits.
Es necesaria una primera ejecución con privilegios de administrador para que el programa pueda cargar el controlador de dispositivo ansi.sys en memoria.


Controles

Citar
A - Mover pieza a la izquierda
D - Mover pieza a la derecha
R - Rotar pieza (rotación hacia la derecha)
S - Descender pieza una posición

Aquí lo dejo:

Código:
@echo off
setlocal enableextensions enabledelayedexpansion
chdir /d "%temp%"
:_ansi.sys
mode con cols=80 lines=25
mem/c | find /i "ansi" 1>nul || ((
echo.device=%SystemRoot%\system32\ansi.sys /X
)>>%SystemRoot%\system32\config.nt
if "%~1" NEQ "1" (
start "" %0 1 & exit /b 0
) else (exit /b 1)
) 1>nul 2>&1
if "%~1" NEQ "_high" start "" /high /b "%~0" _high & exit /b 0
if not exist "choice.com" call :_choice.gen
exit|"%ComSpec%" /k prompt e$S100$S1B$_n$S@$_rcx$_1$_w$_q$_>#
debug<#>nul & for /f "tokens=*" %%_ in (@) do set "esc=%%_"
:_init.data
call :_LoadScreen
call :_LoadShapes
:::::::::::::::::
:::Bound Type 1::
set "Bound=Ï"
:::::::::::::::::
:::Block Type 2::
::set "Bound=²"::
:::::::::::::::::
:::Block Type 3::
::set "Bound=Û"::
:::::::::::::::::
Set "Table=Û"
set "-.LimX=27" & set "+.LimX=46" & set "-.LimY=3" & set "+.LimY=22"
set/a "Lin.Lim=%+.LimX%-%-.LimX%+1"
call :_LoadLines
set/a "Score=0"
Command/C Echo.%esc%[24;33H%esc%[0;34m%Score%
Command/C Echo.%esc%[1;66H%esc%[0;34m¸ Binary_Death
call :_make.shape
:_main

:::::::::Default Choice:::::::::::
choice.com /c:adrs /n /t:s,1 > nul
::::::::::::::::::::::::::::::::::

::You can use this if the game is running in Windows Vista/Seven::
::choice.exe /c adrs /d s /t 1 > nul
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

if "%errorlevel%" EQU "1" call :_move "X" "-" "1"
if "%errorlevel%" EQU "2" call :_move "X" "+" "1"
if "%errorlevel%" EQU "3" call :_rotate
call :_move "Y" "+" "1"

:::::Double Movement:::::
::call :_move "Y" "+" "1"
:::::::::::::::::::::::::

goto :_main
:_move
if "%~1" EQU "X" (
1>nul 2>&1,(echo:%CurShape%|find /i "X!%~2.LimX!") && goto :eof
set "cmd.crd=set "NewShape=^^!NewShape^^!,X^^!New.X^^!Y%%Y" & set "NewCrd=%%Y;^^!New.X^^!""
)
if "%~1" EQU "Y" (
1>nul 2>&1,(echo:%CurShape%|find /i "Y%+.LimY%") && (call :_fix.shape & goto :eof)
set "cmd.crd=set "NewShape=^^!NewShape^^!,X%%XY^^!New.Y^^!" & set "NewCrd=^^!New.Y^^!;%%X""
)
set "NewShape=" & set "ansi_line_old=" & set "ansi_line_new="
for %%c in (%CurShape%) do (
for /f "tokens=1,2 delims=X,Y" %%X in ("%%c") do (
set/a "New.%~1=%%%~1 %~2 %~3"
%cmd.crd%
set "ansi_line_old=!ansi_line_old!%esc%[%%Y;%%XH%esc%[0;30m%Table%"
set "ansi_line_new=!ansi_line_new!%esc%[!NewCrd!H%esc%[!shape[%CurShape.Num%.C]!m%Bound%"
)
)
if "%~4" NEQ "rotate" (
2>nul,set lin.cnt|findstr /i "%NewShape:,= %">nul && if "%~1" NEQ "X" (call :_fix.shape & goto :eof) else goto :eof
command /c echo:%ansi_line_old%&command /c echo:%ansi_line_new%
)
set "CurShape=%NewShape:~1%"
set/a "Movs.%~1%~2=%~3"
goto :eof
:_fix.shape
for %%_ in (%CurShape%) do for /f "tokens=1,2 delims=XY" %%X in ("%%_") do (
set/a "lin.num[%%Y]+=1" & set "lin.cnt[%%Y]=!lin.cnt[%%Y]!,%%_S!shape[%CurShape.Num%.C]:;=$!"
)
call :_cmp.lin
call :_make.shape
goto :eof
:_cmp.lin
for /l %%_ in (%-.LimY%,1,%+.LimY%) do (
if !lin.num[%%_]! GEQ %Lin.Lim% call :_down.lin "%%_"
)
goto :eof
:_down.lin
for /l %%_ in (%-.LimX%,1,%+.LimX%) do command /c echo:%esc%[%~1;%%_H%esc%[0;30m%Table%
for /l %%_ in (%~1,-1,%-.LimY%) do (
set/a "r_l=%%_-1"
call set "lin.num[%%_]=%%lin.num[!r_l!]%%"
if defined lin.cnt[!r_l!] (
call set "lin.cnt[%%_]=%%lin.cnt[!r_l!]:Y!r_l!=Y%%_%%"
) else  (set "lin.cnt[%%_]=")
for %%w in (!lin.cnt[%%_]!) do (
for /f "tokens=1,2,3 delims=XYS" %%X in ("%%w") do (
set/a "Old.Y=%%Y-1"
set "color=%%Z"
command /c echo:%esc%[!Old.Y!;%%XH%esc%[0;30m%Table%%esc%[%%Y;%%XH%esc%[!color:$=;!m%Bound%
)
)
)
set/a "Score+=100"
Command/C Echo.%esc%[24;33H%esc%[0;34m%Score%
goto :eof
:_rotate
if "%CurShape.Num%" EQU "5" goto :eof
set/a "f_p_x=0" & echo:%CurShape.Num%.%CurShape.Pos%|findstr /i "2.1 2.3">nul && set/a "f_p_x=1"
set/a "f_p_y=0" & echo:%CurShape.Num%.%CurShape.Pos%|findstr /i "2.0 2.2">nul && set/a "f_p_y=1"
set "CurShape.old=%CurShape%" & set "CurShape.Pos.old=%CurShape.Pos%"
set/a "CurShape.Pos=(%CurShape.Pos%+1) %% 4"
set "CurShape=!shape[%CurShape.Num%.%CurShape.Pos%]!"
if %Movs.X% GTR 9 set/a "Movs.X-=(%Movs.X%-9)+%f_p_x%"
if %Movs.Y% GTR 17 set/a "Movs.Y-=(%Movs.Y%-17)+%f_p_y%"
call :_move "X" "+" "%Movs.X%" "rotate" & set/a "Movs.X-=%Movs.X%"
call :_move "Y" "+" "%Movs.Y%" "rotate" & set/a "Movs.Y-=%Movs.Y%"
2>nul set lin.cnt|findstr /i "%CurShape:,= %">nul && (
set "CurShape=%CurShape.old%"
set "CurShape.Pos=%CurShape.Pos.old%"
goto :eof
)
call :_paint "%CurShape.old%" "%Table%" "0;30"
call :_paint "%CurShape%" "%Bound%" "!shape[%CurShape.Num%.C]!"
goto :eof
:_paint
set "ansi_line=echo:"
for %%c in (%~1) do for /f "tokens=1,2 delims=X,Y" %%p in ("%%c") do (
set "ansi_line=!ansi_line!%esc%[%%q;%%pH%esc%[%~3m%~2"
)
)
command /c %ansi_line%
goto :eof
:_make.shape
set/a "CurShape.Num=%random% %% 7", "CurShape.Pos=0"
set "CurShape=!shape[%CurShape.Num%.%CurShape.Pos%]!"
call :_paint "%CurShape%" "%Bound%" "!shape[%CurShape.Num%.C]!"
2>nul set lin.cnt|findstr /i "%CurShape:,= %">nul && goto :_gameover
set/a "Movs.X=0","Movs.Y=0","Create.Shape=0"
goto :eof
:_LoadScreen
more/c 0<nul
title Batch Tetris v1.0
color 07
for /l %%_ in (1,1,20) do set "s_p=!s_p! "
echo:     !s_p!  Batch  Tetris v1.0
echo:     !s_p!ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
for /l %%_ in (1,1,20) do echo:     !s_p!º!s_p!º
echo:     !s_p!ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo:     !s_p!Score:
goto:eof
:_LoadLines
for /l %%_ in (%-.LimY%,1,%+.LimY%) do (
set/a "lin.num[%%_]=0"
set "lin.cnt[%%_]="
)
goto :eof
:_gameover
more/c 0<nul & echo+Game Over.
pause  1>nul & exit
:_LoadShapes
set "shape[0.0]=X35Y3,X36Y3,X37Y3,X36Y4"
set "shape[0.1]=X35Y4,X36Y3,X36Y4,X36Y5"
set "shape[0.2]=X36Y3,X35Y4,X36Y4,X37Y4"
set "shape[0.3]=X35Y3,X35Y4,X35Y5,X36Y4"
set "shape[0.C]=0;33"
set "shape[1.0]=X36Y3,X37Y3,X35Y4,X36Y4"
set "shape[1.1]=X35Y3,X35Y4,X36Y4,X36Y5"
set "shape[1.2]=X36Y3,X37Y3,X35Y4,X36Y4"
set "shape[1.3]=X35Y3,X35Y4,X36Y4,X36Y5"
set "shape[1.C]=0;32"
set "shape[2.0]=X35Y3,X36Y3,X37Y3,X38Y3"
set "shape[2.1]=X35Y3,X35Y4,X35Y5,X35Y6"
set "shape[2.2]=X35Y3,X36Y3,X37Y3,X38Y3"
set "shape[2.3]=X35Y3,X35Y4,X35Y5,X35Y6"
set "shape[2.C]=0;31"
set "shape[3.0]=X35Y3,X36Y3,X37Y3,X37Y4"
set "shape[3.1]=X36Y3,X36Y4,X36Y5,X35Y5"
set "shape[3.2]=X35Y3,X35Y4,X36Y4,X37Y4"
set "shape[3.3]=X35Y3,X36Y3,X35Y4,X35Y5"
set "shape[3.C]=1;37"
set "shape[4.0]=X35Y3,X36Y3,X37Y3,X35Y4"
set "shape[4.1]=X35Y3,X36Y3,X36Y4,X36Y5"
set "shape[4.2]=X37Y3,X35Y4,X36Y4,X37Y4"
set "shape[4.3]=X35Y3,X35Y4,X35Y5,X36Y5"
set "shape[4.C]=0;35"
set "shape[5.0]=X35Y3,X36Y3,X35Y4,X36Y4"
set "shape[5.1]=X35Y3,X36Y3,X35Y4,X36Y4"
set "shape[5.2]=X35Y3,X36Y3,X35Y4,X36Y4"
set "shape[5.3]=X35Y3,X36Y3,X35Y4,X36Y4"
set "shape[5.C]=0;34"
set "shape[6.0]=X35Y3,X36Y3,X36Y4,X37Y4"
set "shape[6.1]=X36Y3,X35Y4,X36Y4,X35Y5"
set "shape[6.2]=X35Y3,X36Y3,X36Y4,X37Y4"
set "shape[6.3]=X36Y3,X35Y4,X36Y4,X35Y5"
set "shape[6.C]=1;36"
goto:eof
:_choice.gen
set "_=echo:e"
(
%_%0100 E9 32 04 59 4E 00 00 00 00 00 00 00 00 00 00 00
%_%0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0180 00 00 00 00 00 57 61 69 74 73 20 66 6F 72 20 74
%_%0190 68 65 20 75 73 65 72 20 74 6F 20 63 68 6F 6F 73
%_%01A0 65 20 6F 6E 65 20 6F 66 20 61 20 73 65 74 20 6F
%_%01B0 66 20 63 68 6F 69 63 65 73 2E 0D 0A 0D 0A 00 43
%_%01C0 48 4F 49 43 45 20 5B 2F 43 5B 3A 5D 63 68 6F 69
%_%01D0 63 65 73 5D 20 5B 2F 4E 5D 20 5B 2F 53 5D 20 5B
%_%01E0 2F 54 5B 3A 5D 63 2C 6E 6E 5D 20 5B 74 65 78 74
%_%01F0 5D 0D 0A 0D 0A 00 2F 43 5B 3A 5D 63 68 6F 69 63
%_%0200 65 73 20 53 70 65 63 69 66 69 65 73 20 61 6C 6C
%_%0210 6F 77 61 62 6C 65 20 6B 65 79 73 2E 20 44 65 66
%_%0220 61 75 6C 74 20 69 73 20 59 4E 0D 0A 2F 4E 20 20
%_%0230 20 20 20 20 20 20 20 20 20 44 6F 20 6E 6F 74 20
%_%0240 64 69 73 70 6C 61 79 20 63 68 6F 69 63 65 73 20
%_%0250 61 6E 64 20 3F 20 61 74 20 65 6E 64 20 6F 66 20
%_%0260 70 72 6F 6D 70 74 20 73 74 72 69 6E 67 2E 0D 0A
%_%0270 2F 53 20 20 20 20 20 20 20 20 20 20 20 54 72 65
%_%0280 61 74 20 63 68 6F 69 63 65 20 6B 65 79 73 20 61
%_%0290 73 20 63 61 73 65 20 73 65 6E 73 69 74 69 76 65
%_%02A0 2E 0D 0A 2F 54 5B 3A 5D 63 2C 6E 6E 20 20 20 20
%_%02B0 44 65 66 61 75 6C 74 20 63 68 6F 69 63 65 20 74
%_%02C0 6F 20 63 20 61 66 74 65 72 20 6E 6E 20 73 65 63
%_%02D0 6F 6E 64 73 0D 0A 74 65 78 74 20 20 20 20 20 20
%_%02E0 20 20 20 50 72 6F 6D 70 74 20 73 74 72 69 6E 67
%_%02F0 20 74 6F 20 64 69 73 70 6C 61 79 0D 0A 0D 0A 45
%_%0300 52 52 4F 52 4C 45 56 45 4C 20 69 73 20 73 65 74
%_%0310 20 74 6F 20 6F 66 66 73 65 74 20 6F 66 20 6B 65
%_%0320 79 20 75 73 65 72 20 70 72 65 73 73 65 73 20 69
%_%0330 6E 20 63 68 6F 69 63 65 73 2E 0D 0A 0D 0A 00 49
%_%0340 6E 76 61 6C 69 64 20 73 77 69 74 63 68 20 6F 6E
%_%0350 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2E 20 45
%_%0360 78 70 65 63 74 65 64 20 66 6F 72 6D 3A 0D 0A 20
%_%0370 20 20 20 00 43 48 4F 49 43 45 3A 20 69 6E 76 61
%_%0380 6C 69 64 20 63 68 6F 69 63 65 20 73 77 69 74 63
%_%0390 68 20 73 79 6E 74 61 78 2E 20 45 78 70 65 63 74
%_%03A0 65 64 20 66 6F 72 6D 3A 20 2F 43 5B 3A 5D 63 68
%_%03B0 6F 69 63 65 73 0D 0A 00 43 48 4F 49 43 45 3A 20
%_%03C0 49 6E 63 6F 72 72 65 63 74 20 74 69 6D 65 6F 75
%_%03D0 74 20 73 79 6E 74 61 78 2E 20 20 45 78 70 65 63
%_%03E0 74 65 64 20 66 6F 72 6D 20 54 63 2C 6E 6E 20 6F
%_%03F0 72 20 54 3A 63 2C 6E 6E 0D 0A 00 43 48 4F 49 43
%_%0400 45 3A 20 54 69 6D 65 6F 75 74 20 64 65 66 61 75
%_%0410 6C 74 20 6E 6F 74 20 69 6E 20 73 70 65 63 69 66
%_%0420 69 65 64 20 28 6F 72 20 64 65 66 61 75 6C 74 29
%_%0430 20 63 68 6F 69 63 65 73 2E 0D 0A 00 43 48 4F 49
%_%0440 43 45 3A 20 6F 6E 6C 79 20 6F 6E 65 20 70 72 6F
%_%0450 6D 70 74 20 73 74 72 69 6E 67 20 61 6C 6C 6F 77
%_%0460 65 64 2E 20 45 78 70 65 63 74 65 64 20 46 6F 72
%_%0470 6D 3A 0D 0A 20 20 20 20 00 43 48 4F 49 43 45 3A
%_%0480 20 72 65 71 75 69 72 65 73 20 4D 53 2D 44 4F 53
%_%0490 20 76 65 72 73 69 6F 6E 20 34 2E 30 20 6F 72 20
%_%04A0 6C 61 74 65 72 2E 0D 0A 00 00 00 01 00 00 00 00
%_%04B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%04C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%04D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%04E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%04F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
%_%0530 00 00 00 00 00 FC B0 01 B4 30 CD 21 3C 03 7F 0B
%_%0540 BB 79 04 E8 57 02 B0 FF E9 4E 02 06 B8 02 65 BB
%_%0550 FF FF B9 05 00 8B D3 0E BF 2F 05 CD 21 47 C4 3D
%_%0560 26 8B 1D B8 00 01 2B C3 A3 33 05 83 C7 02 89 3E
%_%0570 2F 05 8C 06 31 05 07 BE 81 00 AC 3C 0D 75 03 E9
%_%0580 38 01 3C 2F 74 41 3C 20 74 F0 3C 09 74 EC BF AF
%_%0590 04 80 3D 00 75 20 3C 22 75 04 B2 22 EB 03 B2 2F
%_%05A0 AA 8A 04 3C 0D 74 D3 3A C2 74 04 AA 46 EB F2 3C
%_%05B0 2F 74 C7 46 EB C4 BB 3C 04 E8 E1 01 BB BF 01 E8
%_%05C0 DB 01 B0 FF E9 D2 01 AC E8 E9 01 3C 3F 74 24 3C
%_%05D0 43 74 37 3C 4E 74 6D 3C 54 74 71 3C 53 75 03 E9
%_%05E0 D0 00 BB 3F 03 E8 B5 01 BB BF 01 E8 AF 01 B0 FF
%_%05F0 E9 A6 01 BB 85 01 E8 A4 01 BB BF 01 E8 9E 01 BB
%_%0600 F6 01 E8 98 01 B0 FF E9 8F 01 BF 03 01 8A 04 3C
%_%0610 3A 75 03 46 8A 04 3C 20 74 12 3C 09 74 0E 3C 0D
%_%0620 74 0A 3C 2F 74 06 AA 46 8A 04 EB EA B0 00 88 05
%_%0630 81 FF 03 01 74 03 E9 41 FF BB 74 03 E8 5E 01 B0
%_%0640 FF E9 55 01 C6 06 AB 04 00 E9 2E FF 8A 04 3C 3A
%_%0650 75 03 46 8A 04 3C 0D 74 4E 3C 2F 74 4A 3C 20 74
%_%0660 46 3C 09 74 42 A2 AE 04 46 8A 04 3C 2C 75 38 46
%_%0670 8A 04 3C 30 72 31 3C 39 77 2D 83 E0 0F A2 AD 04
%_%0680 46 8A 04 3C 30 73 03 E9 F0 FE 3C 39 76 03 E9 E9
%_%0690 FE A0 AD 04 BA 0A 00 F6 E2 8A 1C 80 E3 0F 02 C3
%_%06A0 A2 AD 04 46 E9 D3 FE BB B8 03 E8 F0 00 B0 FF E9
%_%06B0 E7 00 C6 06 AC 04 01 E9 C0 FE 80 3E AC 04 01 74
%_%06C0 1B A0 AE 04 E8 ED 00 A2 AE 04 BE 03 01 80 3C 00
%_%06D0 74 0A 8A 04 E8 DD 00 88 04 46 EB F1 BF 03 01 B9
%_%06E0 80 00 A0 AE 04 F2 AE 74 0B BB FB 03 E8 AE 00 B0
%_%06F0 FF E9 A5 00 BB AF 04 E8 A3 00 80 3E AB 04 01 75
%_%0700 29 BF 03 01 B4 02 B2 5B CD 21 B4 02 8A 15 CD 21
%_%0710 47 80 3D 00 74 08 B4 02 B2 2C CD 21 EB EC B4 02
%_%0720 B2 5D CD 21 B4 02 B2 3F CD 21 80 3E AD 04 00 74
%_%0730 2D B4 2C CD 21 88 36 AA 04 B4 0B CD 21 83 E0 01
%_%0740 83 C8 00 75 19 B4 2C CD 21 38 36 AA 04 74 EA 88
%_%0750 36 AA 04 FE 0E AD 04 75 E0 A0 AE 04 EB 04 B4 08
%_%0760 CD 21 BF 03 01 80 3E AC 04 01 74 03 E8 45 00 80
%_%0770 3D 00 74 05 AE 74 0A EB F6 B4 02 B2 07 CD 21 EB
%_%0780 DD B4 02 8A D0 CD 21 B4 02 B2 0D CD 21 B4 02 B2
%_%0790 0A CD 21 81 EF 03 01 8B C7 B4 4C CD 21 50 57 52
%_%07A0 B4 02 33 FF 8A 11 80 FA 00 74 05 CD 21 47 EB F4
%_%07B0 5A 5F 58 C3 53 57 06 3C 61 72 1B 3C 7A 77 04 2C
%_%07C0 20 EB 13 3C 80 72 0F C4 3E 2F 05 8B D8 32 FF 2B
%_%07D0 1E 33 05 26 8A 01 07 5F 5B C3
ECHO:RCX
ECHO:6DA
ECHO:N CHOICE.COM
ECHO:W
ECHO:Q
) | debug 1>nul 2>&1
goto :eof


Si notáis algún error, por favor hacédmelo saber.

¡Un saludo!

PD: El foro deforma el código. Aquí podéis descargalo: https://www.dropbox.com/s/blk8j8dpo17teq8/Tetris.bat

EDIT: Código optimizado.

EDIT2: Arreglado un bug en la rotación.

EDIT FINAL: Versión 1.0 totalmente terminada. El código ahora mismo genera el choice.com para evitar molestias de tener que descargarlo. También corregí la corrección del bug en la rotación, que había quedado solucionado a medias. Por lo demás, cambié el estilo de los bloques por un nuevo carácter que creo que queda mejor, aún así, si no os gusta, podéis volver a lo viejo descomentando la linea
Código:
set "Bound=²"
.
También estudié más a fondo el tetris original y vi que las figuras sí que son elegidas aleatoriamente, mas no su posición. Por otro lado, vi también que la primera posición de cada figura está definida, no puedes poner una cualquiera. Lo arreglé, también.

Si veis algún error más, comentádmelo por favor.
30  Programación / Scripting / [BATCH]¡Convertir keyboard.com en CHOICE! en: 27 Julio 2012, 04:53 am
Uno de los grandes inconvenientes de los batch games es sin duda que muchos necesitan el comando choice para poder seguir la ejecución del juego mientras se espera la entrada por el teclado.

Con este método, se puede lograr el mismo efecto e incluso mejor, porque no hay un tiempo de espera de 1 segundo.

Código:
@Echo Off
setlocal enableextensions enabledelayedexpansion
chdir /d "%TEMP%"
if not exist "keyboard.com" call :_code[keymake]
goto:_code[%~1]
:_code[]

start "" /b "%~0" keypress

:_keypress
if exist @ (
1>nul 2>&1,set/p "k_p=" 0<@
if "!k_p!" EQU "65" echo. Presionaste A & ping -n 2 localhost > nul
if "!k_p!" EQU "66" echo. Presionaste B & ping -n 2 localhost > nul
1>nul 2>&1,del /f /q @
)
echo: Mientras tanto, mostramos mensajes.
goto :_keypress

:_code[keypress]
keyboard.com & echo.!errorlevel!>@ 2>nul
goto:_code[keypress]

:_code[keymake]
(ECHO.N KEYBOARD.COM
ECHO.E 0000 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
ECHO.R CX
ECHO.000E
ECHO.W0
ECHO.Q)|DEBUG 1>NUL 2>&1
GOTO:EOF

¡Un saludo!

PD: Lo malo es que no funciona con ansi.sys  :xD ni siquiera sé bien por qué, pero parece ser que el command.com interrumpe la ejecución del hilo principal y se la da al hilo secundario, es algo raro, pero bueh, usando el método de toda la vida para los batch games no hay ningún problema.
Páginas: 1 2 [3] 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines