GLBasic forum

Other languages => GLBasic - es => Topic started by: Jonás Perusquía on 2012-May-02

Title: juego en proceso
Post by: Jonás Perusquía on 2012-May-02
Hola mis queridos amigos, estoy haciendo un juego que empezó solamente como una prueba de código....

Lo que quiero hacer es que controles un pequeño sprite "medal.png" con el mouse y cuando toque cualquiera de los cuadritos verdes callendo "DRAWREC" salga Game Over

Ustedes saben que GLBasic se maneja por coordenadas...

El problema que tengo es que no puedo lograr que cuando un rectangulo verde toque al sprite, salga GameOVer...

Lo que he logrado es que cuando la posición del mouse sea igual a cualquier parte de rectangulo, aparezca GameOver

no se si me estoy explicando bien, pero el problema es que la mitad del sprite puede estar dentro de un rectangulo verde, pero no saldrá GameOver si la posición del mouse no está dentro del rectangulo... ese es el problema

éste es el código de mi juego:
Code (glbasic) Select
SETCURRENTDIR("Media") // go to media files
LOADFONT "smalfont.png", 0
LOADSPRITE "medal.png", 0
GLOBAL sx,sy,mx,my,b1,b2,y,x,x2,y2,x3,y3,rx,ry
GETSCREENSIZE sx,sy
SETFONT 0
LIMITFPS 60
PLAYMUSIC "ditrabox2.mp3", TRUE
//--- VARIABLES ---//
y=-20
x=RND((sx-15)+5)
x2=RND((sx-15)+5)
y2=-20
x3=RND((sx-15)+5)
y3=-20
rx=30
ry=60
GOSUB menu


//--- MENU ---//
SUB menu:
CLEARSCREEN RGB(0,0,0)
PRINT "Start Game", sx/2-30,sy/2
SHOWSCREEN
MOUSEWAIT
GOSUB game
ENDSUB


//--- OBJETOS Y MOVIMIENTO ---//
SUB game:
WHILE y < sy+30

MOUSESTATE mx,my,b1,b2

DRAWSPRITE 0, mx,my

//--- RECTANGULOS VERDES ---//
DRAWRECT x,y, rx, ry, RGB (100,244,100)
DRAWRECT x2,y2, rx, ry, RGB (100,244,100)
DRAWRECT x3,y3, rx, ry, RGB (100,244,100)

y=y+3
y2=y2+4
y3=y3+5

SHOWSCREEN

CLEARSCREEN
//--- OPCIONES CUADRO 1---//
IF y >= sy+30
y=-20
ENDIF

//--- OPCION 1 FIN ---//
IF mx >= x AND mx <= x+30
IF my >= y AND my <= y+60
CLEARSCREEN RGB(149,0,0)
PRINT "GAME OVER", sx/2-30,sy/2
SHOWSCREEN
MOUSEWAIT
GOSUB menu
ENDIF
ENDIF

//--- NUEVA POSICIÓN ---//
IF y=-20
x=RND((sx-15)+5)
ENDIF

//--- OPCIONES CUADRO 2---//
IF y2 >= sy+30
y2=-20
ENDIF

//--- OPCION 2 FIN ---//
IF mx >= x2 AND mx <= x2+30
IF my >= y2 AND my <= y2+60
CLEARSCREEN RGB(149,0,0)
PRINT "GAME OVER", sx/2-30,sy/2
SHOWSCREEN
MOUSEWAIT
GOSUB menu
ENDIF
ENDIF

//--- NUEVA POSICIÓN ---//
IF y2=-20
x2=RND((sx-15)+5)
ENDIF

//--- OPCIONES CUADRO 3---//
IF y3 >= sy+30
y3=-20
ENDIF

//--- OPCION 3 FIN ---//
IF mx >= x3 AND mx <= x3+30
IF my >= y3 AND my <= y3+60
CLEARSCREEN RGB(149,0,0)
PRINT "GAME OVER", sx/2-30,sy/2
SHOWSCREEN
MOUSEWAIT
GOSUB menu
ENDIF
ENDIF

//--- NUEVA POSICIÓN ---//
IF y3=-20
x3=RND((sx-15)+5)
ENDIF
WEND
ENDSUB
Title: Re: juego en proceso
Post by: mentalthink on 2012-May-02
Hola Jonaspm, mira te dejo un pequeño programa que te he hecho, ya que la manera en la que has puesto el código, me lia un poco la cabeza, no suelo usar ni SUBS ni Gotos...

Por otro lado, si necesitas saber como funciona mejor GLbasic, MRTAtoad tiene unos libros excelentes, y són lo unicos en el Mercado, están en Inglés, pero son sencillos de entender, su precio es muy económico en su version digital, unos 6 o 7 €, lo puedes encontrar en LULU Books, pero seleccionando la lenua Inglesa...

Un saludo JonasPM, y si no entiendes mucho el código dimélos...


[attachment deleted by admin]
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-02
mentalthink, gracias por el programa, despues de escribir el post, busqué en el Manual, y encontré el comando

SPRCOLL()


ese comando ha solucionado mi problema, te agradezco tu aportación, y si, la verdad estoy algo atorado con GLBasic, pero por el momento solo haciendo pequeñas pruebas... gracias!!!
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-02
he terminado la versión BETA de mi juego/prueba, aqui la descarga:



