Author Topic: La primera en la frente  (Read 2609 times)

Offline Sintax error

  • Mc. Print
  • *
  • Posts: 2
    • View Profile
La primera en la frente
« on: 2011-Jul-11 »
Hola todo el mundo,

Soy nuevo por aquí y acabo de aterrizar en GLBasic, mis conocimientos sobre programación son casi nulos, haciendo unas pruebas con algunos códigos de ejemplo me he topado con este error

"DesktopClock.gbas"(38) error : variable is not explicitly defined : fup


Alguien sabe de que va el error ?, que es lo que provoca el error?.

El código en cuestión es le siguiente :
Code: GLBasic [Select]
// --------------------------------- //
// Project: DesktopClock
// Start: Thursday, August 14, 2008
// IDE Version: 5.341
// Created by Hemlos@glbasic.com
// do a compile: 800x 600 fullscreen mode...looks cool

        LOCAL sx,sy,h,w
        GETSCREENSIZE sx,sy
        GETFONTSIZE w,h
        LOCAL cx=sx/2
        LOCAL cy=sy/2
        AUTOPAUSE FALSE
        ALPHAMODE -1
        LOADSPRITE "1.png",0
        LOADSPRITE "1.png",1

WHILE TRUE
        SYSTEMPOINTER FALSE
        drawwater()

        //jitter effect: turned off..gave me a headache lol
//dosfx=dosfx+1
//IF dosfx>3 THEN dosfx=0
//IF dosfx=10
//      velx=RND(4)-2
//      vely=RND(4)-2
//      cx2=cx
//      cx=cx2+velx
//      cy2=cy
//      cy=cy2+vely
//ENDIF

        IF cy>400 THEN cy=400
        IF cx>600 THEN cx=600
        IF cx<200 THEN cx=200
        IF cy<200 THEN cy=200
        IF fup=0;  fx1=fx1-1; IF fx1<1; fup=1;ENDIF; ENDIF
        IF fup=1;  fx1=fx1+1; IF fx1>250; fup=0;ENDIF;ENDIF
    sxf(RGB(1,1,1),RGB(-fx1,1,1),cx,cy,170,66)
        DRAWRING(RGB(20,20,fx1),RGB(-fx1,20,20),cx,cy,245,195)
        DRAWRING(RGB(-fx1,20,20),RGB(20,20,fx1),cx,cy,195,170)
        DRAWCIRCLE(RGB(1,1,1),cx,cy,66)
        DRAWCIRCLE(RGB(fx1,1,1),cx,cy,200)
        DRAWCIRCLE(RGB(1,1,fx1),cx,cy,240)
        IF KeyBoardIO()>-1 THEN END

        //seconds hand
        STARTPOLY 0
        //DRAWLINE cx,cy,cx+200*COS(secs*6-90),cy+200*SIN(secs*6-90),RGB(RND(200)+20,RND(200)+20,RND(200)+20) //secs
        POLYVECTOR cx+200*COS(secs*6-90),cy+200*SIN(secs*6-90),cx+200*COS(secs*6-90),cy+200*SIN(secs*6-90),RGB(255,255,fx1)
        POLYVECTOR cx+10*COS(secs*6-180),cy+10*SIN(secs*6-180),cx+10*COS(secs*6-180),cy+10*SIN(secs*6-180),RGB(1,1,1)
        POLYVECTOR cx+10*COS(secs*6),cy+10*SIN(secs*6),cx+10*COS(secs*6),cy+10*SIN(secs*6),RGB(1,1,1)
        ENDPOLY

        //minutes hand
        STARTPOLY 0
        //DRAWLINE cx,cy,cx+166*COS(mins*6-90),cy+166*SIN(mins*6-90),RGB(RND(200)+20,0,0)//mins
        POLYVECTOR cx+150*COS(mins*6-90),cy+150*SIN(mins*6-90),cx+200*COS(mins*6-90),cy+200*SIN(mins*6-90),RGB(255,255,fx1)
        POLYVECTOR cx+10*COS(mins*6-180),cy+10*SIN(mins*6-180),cx+10*COS(mins*6-180),cy+10*SIN(mins*6-180),RGB(1,1,1)
        POLYVECTOR cx+10*COS(mins*6),cy+10*SIN(mins*6),cx+10*COS(mins*6),cy+10*SIN(mins*6),RGB(1,1,1)
        ENDPOLY

        // hours hand
        STARTPOLY 0
        //DRAWLINE cx,cy,cx+122*COS(hrs*30-90),cy+122*SIN(hrs*30-90),RGB(0,0,RND(200)+20) //hours
        POLYVECTOR cx+100*COS(hrs*30-90),cy+100*SIN(hrs*30-90),cx+200*COS(hrs*30-90),cy+200*SIN(hrs*30-90),RGB(255,255,fx1)
        POLYVECTOR cx+10*COS(hrs*30-180),cy+10*SIN(hrs*30-180),cx+10*COS(hrs*30-180),cy+10*SIN(hrs*30-180),RGB(1,1,1)
        POLYVECTOR cx+10*COS(hrs*30),cy+10*SIN(hrs*30),cx+10*COS(hrs*30),cy+10*SIN(hrs*30),RGB(1,1,1)
        ENDPOLY


        DRAWDISC(RGB(1,1,1),RGB(255,255,fx1),cx,cy,22)
        DRAWCIRCLE(RGB(1,1,1),cx,cy,22)


        FOR i= 1 TO 12 //draw little lines and numbers
                DRAWLINE cx+200*COS(i*30),cy+200*SIN(i*30),cx+210*COS(i*30),cy+210*SIN(i*30),RGB(1,fx1,1)
                PRINT i,cx+225*COS(i*30-90)-8,cy+225*SIN(i*30-90)-h/2-2
        NEXT

        secs1=convert(ASC(MID$(PLATFORMINFO$("TIME"),18,1)))
        secs2=convert(ASC(MID$(PLATFORMINFO$("TIME"),17,1)))
        mins1=convert(ASC(MID$(PLATFORMINFO$("TIME"),15,1)))
        mins2=convert(ASC(MID$(PLATFORMINFO$("TIME"),14,1)))
        hrs1= convert(ASC(MID$(PLATFORMINFO$("TIME"),12,1)))
        hrs2= convert(ASC(MID$(PLATFORMINFO$("TIME"),11,1)))
        secs=secs2*10
        secs=secs+secs1
        mins=mins2*10
        mins=mins+mins1
        hrs=hrs2*10
        hrs=hrs+hrs1
         IF hrs=0 THEN hrs=12
        IF hrs>12;
          hrs=hrs-12; pm$="pm"
          ELSE
         pm$="am"
         ENDIF
        PRINT MID$(PLATFORMINFO$("TIME"),0,10),2,2+fx1

        IF mins<10
                PRINT hrs+":0"+mins+" "+pm$,20,25+fx1
                ELSE
                PRINT hrs+":"+mins+" "+pm$,20,25+fx1
        ENDIF

        SHOWSCREEN
