Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
devair1010

Comando line no antiryad gx

Recommended Posts

olá pessoal
  Será que alguém pode me ajudar aqui, estou tentando fazer um algoritmo no
Antiryad gx, que faça uma linha na tela, igual ao comando line, porém com 
maior espessura, porque o comando line faz uma linha muito fina.  aqui eu 
consegui fazer a linha só que começa no ponto do começo mas não vai até o
ponto final, ficando fora da posição. Eu queria fazer a linha mais grossa
seguir a linha fina.  O antiryad gx usa a linguagem GEL BASIC.
  Agradeço quem ajudar!
aqui está o algoritmo que consegui fazer


import antiryadgx.gx_antiryad//importando as bibliotecas
import antiryadgx.gx_font    //importando as bibliotecas
import antiryadgx.gx_str     //importando as bibliotecas
import antiryadgx.gx_driver  //importando as bibliotecas
import antiryadgx.gx_screen  //importando as bibliotecas
import antiryadgx.gx_keyboard//importando as bibliotecas
import antiryadgx.gx_winbox  //importando as bibliotecas
import antiryadgx.gx_math    //importando as bibliotecas
import antiryadgx.gx_bitmap  //importando as bibliotecas
declarefunction nothing,main,nothing//declarando a funcao principal
dim x,y,x1,y1,x2,y2,float    // declarando variaveis
dim t1,t2,t3,t4,t5,t6,long   // declarando variaveis
dim co_i,co_f,li_i,li_f,esp,esp2,cont,f,xx,aa,yy,x3,y3,esp_l,esp_c,step,frac,float
dim nn,t,tt,nw,nb,int   // declarando variaveis
dim fl,resto,float      // declarando variaveis
dim lg,float            // declarando variaveis
dim n,m,l1,a,r,g,b,int  // declarando variaveis
dim ptr_tfont,gx_tfont  // declarando variaveis
dim st,string:useclass st,gx_str  // declarando variaveis
dim sx,string:useclass sx,gx_str  // declarando variaveis
function main    //funcao principal
  m=8200         //quantidade de pontos para forma um circulo
  nb=0
  while(gx_keyboard::inkey(),!=,gx_keyboard_keyesc)//enquanto nao apertar esc
    gx_screen_clear   // cls limpa a tela 
    //gx_winbox::printfont(st,500,10,gx_winboxfont_proportional0,0xffff)
    gx_winbox::printfont(string::"tecle  ESC para sair",820,30,gx_winboxfont_proportional0,0xffff)//escreve na tela
    x=gx_math_getfsin(n)*150+350      // coluna de um lado do triangulo
    y=gx_math_getfcos(n)*150+200      // linha de um lado do triangulo
    x1=gx_math_getfsin(n+2733)*150+350// coluna de um lado do triangulo
    y1=gx_math_getfcos(n+2733)*150+200// linha de um lado do triangulo
    x2=gx_math_getfsin(n+5466)*150+350// coluna de um lado do triangulo
    y2=gx_math_getfcos(n+5466)*150+200// linha de um lado do triangulo    
    gx_screen::drawline(x,y,x1,y1,0,255,255,0,gx_bitmap_drawflat,0,0,0,0)  //desenha uma linha amarela
    xx=x:yy=y:x3=x1:y3=y1:r=255:g=255:b=0:tt=10
    gosub l1  //vai para a subrotina l1
    gx_screen::drawline(x,y,x2,y2,0,5,255,0,gx_bitmap_drawflat,0,0,0,0)    //desenha uma linha verde
    xx=x   //ponto do inicio da linha
    yy=y   //ponto do inicio da linha
    x3=x2  //ponto final da linha
    y3=y2  //ponto final da linha
    r=5    //quantidade de cor vermelha
    g=255  //quantidade de cor verde
    b=0    //quantidade de cor azul
    tt=50
    gosub l1   //vai para a subrotina l1
    gx_screen::drawline(x2,y2,x1,y1,0,5,255,250,gx_bitmap_drawflat,0,0,0,0)//desenha um linha azul
    xx=x2  //ponto de inicio da linha
    yy=y2  //ponto de inicio da linha
    x3=x1  //ponto final da linha
    y3=y1  //ponto final da linha
    r=5    //quantidade de cor vermelha
    g=255  //quantidade de cor verde
    b=250  //quantidade de cor azul
    tt=110
    gosub l1       //vai para uma subrotina l1
    gx_screen_flush//mostra a tela
    //gx_driver::sleep(100) //delay
    n+=35          //para o triangulo girar
    if(n,>,8200)   //quantidade de pontos que formam um circulo
      n=0
    endif
    m-=35
    if(m,<,0)
      m=8200
    endif    
  wend      // fim do enquanto
  gx_driver::sleep(2000)//delay espera um pouco