[attachment deleted by admin]
Title: Re: juego en proceso
Post by: erico on 2012-May-02
What a great beta game!
Don´t forget you can also calculate collisions by coordenates, it may be more work, but it could be more compatible/fast through different platforms?

Anyway, great stuff. Movement is smooth.
Only quibble is that the ship is a little rough compared to the meteors. :-[
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-02
thanks! :)

i plan to add:

-Life counter
-Time counter
-Exit button
Title: Re: juego en proceso
Post by: erico on 2012-May-02
Your code is quite unusual (and unique), now that I read mentalthink´s post...
But that, in my opinion, is exactly what basic is all about, to achieve first and fast results.

My own codes are really absurd, but they get there too :).
Sometimes, checking snipets from the more experienced coders on the forum, I learn a lot, other times, I don´t understand anything at all! Most of the times the later :D

Mr.Tatoads books are great, check them out. I have a couple here, got the electronic versions.

Let us know how your advancement goes, the proposed plan is great!
Title: Re: juego en proceso
Post by: mentalthink on 2012-May-02
Pues JonasPm, con el tiempo que llevas, has hecho más que yo en 2 meses cuando empezé... como comentá Erico, "empapaté" bien con todo lo que hay en el foro, vas a disfrutar una barbaridad....

Como dice Hark0, sigué dándole caña y dentro de un año, ya verás...

@Erico, you not are the only one, sometimes I read some Master´s Code, and I don´t understood nothing... I rebember the DrPetters port, for make sounds in real time... not it´s becuase It´s bad wrote, but GLbasic it´s too powrfull and sometimes are very complex, if one not it´s a professional programmer...
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-03
gracias por su apoyo :D}
de hecho, estoy encantado con GLBasic, tiene mucho poder!

ya he publicado la versión 1.7 del juego "DitraFall" para PC y Android

la versión de PC funciona con las teclas, la version para Android funciona con el touch(algo obvio jeje)

ya he abierto la página del "pequeño estudio" y ahi publicaré los juegos

desafortunadamente no cuento con el dinero necesario para subir el juego a Google Play asi que ni modo :/

www.ditrabox.es.tl
Title: Re: juego en proceso
Post by: hardyx on 2012-May-03
Cuando he visto el primer post te iba a hablar sobre SPRCOLL(), pero ya veo que has avanzado rápido y lo has descubierto por tu cuenta. Suerte con esos juegos.
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-05
Ya he avanzado el juego bastante!

ahora el problema que tengo es que tengo muchos ROTOSPRITE y alenta el juego bastante (en Android) y la aplicación está dirigida principalmente a Android...


no saben si en la siguiente versión de GLBasic irá mas rápido?
Title: Re: juego en proceso
Post by: mentalthink on 2012-May-05
Hay una manera que comentán siempre que es más rápida que lo Sprites, que es usar Polyvectors...

Otra manera que se me ocurre, es que en vez de hacer un rotosprite , hagas una secuencia de imagenes, tampoco sin pasarte , y tendrás más o menos bien rotados los objetos... pero la gente por aqui y por alla, siempre dicen que los polyvector son más rapidos... eso si tendrás que aplicar las mates para hacerlos rotar...
Title: Re: juego en proceso
Post by: Hark0 on 2012-May-05
También está la opción manual.

Coges el sprite y lo rotas X veces. De cada giro sacas una imagen. Luego las pegas en una imagen grande una al lado de otra. Y lo cargas con loadanim. Lo pintas con drawanim codigo de la imagen, fotograma, x, y...

;)
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-06
gracias por sus respuestas, ya he corregido el problema de la lentitud, y era causado porque dentro de un WHILE, tenía un IF, y dentro de ese IF tenía un LOADSPRITE...
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-06
una pregunta, alguien sabe de algún tutorial o algo sobre hacer animaciones?

me gustaría que la nave espacial del juego tuviera un poco de movimiento :)
Title: Re: juego en proceso
Post by: mentalthink on 2012-May-06
Bueno yo personalmente hago todos los graficos en programas 3D, luego saco los renders y tengo las imágenes desde cualquier punto de vista ..., sino es a mano...

Por arriba en el foro inglés, creo que Wampus hablá de un soft nuevo que han sacado para hacer animaciones, el cual he probado y está muy bien para el tema de Sprites... pero sinceramente ese tipo de Editor con GLbasic se puede hacer sin demasiada complejidad... (al menos eso creo)
Title: Re: juego en proceso
Post by: hardyx on 2012-May-08
Quote from: jonaspm on 2012-May-06
una pregunta, alguien sabe de algún tutorial o algo sobre hacer animaciones?

me gustaría que la nave espacial del juego tuviera un poco de movimiento :)
Mirate los comandos LOADANIM y DRAWANIM, no se si tendrán ejemplos, pero es muy sencillo. Te creas una imagen con los tiles de la animación, la cargas diciendo los elementos que tiene, y luego la pintas con el frame adecuado en cada momento. El frame es el cuadro de animación que vas a mostrar en cada showscreen. Eso sobre programar, sobre dibujarlas es todo un arte y hay programas para hacer sprites y animaciones.
Title: Re: juego en proceso
Post by: Jonás Perusquía on 2012-May-09
Anunciando la versión 2.4 de mi jueguito :3

[attachment deleted by admin]