WEND


FUNCTION DRAWRING: Col1,Col2,CircleX,CircleY,OutsideRadius,InsideRadius

        FOR Cir=0 TO 359 STEP 10
        STARTPOLY 0
        CirX1=CircleX+OutsideRadius*COS(Cir)
        CirY1=CircleY+OutsideRadius*SIN(Cir)
        CirX2=CircleX+OutsideRadius*COS(Cir-10)
        CirY2=CircleY+OutsideRadius*SIN(Cir-10)
        CirX3=CircleX+InsideRadius*COS(Cir-10)
        CirY3=CircleY+InsideRadius*SIN(Cir-10)
        CirX4=CircleX+InsideRadius*COS(Cir)
        CirY4=CircleY+InsideRadius*SIN(Cir)
        POLYVECTOR CirX1,CirY1,CirX1,CirY1,Col2
        POLYVECTOR CirX2,CirY2,CirX2,CirY2,Col2
        POLYVECTOR CirX3,CirY3,CirX3,CirY3,Col1
        POLYVECTOR CirX4,CirY4,CirX4,CirY4,Col1
        ENDPOLY
        NEXT

ENDFUNCTION

FUNCTION sxf: Col1,Col2,CircleX,CircleY,OutsideRadius,InsideRadius
//strange effects
STATIC sf
        FOR Cir=0 TO 359 STEP 20
        STARTPOLY 0
        sf=sf+1
        Cir=Cir+sf
        CirX1=CircleX+OutsideRadius*COS(Cir)
        CirY1=CircleY+OutsideRadius*SIN(Cir)
        CirX2=CircleX+OutsideRadius*COS(Cir-10)
        CirY2=CircleY+OutsideRadius*SIN(Cir-10)
        CirX3=CircleX+InsideRadius*COS(Cir-10)
        CirY3=CircleY+InsideRadius*SIN(Cir-10)
        CirX4=CircleX+InsideRadius*COS(Cir)
        CirY4=CircleY+InsideRadius*SIN(Cir)
        POLYVECTOR CirX1,CirY1,CirX1,CirY1,Col2
        POLYVECTOR CirX2,CirY2,CirX2,CirY2,Col2
        POLYVECTOR CirX3,CirY3,CirX3,CirY3,Col1
        POLYVECTOR CirX4,CirY4,CirX4,CirY4,Col1
        ENDPOLY
        NEXT
        FOR Cir=359 TO 0 STEP 20
        STARTPOLY 0
        sf=sf-1
        Cir=Cir+sf+90
        CirX1=CircleX+OutsideRadius*COS(Cir)
        CirY1=CircleY+OutsideRadius*SIN(Cir)
        CirX2=CircleX+OutsideRadius*COS(Cir-10)
        CirY2=CircleY+OutsideRadius*SIN(Cir-10)
        CirX3=CircleX+InsideRadius*COS(Cir-10)
        CirY3=CircleY+InsideRadius*SIN(Cir-10)
        CirX4=CircleX+InsideRadius*COS(Cir)
        CirY4=CircleY+InsideRadius*SIN(Cir)
        POLYVECTOR CirX1,CirY1,CirX1,CirY1,Col2
        POLYVECTOR CirX2,CirY2,CirX2,CirY2,Col2
        POLYVECTOR CirX3,CirY3,CirX3,CirY3,Col1
        POLYVECTOR CirX4,CirY4,CirX4,CirY4,Col1
        ENDPOLY
        NEXT
        IF sf>360 THEN sf=0