endfunction
label l1    //é o label da subrotina
  co_i=xx   //coluna do inicio da linha
  co_f=x3   //coluna do final da linha
  li_i=yy   //linha de inicio da linha
  li_f=y3   //linha do final da linha
  frac=0.0
  if(co_i,>,co_f)//se a linha comeaca do lado direito da tela e vem para a esquerda
    a=co_f       //inverte as colunas
    co_f=co_i
    co_i=a
    a=li_f       //inverte as linhas
    li_f=li_i
    li_i=a
  endif
  esp_c=co_f-co_i  //calcula quantas colunas tem a linha
  esp_l=li_i-li_f  //se li_i maior que li_f
  cont=-3          //cont negativo faz a linha ir de baixo para cima
  if(li_i,<=,li_f) //se a linha inicial menor que a linha final
    esp_l=li_f-li_i//calcula qual o espao entre as linhas
    cont=3         //cont positivo faz a linha ir para baixo
  endif  
  sx->copy("val esp_c= ")//aqui é o texto na tela
  sx->appendfloat(esp_c)
  sx->append("  val esp_l= ")
  sx->appendfloat(esp_l)
  if(esp_c,>,esp_l)  // se o espao entre colunas for maior que entre linhas
    esp=esp_c/esp_l  //esp tem a relação entre linhas e colunas
  endif
  if(esp_l,>,esp_c)  //se o espao entre linhas for maior 
    esp=esp_l/esp_c  //esp tem a relcao entre linhas e colunas
  endif  
  nn=esp
  frac=nn/esp
  sx->append("  val esp= ")//texto que aparece na tela
  sx->appendfloat(esp)     //formando uma frase
  sx->append("  val nn= ")
  sx->appendfloat(nn)
  sx->append("  val frac= ")
  sx->appendfloat(frac)
  gx_winbox::printfont(sx,10,nb,gx_winboxfont_proportional0,0xffff)//imprime o texto na tela
  //gx_screen::drawbox(500,500,50,50,0,255,0,0,gx_bitmap_drawflat,0,0,0,0)//desenha um quadrado vermelho
  gx_screen::flush()//mostra a tela
  gx_driver::sleep(1000)//delay espara um pouco
  nb+=12                // numero da linha onde sera escrito o texto
  if(esp_c,<=,esp_l)
    esp=esp_l/esp_c     //esp tem a relcao entre linhas e colunas
    if(co_i,==,co_f)    //se coluna inicial e final for igual
      esp=0             //esp igual a zero
    endif    
    esp2=esp
    nn=esp
    frac=0
    step=3              //se a linha vai de cima para baixo
    if(li_i,>,li_f)
      step=-3           //se a linha vai de baixo para cima
    endif
    for(f,li_i,<,li_f,step)
      gx_screen::drawbox(co_i,f,3,3,0,255,0,255,gx_bitmap_drawflat,0,0,0,0)//desenha um retangulo roxo
      esp2=esp2-1
      if(esp2,<,1)
        resto=esp2
      endif
      if(esp2,<=,0)
        if(esp,!=,0)
          co_i=co_i+3
        endif  
        esp2=esp-resto
        resto=0 
      endif
      gx_screen::flush()//mostra a tela
    next
    for(f,li_i,>,li_f,step)
      gx_screen::drawbox(co_i,f,3,3,0,200,100,0,gx_bitmap_drawflat,0,0,0,0)//desenha um retangulo laranja
      esp2=esp2-(1)
      if(esp2,<,1)
        resto=esp2
        frac=frac+esp2
      endif
      if(frac,>=,1)
        if(esp2,>,0)
          co_i=co_i+3
          frac=frac-1
        endif
      endif
      if(esp2,<=,0)
        if(esp,!=,0)
          co_i=co_i+3
        endif  
        esp2=esp
        esp2=esp2-resto
        resto=0
      endif
      gx_screen::flush()//mostra a tela
    next    
  endif
  if(esp_c,>=,esp_l)
    esp=esp_c/esp_l
    esp2=esp
    nn=esp
    frac=nn/esp
    for(f,co_i,<,co_f,3)
      gx_screen::drawbox(f,li_i,3,3,0,0,0,255,gx_bitmap_drawflat,0,0,0,0)//desenha um retangulo azul escuro
      esp2=esp2-frac
      if(esp2,<,1)
      if(esp2,>,0)
        resto=esp2
      endif
      endif
      if(esp2,<=,1)
        if(esp,<>,0)
          li_i=li_i+cont
          esp2=esp
        endif  
        esp2=esp
        esp2=esp2-resto
        resto=0
      endif
      gx_screen::flush()//mostra a tela
    next
  endif
return                 //retorna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×