SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Visual Basic para principiantes => Mensaje iniciado por: Diego1908 en Jueves 18 de Octubre de 2012, 05:17

Título: como hacer un scramble para windows aplication
Publicado por: Diego1908 en Jueves 18 de Octubre de 2012, 05:17
hola mi maestro de programacion a mobil me pidio un scramble en puro codigo, no tengo idea de como hacerlo y nesesito ke me orienten un poko, de igual manera muchas gracias
Título: Re:como hacer un scramble para windows aplication
Publicado por: Nebire en Domingo 21 de Octubre de 2012, 22:17
Si tu profesor te ha pedido, que realices ese código, entiendo que es porque considera que estás capacitado para hacerlo, en cualquier caso si te damos el código, qué sentido tendría que te lo pidiera tu profesor?. si te lo pide es porque quiere que te esfuerces. es decir, es norma del foro, no darte la pieza asada, si no enseñarte donde se caza y cómo, pero cazar es cosa tuya.

Por scramble, entiendo que te refieres al típico videojuego, donde tienes una nave que se mueve de lado a lado y va disparando a diestro y siniestro matando naves enemigas. si esto es así, aunque el juego es realmente sencillo exige por parte del alumno, ciertos conocimientos ya adquiridos sobre el lenguaje donde pretende implementarlo.

De entrada lo mejor es situar tu nave en la parte inferiro de la pantalla, dibujarla es suficiente con con una elipse de tamaño x, una línea que represente el cañón y otra elipse o círculo de x/2 o menor tamaño encima de los anteriores, esto se puede dibujar drectamente con line y circle o bien con los controles shape (las elipses) y el control line (el cañon). Una vez tenga la rutina de dibujado tendrías que hacer una rutina de moviento de tu nave, esto implica 2 movimientos, el desplazamiento horizontal y el movimiento del cañón. Para el 1º basta con mover los shape y el line x pixels a derecha o izquierda conforme a un evento de teclado al pulsar 2 teclas prefijadas.
El movimiento del cañón requiere ás trabajo, pués es un giro, y debes saber trasladar las cordenada del extremo del cañón, a base de grados coincidiendo con eventos de pulsación de 2 teclas (una que gire a derecha y otra a izquierda), además tanto el movimiento de la nave como del cañón deben tener comprobación de límites para no superarlos (la nave no salga fuera de la pantalla), por tanto antes de mover hay que verificar que el incremento solicitado no lo mueve fuera de la pantalla si es así, se puede mover,si no, ignorar...

Un tercer movimiento es el de la bala del cañón o láser (eso al gusto). Este movimeinto puede estar refleajada en una clase y contener unos datos simples: cordenada actual, originalmente el final del cañón, luego donde se vaya actualizando), el radio, inicialmente la distancia del cañón, el ángulo de disparo (para definir la trayectoria de avance) y la velocidad de avance (si es constante se puede obviar y ser controlado por el timer). Cada disparo retiene sus valores en una instancia de esa clase, y son añadidos a una colección. Luego un timer se encarga de ir actualizando las balas, cada x milisegundos, Esto implica que recorre la colección, extrayendo cada vez una y que dada la cordanada actual se incrementa el radio actual en una unidad (o el valor que determines), luego se borra la bala de su posición actual (por eso hayq ue retener su posición y se dibuja en la nueva y así por cada bala que haya en la clección.

Para no ralentizar el dibujado sería acertado limitar el número de balas que es posible disparar, es decir cuando se alcance x números de balas (en la colección no se permitirá disparar otra), y cuando una bala salga de pantalla o alcance un blanco se elimina de la colección, para no comprobar que está fuera de la pantalla puesto que el ancho y alto son distintos, considera un radio máximo, el cual una vez superado se elimine la bala.

Por supuesto antes de dibujar la bala en su nueva posición, debes verificar que no ha alcanzado a una nave enemiga, esto se hace recorriendo una matriz o colección que contiene las cordenadas de todas las naves enemigas. Por cuestiones de velocidad, puedes plantearlo de tal forma que no necesites recorrer toda la colección si no sólo los que estén (por lo menos)a la derecha o izquierda (según en que dirección avance la bala) de la cordenada original desde la que se disparó la bala.

Las naves enemigas para facilitar su programación podrían inicialmente ser un número finito, estar dispuestas en filas y columnas  y tener todas un movimiento uniforme, de ese modo mover todas a un lado, sería tan sencillo como mover solo la de la más a la derecha hacia la izquierda (cuando se mueven a izquierda) y viceversa... pero esto, con ser un buen recurso, sólo vale si toda la fila está completa...

Para terminar, tu juego inicialmente podría tener un enemigo que no dispare, simplemente tus enemigos deberían ocupar sólo medio ancho de pantalla y cuando alcancen un extremo moviéndose hacia el lado, descienden uno de alto...

Tu ganas cuando has destruído todas las naves (cada vez que destruyes una, sumas 1 nave destruída cuando naves destruidas=naves totales, has ganado la partida). en cambio si la naves enemigas alcanzan la línea de tu nave tu pierdes la partida. Los movimientos de las naves no los hagas de 1pixel en uno, si no en jmúltiplos de por ejemplo 4 u 8 (debes probar hasta que veas que el juego resulta fluído y jugable).


Como ves se necesitan ciertos conocimientos de programación y un algo de matemáticas para mover el cañón adecuadamente y calcular las posiciones actualizadas de las balas... Y eso que un juego extremadamente simple. Ya depende de tus conocimientos de programación, pon el código que seas capaz de hacer y donde te pierdas pregunta puntualmente y se te orienta, pero recuerda que no se hacen tareas, sólo auda spuntuales donde uno se queda atascado...