ENDFUNCTION


FUNCTION DRAWDISC: CircleColor1,CircleColor2,CircleX,CircleY,CircleRadius
        FOR Cir=0 TO 359 STEP 10
        STARTPOLY 0
        CirXS=CircleX+CircleRadius*COS(Cir)
        CirYS=CircleY+CircleRadius*SIN(Cir)
        CirXE=CircleX+CircleRadius*COS(Cir-10)
        CirYE=CircleY+CircleRadius*SIN(Cir-10)
        CirXO=CircleX
        CirYO=CircleY
        POLYVECTOR CirXS,CirYS,CirXS,CirYS,CircleColor1
        POLYVECTOR CirXE,CirYE,CirXE,CirYE,CircleColor1
        POLYVECTOR CirXO,CirYO,CirXO,CirYO,CircleColor2
        ENDPOLY
        NEXT
ENDFUNCTION

FUNCTION DRAWCIRCLE: CircleColor,CircleX,CircleY,CircleRadius
//draws a 36 point circle
LOCAL Cir,CirXS,CirYS,CirXE,CirYE
FOR Cir=0 TO 359 STEP 10
        CirXS=CircleX+CircleRadius*COS(Cir)
        CirYS=CircleY+CircleRadius*SIN(Cir)
        CirXE=CircleX+CircleRadius*COS(Cir-10)
        CirYE=CircleY+CircleRadius*SIN(Cir-10)
        DRAWLINE CirXS,CirYS,CirXE,CirYE,CircleColor
NEXT
ENDFUNCTION

// ------------------------------------------------------------- //
// ---  convert ascii to numerals  ---
// ------------------------------------------------------------- //
FUNCTION convert: num
        IF num=48 THEN RETURN 0
        IF num=49 THEN RETURN 1
        IF num=50 THEN RETURN 2
        IF num=51 THEN RETURN 3
        IF num=52 THEN RETURN 4
        IF num=53 THEN RETURN 5
        IF num=54 THEN RETURN 6
        IF num=55 THEN RETURN 7
        IF num=56 THEN RETURN 8
        IF num=57 THEN RETURN 9
        RETURN -1
ENDFUNCTION // CHECKASC

// ------------------------------------------------------------- //
// ---  KeyBoardIO  --- detect any key press...
// returns instance of key pressed..one time...great for buttons
// waits till button is released...then returns that keycode.
// ------------------------------------------------------------- //
FUNCTION KeyBoardIO:
        LOCAL i
        STATIC INIT_KEYBOARD,K,SENDKWAIT,SKB
        IF INIT_KEYBOARD=FALSE
                INIT_KEYBOARD=TRUE
        ENDIF
        K=-1
        FOR i=0 TO 299
                IF KEY(i) THEN K=i
        NEXT
        IF (K=-1) AND (SENDKWAIT=TRUE); SENDKWAIT=FALSE; RETURN SKB; ENDIF
        IF K>-1; SENDKWAIT=TRUE; SKB=K; K=-1; ENDIF
        RETURN K
ENDFUNCTION // KEYBOARDXX


FUNCTION drawwater:
STATIC z1,z2
FOR y = 0 TO 600 STEP 60
FOR x= 0 TO 800 STEP 80
y1=y-3
STARTPOLY 1
POLYVECTOR x+RND(3)-3,y1+RND(3),x+RND(3)-3,y1+RND(3),RGB(RND(99),x/9+y/9,x/9+y/9)
POLYVECTOR x+RND(3)-3,y1+60+RND(3)+3,x+RND(3)-3,y1+60+RND(3)+3,RGB(RND(99),x/9+y/9,x/7+y/9)
POLYVECTOR x+80+RND(3)+3,y1+60+RND(3)+3,x+80+RND(3)+3,y1+60+RND(3)+3,RGB(RND(99),x/9+y/9,x/9+y/7)
POLYVECTOR x+80+RND(3)+3,y1+RND(3)-3,x+80+RND(3)+3,y1+RND(3)-3,RGB(RND(99),x/9+y/9,x/9+y/9)
ENDPOLY
NEXT
NEXT
ENDFUNCTION








 

