Skip to content

Commit

Permalink
💎 outro exemplo para lib de internet
Browse files Browse the repository at this point in the history
  • Loading branch information
Rafaelfcosta committed Mar 2, 2018
1 parent d0f3931 commit a728a7c
Show file tree
Hide file tree
Showing 4 changed files with 372 additions and 3 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 10 additions & 3 deletions ide/src/main/assets/exemplos/bibliotecas/internet/index.properties
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
items = 2
items = 3

item0.name = Obter html site
item0.type = file
item0.file = obtertexto.por
item0.description = Este é um exemplo de utilização da biblioteca internet que baixa o HTML de um site.
item0.hasImage = false
item0.image = relogio_analogico.png
item0.image =

item1.name = Robô Aletorio
item1.type = file
item1.file = robos.por
item1.description = Este é um exemplo de utilização da biblioteca internet que exibe um robo aleatório sempre que executado.
item1.hasImage = true
item1.image = bolinha.png
item1.image = bolinha.png

item2.name = Frase gerada com imagens aleatórias de letras
item2.type = file
item2.file = word_image_generator.por
item2.description = Este é um exemplo de utilização da biblioteca internet que gera uma imagem composta por imagens aleatórias de cada letra.
item2.hasImage = true
item2.image = ps.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,362 @@
programa
{
inclua biblioteca Internet --> i
inclua biblioteca Texto --> txt
inclua biblioteca Teclado --> t
inclua biblioteca Graficos --> g
inclua biblioteca Calendario --> c
inclua biblioteca Util --> u
inclua biblioteca Arquivos --> a

cadeia palavra = ""
cadeia default_word = "PORTUGOL STUDIO ROCKS"
cadeia site = "http://metaatem.net/words/"
cadeia urlsite
cadeia html
cadeia urls
cadeia links[100]
cadeia links2[50]

inteiro pos1
inteiro pos2
inteiro wordsize
inteiro max_letras = 50

cadeia error_message = "Parece que o servidor das imagens não quer conversa agora. Tenta mais uma vez, quem sabe ele muda de ideia."
cadeia error_conexao_message = "Verifique sua conexão com a internet e tente novamente."

inteiro imagens[50]
inteiro itens_carregaveis
inteiro carregando
inteiro temp = 0
inteiro linhas = 1
inteiro posicoes[10]
inteiro indice_quebra_linha = 0
inteiro maior_palavra = 0
inteiro quebra_linha = -1
inteiro quebrar_linha[10]
logico falhou = falso
inteiro largura_tela = 800
inteiro altura_tela = 600

cadeia caminho_fundo = "fundo.jpg"
inteiro fundo

funcao inicio()
{

inicializar_grafico()
tela_digitar_palavra()
inicializar()
obter_links()
obter_imagens()

se(nao falhou){
desenhar()
g.limpar()
g.desenhar_imagem(0, 0, temp)
g.renderizar()
enquanto(nao t.alguma_tecla_pressionada()){

}
}senao{

largura_tela = g.largura_texto(error_message)+300
g.definir_dimensoes_janela(largura_tela, altura_tela)
g.limpar()
g.definir_cor(g.COR_BRANCO)
g.definir_tamanho_texto(20.0)
g.desenhar_texto((largura_tela/2)-(g.largura_texto(error_message)/2), (altura_tela/2)-(g.altura_texto(error_message)/2),error_message)
g.renderizar()
enquanto(nao t.alguma_tecla_pressionada()){

}
}

}

funcao arrumar_texto(){
palavra = txt.substituir(palavra, " ","-")
urlsite = site + palavra
}

funcao inicializar(){
arrumar_texto()
inteiro indice = -1
inteiro separador = 1
maior_palavra = txt.posicao_texto("-", palavra, indice + 1)
faca{
indice = txt.posicao_texto("-", palavra, indice + 1)

se(indice > 0){
posicoes[indice_quebra_linha] = indice-separador
se(indice_quebra_linha > 0 ){
se((posicoes[indice_quebra_linha] - posicoes[indice_quebra_linha-1]) > maior_palavra){
maior_palavra = posicoes[indice_quebra_linha] - posicoes[indice_quebra_linha-1]
}
}
separador++
linhas++
indice_quebra_linha++
}

se(indice == -1 e linhas > 1){
inteiro ultimo = txt.numero_caracteres(palavra)
se(((ultimo - linhas) - posicoes[indice_quebra_linha-1]) > maior_palavra){
maior_palavra = (ultimo - linhas) - posicoes[indice_quebra_linha-1]
}
}

}enquanto(indice >= 0)

se(linhas > 1){
wordsize = txt.numero_caracteres(palavra)-(linhas-1)
largura_tela = 100 * maior_palavra
altura_tela = linhas * 100
quebra_linha--
g.definir_dimensoes_janela(largura_tela, altura_tela)
}senao{
wordsize = txt.numero_caracteres(palavra)
largura_tela = wordsize * 100
altura_tela = linhas * 100
g.definir_dimensoes_janela(largura_tela, altura_tela)
}
itens_carregaveis = (wordsize*5)
}

funcao inicializar_grafico(){
g.iniciar_modo_grafico(verdadeiro)
g.definir_titulo_janela("Web Word Image Generator")
g.definir_dimensoes_janela(largura_tela, altura_tela)
g.limpar()
g.renderizar()
}

funcao desenhar_load(inteiro i, cadeia loading_message){
loading_message += "..."
g.definir_cor(0xaaaeb5)
g.desenhar_retangulo(50, g.altura_janela()-50, largura_tela-130, 10, falso, verdadeiro)
g.definir_cor(g.COR_BRANCO)
g.desenhar_retangulo(50, g.altura_janela()-50, i*((largura_tela-140)/itens_carregaveis), 10, falso, verdadeiro)
g.definir_tamanho_texto(20.0)
g.desenhar_texto(largura_tela-g.largura_texto(loading_message), altura_tela-g.altura_texto(loading_message), loading_message)
g.renderizar()
}

funcao obter_links(){
desenhar_load(1, "Acordando")
se(nao i.endereco_disponivel(urlsite)){
erro_conexao(error_conexao_message)
}
html = i.obter_texto(urlsite)
pos1 = txt.posicao_texto("<fieldset>", html, 0)
pos1 = txt.posicao_texto("href", html, pos1)
pos2 = txt.posicao_texto("</fieldset>", html, pos1)
urls = txt.extrair_subtexto(html, pos1, pos2)
inteiro contador = 0
inteiro inicio_link = 0
inteiro fim_link = 0

desenhar_load(2, "Cortando as pontas")
faca{
inicio_link = txt.posicao_texto("'http", urls, inicio_link)
fim_link = txt.posicao_texto("' ", urls, inicio_link+1)
links[contador] = txt.extrair_subtexto(urls, inicio_link+1, fim_link)
inicio_link = fim_link
contador++

}enquanto(contador < wordsize*2)

carregando = 2
inteiro a = 0
para(inteiro i=1; i < wordsize*2; i+=2){
links2[a] = links[i]
a++
carregando++
desenhar_load(carregando, "Separando links que o cachorro pediu")
}
}

funcao obter_imagens(){

para(inteiro i=0; i < wordsize; i++){
se(i.endereco_disponivel(links2[i])){
i.baixar_imagem(links2[i], "/" + i)
carregando++
desenhar_load(carregando, "Baixando imagens "+(i+1)+"/"+wordsize)
}senao{
falhou = verdadeiro
carregando--
desenhar_load(carregando, "Ih deu ruim")
}
se(falhou){
erro_conexao(error_message)
}
}

para(inteiro i=0; i < wordsize; i++){
imagens[i] = g.carregar_imagem("/"+i+".jpg")
carregando++
desenhar_load(carregando, "Tentando equilibrar imagens na memória")
u.aguarde(200)
}
para(inteiro i=0; i < wordsize; i++){
a.apagar_arquivo("/"+i+".jpg")
carregando++
desenhar_load(carregando, "Jogando fora depois de usar")
u.aguarde(200)
}
}

funcao desenhar(){
inteiro x = 0
inteiro y = 0
carregando = itens_carregaveis
desenhar_load(carregando, "Prendendo imagens umas nas outras")
u.aguarde(1500)
g.definir_cor(g.COR_BRANCO)
g.limpar()

fundo = g.carregar_imagem(caminho_fundo)
g.desenhar_imagem(0, 0, fundo)
inteiro j = 0
para(inteiro i=0; i < wordsize; i++){
inteiro temp_img = g.redimensionar_imagem(imagens[i], 100, 100, verdadeiro)
//g.desenhar_imagem(x, y, imagens[i])
g.desenhar_imagem(x, y, temp_img)
x+=100
se(quebra_linha != -1){
se(i == posicoes[j]){
x = 0
y+=100
j++
}
}
}
temp = g.renderizar_imagem(largura_tela, altura_tela)
inteiro mili = c.milisegundo_atual()
g.salvar_imagem(temp, "/imagens/"+palavra+mili+".png")
temp = g.carregar_imagem("/imagens/"+palavra+mili+".png")
}

funcao tela_digitar_palavra()
{
enquanto (verdadeiro)
{
desenhar_tela_digitar_palavra()

inteiro tecla = t.ler_tecla()

se (tecla == t.TECLA_ENTER)
{
se (verificar_palavra()){

}
pare
}
se (tecla == t.TECLA_ESC)
{
g.fechar_janela()
}
senao se(tecla == t.TECLA_CONTROL){
palavra = ""
}
senao se ((tecla >= t.TECLA_A e tecla <= t.TECLA_Z) ou (tecla >= t.TECLA_0 e tecla <= t.TECLA_9) ou tecla == t.TECLA_ESPACO ou tecla == t.TECLA_BACKSPACE)
{
atualizar_palavra(tecla)
}
}
}

funcao logico verificar_palavra()
{
//cadeia texto = txt.substituir(palavra, " ", "")
se(palavra == ""){
palavra = default_word
}
retorne (txt.numero_caracteres(palavra) > 0)
}

funcao desenhar_tela_digitar_palavra()
{
desenhar_campo_entrada()
g.renderizar()
}

funcao desenhar_campo_entrada()
{
g.definir_tamanho_texto(14.0)
g.definir_cor(g.COR_PRETO)
g.definir_estilo_texto(falso, falso, falso)

cadeia mensagem = "Digite uma frase ou palavra: "
cadeia texto = "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW|"

inteiro espacamento = 10
inteiro margem_campo = 8
inteiro largura_campo = g.largura_texto(texto) + (margem_campo * 2)
inteiro altura_campo = g.altura_texto(texto) + (margem_campo * 2)
inteiro altura_mensagem = g.altura_texto(mensagem)

inteiro borda_vertical = 10
inteiro borda_horizontal = 10
inteiro largura_quadro = largura_campo + (borda_horizontal * 2)
inteiro altura_quadro = altura_mensagem + espacamento + altura_campo + (borda_vertical * 2)
inteiro x = (largura_tela / 2) - (largura_quadro / 2)
inteiro y = (altura_tela / 2) - (altura_quadro / 2)

g.definir_cor(g.COR_BRANCO)
g.desenhar_retangulo(x, y, largura_quadro, altura_quadro, verdadeiro, falso)

x = x + borda_horizontal
y = y + borda_vertical

g.desenhar_texto(x, y, mensagem)
y = y + g.altura_texto(mensagem) + espacamento
g.desenhar_retangulo(x, y, largura_campo, altura_campo, verdadeiro, falso)

g.desenhar_texto(x + margem_campo, y + margem_campo, palavra + "|")
}

funcao atualizar_palavra(inteiro tecla)
{
inteiro tamanho = txt.numero_caracteres(palavra)

se (tecla == t.TECLA_BACKSPACE)
{
se (tamanho >= 1)
{
palavra = txt.extrair_subtexto(palavra, 0, tamanho - 1)
}
}
senao se (tamanho + 1 <= max_letras)
{
palavra = palavra + t.caracter_tecla(tecla)
}
}

funcao erro_conexao(cadeia msg){
largura_tela = g.largura_texto(msg)+300
g.definir_dimensoes_janela(largura_tela, altura_tela)
g.limpar()
g.definir_cor(g.COR_BRANCO)
g.definir_tamanho_texto(20.0)
g.desenhar_texto((largura_tela/2)-(g.largura_texto(msg)/2), (altura_tela/2)-(g.altura_texto(msg)/2), msg)
g.renderizar()
enquanto(nao t.alguma_tecla_pressionada()){

}
g.fechar_janela()
}
}
/* $$$ Portugol Studio $$$
*
* Esta seção do arquivo guarda informações do Portugol Studio.
* Você pode apagá-la se estiver utilizando outro editor.
*
* @POSICAO-CURSOR = 267;
* @PONTOS-DE-PARADA = ;
* @SIMBOLOS-INSPECIONADOS = ;
* @FILTRO-ARVORE-TIPOS-DE-DADO = inteiro, real, logico, cadeia, caracter, vazio;
* @FILTRO-ARVORE-TIPOS-DE-SIMBOLO = variavel, vetor, matriz, funcao;
*/

0 comments on commit a728a7c

Please sign in to comment.