Gracias a todos de antemano, y un saludo.

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3365
  • Integrated Brain
    • View Profile
Re: La primera en la frente
« Reply #1 on: 2011-Jul-11 »
Hola Syntax_Error lo primero bien bienvenido al foro.

Bien primero te comento un poco más o menos mi experiencia con GLBasic, si no tienes conocimeintos de programación, NI TE PREOCUPES!!! (ojo no te estoy chillando), ya verás como tocandolo un poco en menos de 1 mes ya te salén cosas, es realmente sencillo, rápido y potente.

Bien sobre tu "problema", haz lo siguiente:

1-En el menu superior, en donde aparece Fie, EDit, View, Project, etc.. , pulsa sobre Project.

2.Ahora en Project ves a Options, donde sale un Icono similar a una Hoja con un simbolo de verificación Rojo.

3.En este Pop-Up que te ha salido que son las Opciones de los Projectos , tienes que DES-verificar la casilla que dice "Explicit Declarations."

4. Simplemente Pulsa F5, y te saldrá la compilación del código, o sea el producto de esas líneas de código.

Te explico un poco porque pasa estó, por Defecto GLBasic obliga desde hace un par de versiones, a declarar todas la variables que pongas en tú codigo:

Por ejemplo si hago la variable:

movimiento_X,

si pones solo esta línea de código, sino haces los pasos que te he comentado antes te dará error.

Por lo cual debería ser asi:

GLOBAL movimiento_X  (Esto es una variable accesible desde cualquier parte del código)
o
LOCAL   movimiento_X  (Y esta es local y solo se puede utilizar en partes del código conde la has declarado, por ejemplo dentro de una Función).

Solo es estó.

PS: IMPORTANTE!!!, para hacer pruebas y generar el código más rápido es bastante útil desverificar la casilla, pero cuando hagas algo que conlleve algo de código (más espeso), es mejor verificar la casilla y declarar todas la variables.  Porque?¿, porque si escribes mal una variable, aunque sea solo por una letra mayúscula el Compilador te avisará, y verás que resolver un problema en el código, te conllevará muy poco rato, si está SIN Verificar, no te avisará y a lo mejor el programa no hace lo que quieres

Ejemplo:

salta_X la : cual por ejemplo tiene un valor 10

y escribes

salta_x  (la x es minúscula)

esta tendrá el valor 0, y no hará lo que quieres hacer, y como no te avisa el compilador porque has DES-verificadoa la casilla "EXplicit Declarations", quizás te vuelvas algo "majarón" hasta que lo encuentras esté error.

Un saludo, y como te comento bienvenido.

Iván J.


Offline Sintax error

  • Mc. Print
  • *
  • Posts: 2
    • View Profile
Re: La primera en la frente
« Reply #2 on: 2011-Jul-11 »
Hola mentalthink,

Gracias por tu respuesta ( Rapidísima  :) ), he desactivado la casilla que comentas, y ahora si funciona el código en cuestión ( que por cierto, menudo curro que se pego el tal " Hemlos " en este código ).
Es muy de agradecer este tipo de ayuda, ya me estaba volviendo un poco tarumba, no sabia ya que hacer, en tiempos pasados con el MSX basic, Amiga basic etc, etc, no había esos problemas, al menos con los editores de Basic estándares.
Y si, tienes razón en lo de activar la casilla en el futuro y declarar todas las variables convenientemente, así se evitaran los posibles errores.

Mil gracias, SalU2.

Lisardo R.

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3365
  • Integrated Brain
    • View Profile
Re: La primera en la frente
« Reply #3 on: 2011-Jul-11 »
Hola Sintax Error, de nada para eso estamos en el foro, ya sabes cualquier cosa que te pueda ayudar por aquí ando, sino hay gente con muchísimos más conocimientos que yo en programación.

Sobre lo que comentas del MSX y el Amiga, ya verás como te sirve, yo personalmente le cojí el tranquillo por el tema de que hacía algunas cosillas con los CPC.




Offline pinete

  • Mr. Drawsprite
  • **
  • Posts: 98
    • View Profile
Re: La primera en la frente
« Reply #4 on: 2011-Jul-14 »
joe Mentalthink, eres el mejor! peazo explicacion!  :nw:
saludetes!

Offline mentalthink

  • Prof. Inline
  • *****
  • Posts: 3365
  • Integrated Brain
    • View Profile
Re: La primera en la frente
« Reply #5 on: 2011-Jul-15 »
 :enc: :enc: :enc: :enc:

pero no soy el mejor ni de lejos, gracias pinete.