sábado, 14 de abril de 2018

Fake-news dos "Opressores"


Olhem como interpretaram uma fala de Mário Sérgio Cortella para a induzir a sociedade de que ele votaria em Bolsonaro:

https://www.youtube.com/watch?v=RHsg4-TtL8w



segunda-feira, 9 de abril de 2018

A esquerda no Brasil está sem pai e mãe e seus tutores estão querendo roubar sua herança

A esquerda no Brasil está sem pai e mãe e seus tutores estão querendo roubar sua herança.

Não é estranho que o Ciro já tenha anunciado que os eleitores do Bolsonaro são eleitores dele? Ciro malandrão criou os blogueiros e saiu pelo Brasil por 10 anos fazendo campanha silenciosa. Como o Lula fez antes de ser presidente. Agora, o Ciro, o puxadinho do PT, vai ganhar. Pensa: Por que o Bolsonaro disse que iria fazer o Alexandre Frota ministro da cultura dele? Tá todo mundo louco nesse país? Isso é governo conservador? Bolsonaro é cabo eleitoral do Ciro.

Nada contra o Alexandre Frota e imagino que ele não seja um cara mau. Até o acho inteligente como empresário. Tá defendendo o dele. Mas ele é um empresário da pornografia. E isso é conservador ou não é? Ficou na dúvida? Deve tá faltando outras culturas e empresários nesse país para representar a cultura do Brasil...

Por que a Dilma não foi presa se pedalou? Tá todos os políticos deste país mancomunados pra libertar eles mesmos. Se o Lula sair, abrirá os portões do inferno. Sairão outros monstros e outros como Aécio sem nem passariam pelo xilindró.
O Sistema judicial não pode ruir. Deve existir um funil seletivo até a chegada na avaliação dos fatos e julgamentos e estes julgamentos não podem se apegar a todos os detalhes.

O Lula tem que continuar preso. Teve domínio do fato por permitir que os homens do seu governo e da Dilma explorassem os pontos cegos da burocracia.Esse foi o erro dele. Nem ousaria me candidatar ou participar sem antes ter feito um estudo antecipado com quem estaria tratando nesses palanques.

Eu sinto muito, mas eu acreditava no Lula. Mas comecei a desconfiar quando Lula inventou de querer trazer olimpíada e copa para o Brasil. Todo mundo sabia que não daria certo. O Brasil não tinha condições. Não que esteja menosprezando o País, mas pela ilusão de querer trazer um tantão de gente de fora para um lugar que é considerado violento e cheio de homens que não honram compromissos. Foi a olimpíada mais baixa da historia em comparação com os investimentos. Até jogadores inocentemente se envolveram nessa malandragem... "Sem estádio não tem copa!" Que se fodam os Estádios e a Copa! Mas não... Não foi isso que aconteceu... Os únicos que chegaram a ganhar foram os empresários que pagaram propinas pra ver quem levava as obras pra frente. Explode a Lava-Jato e deu no que deu.

Não vou apoiar PSDB, nem PMDB, PSOL, PCO, PCdoB,  PT...
Roberto Requião (Político dono de Jornal?)...
Quantos são donos de jornal seja em TV, papel ou Internete ou quais suas ligações com tais entidades?

Só com juramento sério de homem para homens que esse país se conserta. Um que nos leve a não dependência de ninguém, obrigando a cada um ser capaz de entender o que está acontecendo e se precisar corrigir agir conforme os interesses da sociedade e não aos próprios. Se algum descumprir, terá deve ser preso por não cumprimento de promessa de campanha. A sociedade devia cobrar isso.

Papa Francisco :
"Não podemos considerar um ideal de santidade que ignore a injustiça deste mundo, onde alguns festejam, gastam alegremente e reduzem suas vida às novidades de consumo, ao mesmo tempo que outros apenas observam de fora, enquanto suas vidas passam e se acabam miseravelmente"

O carinha que vai ganhar minha confiança é o que jurar tudo isso ai acima. Aquele que vai implementar o que a ciência e a tecnologia com o suporte da academia já demonstraram o que é democracia. Democracia participativa.

E a coisa é tão científica, que hoje, os pilantrões querem excluir as ciências sociais da academia. Para dar ar de pseudociência. A Sociologia está tão para a matemática, mais precisamente para a lógica dos jogos, quanto as mentes de quem quer insinuar que ela não seja uma ciência está para a latrina.

Prisão em segunda instância

O principio da inocência sempre é válido. Mesmo para já presos e condenados porque a justiça não pode ser uma pedra. Ela tem que ser ágil. Só que o caso do Lula é que ele já foi condenado e não surgiram novas provas ou fatos ao conhecimento da Justiça. As instâncias superiores devem avaliar se houve imparcialidade do juiz, forma correta dos processos, e a justeza das leis.

A primeira instância e segunda instância julga provas e fatos. As instâncias superiores julgam a imparcialidade dos juízes, advogados e promotores além da justiça de outras leis. Se todo mundo pedir habeas corpus... ninguém mais vai preso porque atolaria o STJ e o STF.

A hora de ir à ONU era na hora que surgiu o processo da Lava-Jato. Precisávamos de olhos de gente do Exterior. Tudo vai continuar uma merda se não for criado instituições sérias até fora do país. Como a ONU. Israel faz o que faz, Potencias bombardeia hospitais na Síria, a África ainda está largada aos terroristas sequestradores de meninas e etc porque a instituição é fraca. Ainda confiam que algo vai ser feito pela ONU? O Mundo tá mesmo perdido porque só tem inocente otário.Eu não acredito que tenhamos que ir para uma guerra civil. Mais dos pobres morreriam enquanto que a grande maioria dos provocadores da guerra sobreviveriam. Não vale a pena. Principalmente pelo investimento em guerra, algo que da prejuízo.



A burocracia no Brasil é uma porcaria pelos excessos delas aos pobres e a pouca dela para os ricos. Justiça é facinho de se entender. Por que tanta dúvida sobre a prisão em segunda instância?
Ela deve existir. Se o condenado tiver provas relevantes, ele deve ter sua questão olhada novamente.



tivideotutoriais.blogspot.com/2017/04/teoria-geral-dos-tratados.html

Por que ainda temos que ter um zilhão de impostos, um zilhão de documentos e nada é integrado? É burocracia de mais e cada uma tem seu lugar e tempo. Nunca vai pra frente esse país. Nunca. Enquanto não tiver gente disposta a meter o dedo nas feridas e por a mão na massa, nunca vai pra frente. Todos os partidos são lixo porque só se preocupam com suas bandeiras e nenhum com a formação de uma democracia séria. Sei que doi. Doi como um parto. Mas tudo o que escrevi aqui é influencia direta do vi e li dos jornais.







domingo, 25 de março de 2018

Caso Marielle Franco e as aberrações da Internete

Ao me deparar com uma sugestão no YouTube resolvi pegar leve por se tratar de um pai frustrado. Mas na segunda parte, depois de receber seus comentários percebi que ele mesmo usa a morte do filho para fazer campanha para alguém no Brasil que não vou citar nome. Não é só o Facebook quem esta manipulando e roubando dados privados, viu pessoal... As fake news também estão vindo do YouTube e com força! Não sejam inocentes. Não falei só do Facebook. Falei de todas as mídias sociais. Os piores corruptos do mundo, que possuem dinheiro, estão querendo matar o interesse pela  filosofia e sociologia de maneiras torpes.

Como esconderam meus comentários, decidi expor aqui algumas contradições e os interesses ocultos.



Vídeo tratado por este post:
https://www.youtube.com/watch?v=MtLR_-gLk44




                     Carta aberta ao Sr. Paulo Pavesi




Primeiro post: Pegando na mãozinha

Olá Sr. Paulo Pavesi. Me sinto mal pelo que passou aqui no Brasil. Infelizmente as coisas estão bem ruins aqui. Mas não ficou claro seu posicionamento sobre direita e esquerda e se me permitir faço os apontamentos:

Você postou outros vídeos e um deles sobre um membro do PSDB que foi assessor do Aécio neves e agora José Serra. E por sinal, este foi denunciado na folha ter enriquecido ilicitamente. Ambos aqui são considerados de direita e da pior laia.... Então, por que o vídeo contra a esquerda? Estes que citou não são da esquerda e defendem o liberalismo econômico e a exploração do País por estrangeiros... Não deixe usarem a morte de seu filho para defender quem espezinha os direitos humanos. Isso vai dar mais fogo para casos como o do seu filho continue acontecendo.

Novo caso do Aécio, que também é um dos denunciados por Pavesi:

https://www1.folha.uol.com.br/poder/2018/03/aumento-de-patrimonio-que-agora-aecio-nega-foi-informado-a-receita.shtml

https://www1.folha.uol.com.br/colunas/julianna-sofia/2018/03/muito-alem-do-arco-iris.shtml

Eu sou de esquerda por filosofia. Não tenho partido. Mas quando fala da esquerda, me coloca no mesmo balaio. Não é assim. Os movimentos de esquerda no geral (tirando suas cúpulas e panelas) são de oposição às injustiças. Apesar de não ter envolvimento político nenhum, me considero de esquerda e a maioria deve pensar como eu. Ser oposição quanto a qualquer ato contra os direitos humanos. Infelizmente não tenho força sozinho para fazer justiça. Ela vai acontecendo aos poucos. Não é culpa minha, por ser de esquerda que os políticos atuais sejam podres. Por isso não busco vínculos políticos, mas mantenho a filosofia da esquerda na cabeça. Se existe gente na Esquerda roubando, tem que ser pego. Assim como não gosto da ideia do HC para corruptos aqui. Sou de esquerda por principio. Algo até cristão. ver Atos cap. 2. E olha que me considero agnóstico por ter duvidas de deus, mas não posso negar que para o bem o melhor e a cooperação e o não o egoísmo e isso pra mim é bem claro até na bíblia. A ética não é algo que uma religião ou país possa se apropriar como inventores ou únicos detentores. Não existe um bastião moral. Não pode existir e não tem como existir porque como disse, toda pessoa minimamente bem educada sabe o que é certo e errado. Por isso pergunto contra o que é esse vídeo.

No caso da Vereadora, que pode ou não conhecer (ter conhecido) algum bandido, não poderia ela sair prendendo ou matando os que descobre ser bandido. Muito menos ameaçar denunciar. Vai que denuncia para a pessoa errada. É fato que milhares morrem todos os dias pelo tráfico ou corrupção, mas a real é que o movimento de protesto quanto a morte dela é bom sim por mostrar o quanto o povo Brasileiro está se inflamando. E tem que piorar a inflamação se mais gente morrer. O mundo e esses políticos de merda tem que sentir que o povo perdeu a paciência. Claro que também não podemos deixar outros usarem a morte dela pra fazer campanha. Precisamos cortar o mal pela raiz. E não vai ser com o sistema político de lixo que ainda temos. É pela conscientização de todos. Isso é bem claro. Não é culpa da filosofia da esquerda. É de alguns (quase todos) dentro dos partidos que sendo lobos vestem pele de cordeiro. Infelizmente, como viemos do pó da lama e evoluímos até o que somos hoje, os humanos ainda possuem resquícios do medo animal que os fazem querer acumular pelo medo do amanhã. Chegando até a cometer atrocidades. Vai ser brigando pelos direitos humanos (ser senciente e consciente) que iremos eliminar esse medo animal de nossa sociedade.



Segundo Post: Entendendo quem é o meliante



Concordo que o problema não é a existência da PM e sim a ignorância de alguns deles. Não acho que a PM tem que acabar, mas ser orientada. Outro dia PM me abordou me xingando e eu tive que dar uma aula de direito pra ele na frente de todo mundo. Ficou feio pra ele porque eu não cometi crime, mas ele sim. O desafiei a irmos para a delegacia e ele não teve coragem porque viu que eu conheço a lei não só pelo lixo que temos aqui no Brasil, mas também como e onde ela deve se fundamentar. Infelizmente é assim. Não o condeno o PM porque eles são mandados a serem assim. O povão no geral tem medo da voz de autoridade. Mas confundem autoridade com direito de agressão. Por isso vai tudo continuar na merda se esse tipo de pensamento persistir. A internete e o conhecimento tá ai pra todo mundo. É facinho conhecer nossos direitos.

Existe alguns problemas no seu discurso, Pavesi. E sinceramente desconfio. você pode até chorar, se irritar, bater o pé, mas vou te mostrar aqui porque esse caminho ai que está propagando não vai dar certo e ainda vou dar exemplos.

Pesquisa o caso Cachoeira e o grampo dele com Demostenes Torres. A corrupção aqui cria o mercado negro, incluindo o de órgãos, é equivalente o que se faz com as drogas. Criminalizar faz o preço disparar em mais de 10 mil porcento e só beneficia os propineiros das leis. O que fará os políticos ligados ao trafico só ficarem mais ricos com a proibição. Ver Cachoeira com os Jogos.

https://www.youtube.com/watch?v=wPo2_LFRMZs
https://www.youtube.com/watch?v=cIJL9uT6Epc

Só a PM e os comandantes tem o direito de traficar armas e drogas e ficarem impunes? Acho que não, né? Quantos carinhas que lerem aqui vão ter coragem de falar dos PMs que no lugar de levar os usuários em cana levam as drogas pra eles mesmos venderem ou consumirem? Não quero acusar a instituição. Continuem lendo para entender o foco do problema. Essas loucuras da justiça só acontecem porque o brasileiro não sabe o que é bilateralidade atributiva. Não pode existir lei que se não existe bilateralidade atributiva. E se existe lei que interfira sem ter bilateralidade, então quem se sentir injustiçado por essa lei, vai desobedecer. Só por isso que as políticas anteriores contra as drogas foi idiota. No lugar dela enfraquecer o tráfico, deu foi força.

Não tem pra onde correr. O risco nesse caso compensa pra todo mundo que pratica a infração (estou sendo específico nas infrações onde não existe bilateralidade atributiva). E olha, amigo... existem no Brasil uma pancada de leis idiotas assim. E como um não vai acusar o outro por medo dos próprios deslizes... acabam todos sendo tolerantes. Um usuário não vai entregar um traficante, uma mãe solteira não vai entregar o medico do seu aborto.

ATENÇÃO: Não curto tolerância para infrações onde a bilateralidade tenha sido atingida!

Não tem pra onde correr. Podem dar bilhões de razões pra acabar com as drogas, aborto, gays, movimentos culturais como os negros ou religiosos. Enquanto tiver demanda sem ter bilateralidade vai acontecer tais fatos. Não existe o que fazer a não ser aceitar e cooperar. Quem quer usar drogas vai busca-la independentemente de lei proibindo. O conhecimento da ética e do direito está chegando ao Brasil e até no judiciário e a base que sustenta a legalização é a bilateralidade atributiva e a heteronomia. Acredita que a solução seja matar os usuários? Por que não fazer como no Chile onde Pinochet matou os pobres? É o mesma solução? Matar os pobres, negros, gays, drogados, mendigos e etc e deixarmos os militares, juízes e políticos? Não tem como levantar uma civilização com atitudes desumanas e que atinjam o direito fundamental sem que exista um motivo justo. Estou sendo bem taxativo no que se refere a bilateralidade atributiva.

Não é discussão. é fato comprovado que o caminho não é por ai. A não ser que esteja querendo guerra pra implantar um modelo sonhado por alguns da direita.

Fato: Todos os países, como Uruguai e EUA por exemplos, que legalizaram o uso de maconha tiveram sua criminalidade reduzida em pelo menos 15% (). Muitos dos usuários presos por crimes usam a desculpa de fizeram sobre o uso ou para comprar drogas. Legalizar acabaria com tal desculpa de que faltou dinheiro para as drogas. Se alguém cometesse crime num período em que drogas sejam legais, não teria desculpa para que qualquer crime caísse como culposo.

http://www1.folha.uol.com.br/mundo/2018/01/1949895-uruguai-tem-queda-nos-crimes-do-narcotrafico-apos-lei-da-maconha.shtml

Eu sei o que é maconha e nem por isso eu saio por ai matando. Índole e sanidade independe de droga. Vamos proibir o uso da química, eletrônica e etc porque é perigosa? O que é necessário não é a proibição. É o controle. Um sujeito sai armado na rua e mata alguém. De quem é a culpa? Da arma ou de quem a usa? Se for por esse lado então o maior culpado seria o fabricante da arma! Não... apesar de ser contra a mudança da legislação das armas, e saber do lobby dos putos só pra vender e ganhar dinheiro, não culpo eles pela morte desse alguém na rua. Não tem lógica! E olha que a arma é feita para atingir o direito de alguém (bilateralidade) enquanto a droga não! Que absurdo isso, não é?

É necessário alguma discussão sim, porque se não não se vê a lógica. Se for pra fazer na truculência, vai encontrar gente preparada e vai ser pior... Só é possível arrumar o País pela conscientização geral do significado de Bilateralidade. Truculência vai gerar revolta e atitudes extremas viciadas e recorrentes. É absolutamente estratégico para qualquer democracia a difusão do significado de bilateralidade atributiva.

Eu posso ser contra o aborto para alguém da minha família por questões morais, mas não posso obrigar uma mulher a ser chocadeira. ver esse texto:
O aborto e o limite das leis. em:
ti video tutoriais: teoria geral dos tratados

Quando convém, o aborto é aceitável! Ver caso de gêmeos siameses. Que porra é essa?

Os maiores traficantes não são os da favela. Estão nos dos 3 poderes. Pensa... tudo hoje é controlado por eles. Veja o helicóptero do Perrela. Alguém foi preso nesse caso? A maioria dos presos são pais que não podem pagar pensão, pequenos usuários de drogas, ou ladrão de galinha, enquanto os piores são membros do governo e não são presos! Esta semana aqui no Brasil vários PM e militares foram presos por negociar armas com traficantes. Não é porque é da PM ou forças armadas que é santinho. Eu sei os lixos que estas instituições escondem, mas não adianta porra nenhuma denunciar, pois além de correr o risco de morrer por abalar a moral de vagabundos, não vai ter efetividade. Não é por ai. A solução é conscientizar toda a sociedade da bilateralidade atributiva.

Só existe 2 opções:
Ou você é muito inocente e não sabe de nada...
ou tá mancomunado para ganhar alguma coisa.

A não ser que o senhor seja completamente mal, não tem lógica suas argumentações.

Se me convencer que existe uma terceira opção ou que expus algo errado ai acima, ficaria muito grato. Eu também sei muito bem o que deve ser feito:

pesquise:
ti video tutoriais: teoria geral dos tratados

Não adianta denunciar. Primeiro a sociedade precisa se conscientizar, se não não existirá efetividade das leis.

O que é e pra que servem os direitos humanos:



sábado, 24 de março de 2018

Tratamento de Choque para jogo em javaScript



Tratamento de Choque para jogo em javaScript
São duas imagens onde as dimensões de cada quadrado possuem w e h de 17 pixeis.


O fonte e as duas imagens:


<html>
<body onload="startGame()">
<script>

//=================================================================================================
// Autor: Luiz Augusto S. Prado - 2018
// javaScript: Game - Adam, msgs não chegam direito. Se algo não for feito hoje, não teremos amanhã
//=================================================================================================
    window.requestAnimationFrame = function() 
    {
        return window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||
        window.msRequestAnimationFrame ||window.oRequestAnimationFrame ||
        function(f) 
        {
            window.setTimeout(f,1e3/60);
        }
    }();
    
    getNumber = function(str)
    {
        var r = Number( str.charCodeAt(0) )
        if(r>47 && r<58) r-=48
        if(r>64 && r<91) r-=55
        if(r>96 && r<123)r-=87
        return r;
    }

    paintImagem = function(ctx, ctx2, pos_x_0, pos_y_0, tamanhox, tamanhoy, pos_x_f, pos_y_f, escala, ang)
    {
        ctx.translate( pos_x_f, pos_y_f );
        ctx.rotate(-ang * Math.PI / 180);
        ctx.drawImage(ctx2, pos_x_0, pos_y_0, tamanhox, tamanhoy, escala, escala, escala, escala);
        ctx.rotate(ang * Math.PI / 180);
        ctx.translate( -pos_x_f, -pos_y_f);
    }
    
    Hero = function()
    {        
        this.onde_estou    = "no_mapa"
        this.speedX    = 0;
        this.speedY    = 0;
        this.color    = "red";
        this.width    = 16;
        this.height    = 16;
    }

    paintHero = function(mapa)
    {
        mapa.ctx.fillStyle = mapa.hero.color;
        mapa.ctx.fillRect(mapa.canvas.width/2, mapa.canvas.height/2, 16, 16)
    }

    Ground = function(x0, y0, xf, yf)
    {
        this.x = xf/2*17
        this.y = yf*17
        this.onde_estou    = "no_mapa"
        this.width    = 17;
        this.height    = 17;
        this.px        = x0*this.width;
        this.py        = y0*this.height;        
    }

    Item = function(x0, y0, xf, yf)
    {
        this.x = xf/2*17
        this.y = yf*17
        this.onde_estou    = "no_mapa"
        this.width    = 17;
        this.height    = 17;
        this.px        = x0*this.width;
        this.py        = y0*this.height;        
    }

    paintMap= function(mapa)
    {
        var ctx = mapa.ctx;
        var arq = mapa.arquivo_mapas;    
        var w=mapa.canvas.width/2
        var h=mapa.canvas.height/2;    
        for(var py=0; mapa.mapa!=null && py<mapa.mapa.length; py++ )
        {
            for(var px=0; px<mapa.mapa[py].length; px++ )
            {
                if( mapa.mapa[py][px]!=null )
                {
                    var m = mapa.mapa[py][px];    
                    var tm=m.width;    
                    paintImagem(ctx, arq, m.px, m.py, tm, tm, m.x-mapa.hero.x+w-4, m.y-mapa.hero.y+h-4, tm+2, 0)
                }
            }
           }
    }

    paintItens = function(mapa)
    {
        var ctx = mapa.ctx;
        var arq = mapa.arquivo_itens;
        var w=mapa.canvas.width/2
        var h=mapa.canvas.height/2;        
        for(var py=0; mapa.itens!=null && py<mapa.itens.length; py++ )
        {
            for(var px=0; px<mapa.itens[py].length; px++ )
            {
                if( mapa.itens[py][px]!=null )
                {
                    var m = mapa.itens[py][px];    
                    var tm=m.width;                
                     paintImagem(ctx, arq, m.px+mapa.time*tm, m.py+1, tm,  tm-1, m.x-mapa.hero.x+w-4, m.y-mapa.hero.y+h-4, tm+2, 0)
                }
            }
           }
    }
    
    function createItens()
    {
        var str = document.getElementById("itens").value
        str = str.replace(new RegExp(/ /, 'gi'), "");
        var res = str.split("|\n");
        var array_final = new Array();
        for(var py=0; py<res.length-1; py++)
        {
            array_final[py]=[]
            for(var px=0; px<res[py].length; px+=2)
            {
                if( res[py].charAt(px)!='3' && res[py].charAt(px+1)!='z' )
                {
                     array_final[py][px/2] = new Item(getNumber(  res[py].charAt(px)) ,  getNumber( res[py].charAt(px+1) ), px, py ); 
                }
            }
        }
        return array_final;
    }
    
    function createMapa()
    {
        var str = document.getElementById("mapa").value    
        str = str.replace(new RegExp(/ /, 'gi'), "");
        var res = str.split("|\n");
        var array_final = new Array();
        for(var py=0; py<res.length-1; py++)
        {
            array_final[py]=[]
            for(var px=0; px<res[py].length; px+=2)
            {
                if( res[py].charAt(px)!='3' && res[py].charAt(px+1)!='z' )
                {
                     array_final[py][px/2] = new Ground(getNumber(  res[py].charAt(px)) ,  getNumber( res[py].charAt(px+1) ) , px, py ); 
                }
            }
        }
        return array_final;
    }

    /*===========================================
    O mapa anda ao contrário. Ele é a referência. 
                                       
      e1 d1       e2 d2           
    n1_|_|_n1   n2_|_|_n2    a. .b y1
        s1_|_|_s1   s2_|_|_s2    c. .d y2  
           | |         | |       x1 x2
          e1 d1       e2 d2      

    */

    function isHitting(obj1, obj2, tm)
    {
        var e1 = obj1.x - obj1.speedX -tm
        var d1 = obj1.x - obj1.speedX 
        var n1 = obj1.y - obj1.speedY -tm
        var s1 = obj1.y - obj1.speedY

        var e2 = obj2.x         
        var d2 = obj2.x + tm
        var n2 = obj2.y         
        var s2 = obj2.y + tm
        
        var x1 = e1<=d2 && d2<=d1            
        var x2 = e1<=e2 && e2<=d1
        var y1 = n1<=s2 && s2<=s1                
        var y2 = n1<=n2 && n2<=s1

        var a = x1 && y1
        var b = x2 && y1
        var c = x1 && y2
        var d = x2 && y2

        if( a || c || b || d )
        {
            if( (x1 || x2) && obj1.speedY!=0 ) obj1.speedY =0
            if( (y1 || y2) && obj1.speedX!=0 ) obj1.speedX =0
            return true
        }
        return false
    }


    function Mapa()
    {
        this.start = function() 
        {
            this.arquivo_mapas = new Image()
            this.arquivo_mapas.src = "mapa.png"
            this.arquivo_itens = new Image()
            this.arquivo_itens.src = "itens.png"

            this.canvas = document.createElement("canvas")

            this.count = 0;
            this.time=0;

            this.ctx = this.canvas.getContext("2d");
            document.body.insertBefore(this.canvas, document.body.childNodes[0]);
            this.canvas.width = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth )-70;
            this.canvas.height= (window.innerHeight|| document.documentElement.clientHeight|| document.body.clientHeight)-70;

            window.addEventListener('keydown', function (e) 
            {
               window.keys = (window.keys || []);
               window.keys[e.keyCode] = (e.type == "keydown")  ;
            })

            window.addEventListener('keyup', function (e) 
            {
               window.keys[e.keyCode] = (e.type == "keydown") ;            
            })
            
            this.itens = createItens();
            this.mapa  = createMapa ();
            this.hero  = new Hero ();
            
            this.hero.x = 0;
            this.hero.y = 0;
        }

        this.clear = function()
        {
            this.canvas.width = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth )-70;
            this.canvas.height= (window.innerHeight|| document.documentElement.clientHeight|| document.body.clientHeight)-70;

            this.ctx.fillStyle="#99ccff";
            this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height); 
        }

        this.calcs = function()
        {
            this.hero.speedX = 0;
            this.hero.speedY = 0;
            this.hero.w = this.canvas.width/2;
            this.hero.h = this.canvas.height/2;
            
            this.count++
            
            if(this.count%10==0)
            {
                this.time++
                if(this.time==4){this.time=0; this.count=0}
            }
            
            if (window.keys && window.keys[37]) {this.hero.speedX = 2; }
            if (window.keys && window.keys[39]) {this.hero.speedX =-2; }
            if (window.keys && window.keys[38]) {this.hero.speedY = 2; }
            if (window.keys && window.keys[40]) {this.hero.speedY =-2; }
            
            var saida=false;

            for(var py=0; py<this.mapa.length; py++)
            {
                for(var px=0; px<this.mapa[py].length; px++)
                {
                    if(this.mapa[py][px]!=null)
                    {
                        saida = isHitting(this.hero, this.mapa[py][px], 17)
                    }
                    if( saida ) break
                }
                if( saida ) break
            }
            this.hero.x -= this.hero.speedX;
            this.hero.y -= this.hero.speedY;
        }

        this.paint = function()
        {
            paintMap  (this)
            paintItens(this)
            paintHero (this)
        }
    }

    var mapa;
    animloop = function()
    {
        mapa.calcs();
        mapa.clear();
        mapa.paint();
        requestAnimationFrame(animloop);
    }

    function startGame() 
    {
        mapa = new Mapa();
        mapa.start();
        animloop();
    }

</script>

<div id="msg">mova com o teclado.</div>

<textarea id="itens" rows="30" cols="60"  style="display:none;">
3z 3z 3z 3z 3z 3z 3z 3z|
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 0g 0h 0i 0j 0k 0l 0m 0n 0o|
</textarea>

<textarea id="mapa"  rows="30" cols="60"  style="display:none;">
3z 3z 3z 3z 3z 3z 3z 3z|
3z 3z 3z 3z 3z 3z 3z 3z|
3z 3z 3z 3z 3z 3z 3z 3z|
3z 3z 3z 3z 3z 60 10 10|
00 10 10 10 10 61 11 11|
11 11 11 11 11 11 11 11|
11 11 11 11 11 11 11 11|
11 11 11 11 11 11 11 11|
11 11 11 11 11 11 11 11|
11 11 11 11 11 11 11 11|

</textarea>
</body>
</html>

segunda-feira, 12 de março de 2018

No máximo 4 cores em um mapa

Um probleminha matemático que li e estava pensando:
https://www1.folha.uol.com.br/colunas/marceloviana/2018/03/quatro-cores-bastam-para-colorir-qualquer-mapa.shtml

A quantidade mínima de cores para colorir qualquer mapa é 4?
A resposta é questionar qual é o máximo de países que fazem fronteira entre eles mesmos.

Em um universo plano, de bordas indo ao infinito ou uma plano conexo (Esfera) a resposta parece funcionar. Mas em um toroide, a quantidade de números pode ser maior que 4.

Confrontar todas as cores nos mostra que não é nem possível forçarmos que 5 estados se toquem entre si.


No mesmo esquema entra a tentativa de ligarmos agua, luz e telefone a 3 casas sem cruzar os tipos.
Para conseguirmos conectar os três as 3 casas, é necessário um toroide.



segunda-feira, 5 de março de 2018

Editando Livros com HTML

Percebi que no novo Windows muitos dos antigos softwares bons não estão mais vindo com ele. Como o Office. Para contornar a exigência de ter um bom editor para um livro ou carta, decidi fazer um pequeno algoritmo para facilitar a edição e impressão em PDF.

ver resultado no PDF desse link:
http://tivideotutoriais.blogspot.com.br/2018/01/eletron.html

Para demonstração dois arquivos. O Texto e o arquivo que controlará o posicionamento, criação de índices, paginas e formatação. Para adicionar imagens e índices, estude o fonte exemplo.

Editor.js

    /*
    Março de 2018
    Autor: Luiz Augusto da Silva Prado
    Site: www.codigorapido.com.br
    */

    var altura_pagina=760;
    var largur_coluna=460;
    var cor_borda="#dddddd";
    var pagina_bordas="border:8px;margin:8px;padding:8px;";

    //======================================
    // EXCLUIR QUEBRAS DE LINHA REPETIDOS
    //======================================
    function replaceAllBreak(str)
    {
        str = str.replace(new RegExp("\<\/tr\>\n", 'gi'), "\<\/tr\>");
        str = str.replace(new RegExp("\n\<tr\>", 'gi'), "\<tr\>");
        str = str.replace(new RegExp("\<\/td\>\n", 'gi'), "\<\/td\>");
        str = str.replace(new RegExp("\n\<td\>", 'gi'), "\<td\>");
        str = str.replace(new RegExp("\<\/table\>\n", 'gi'), "\<\/table\>");
        str = str.replace(new RegExp("\n\<table", 'gi'), "\<table");
        str = str.replace(new RegExp("\n\n", 'gi'), "\n");
        //espaçamento dos parágrafos
        str = str.replace(new RegExp("\n", 'gi'), "</br>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
        return str;
    }

    //======================================
    // TÓPICO DO ÍNDICE
    //======================================
    pontos_indice = function(str)
    {
        var resp=""
        strr= str.replace(/\<span (.*?)\>/gi, '')
        strr= strr.replace(/\<\/span\>/gi, '')
        // Quantidade de caracteres maximos por linha
        for( var i=0; i<53 - strr.length; i++)
        {
            resp+=".";
        }
        return resp;
    }

    //======================================
    // ÍNDICE
    //======================================
    getIndex = function(str)
    {
        var Array_Parte = str.match( /\<div parte\>((\n|.)*?)#parte \<\/div\>/gi, '');
        var indice = new Array();
        var total_paginas=0;
        var array_romanos = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"]

        for(var n=0; n<Array_Parte.length; n++)
        {
            var t=new Object();
            t.parte="<br><br><span style='color:red;font-size:18px;'><b>Parte "+array_romanos[n]+" </b></span><br><br>";
            t.topicos=[];
            t.paginas=[];
            var Array_Paginas = Array_Parte[n].match( /\<div page\>((\n|.)*?)#page \<\/div\>/gi, '');
            for(var i=0; i<Array_Paginas.length; i++)
            {
                var Array_Topico = Array_Paginas[i].match( /\n\<b\>((\w|.)*?)\<\/b\>/gi, '');
                if(Array_Topico!=null)
                {
                    for(var j=0; j<Array_Topico.length; j++)
                    {
                        topico = Array_Topico[j].replace("<b>", "").replace("</b>", "")
                        t.topicos = t.topicos.concat( topico  )
                        t.paginas = t.paginas.concat(total_paginas+i+1);
                    }
                }
            }
            indice = indice.concat(t)
            total_paginas+=Array_Paginas.length;
        }

        paginas="";
        temp="";

        for(var n=0; n<indice.length; n++)
        {
            temp += indice[n].parte
            for(var j=0; j<indice[n].paginas.length; j++)
            {
                temp += indice[n].topicos[j] + pontos_indice(indice[n].topicos[j] + indice[n].paginas[j]) + indice[n].paginas[j]+"<br>"
                if((j+1)%22==0 || j==indice[n].paginas.length-1)
                {
                    paginas+="<div indice>"+temp+"</div>"
                    temp="";
                    total_paginas++
                }
            }
        }

        if(total_paginas%2==1)
        {
            str += "<div page>\n#page </div>";
        }
       
        str = str.replace(new RegExp(/\n\<div parte\>/, 'gi'), "");
        str = str.replace(new RegExp(/#parte \<\/div\>/, 'gi'), "");

        str = str.replace("#indice", paginas);

        return str
    }

    //======================================
    // PAGINAÇÃO
    //======================================
    getPagination = function(str)
    {
        var Array_Paginacao = str.match(/#page/g);
        if(Array_Paginacao!=null)
        for(var i=0; i<Array_Paginacao.length; i++)
        {
            str = str.replace(Array_Paginacao[i], "<div style='width:"+largur_coluna+"px;text-align:center;position:absolute;bottom:0px;'>"+(i+1)+"</div>");
        }
        return str;
    }
   
    //======================================
    // ADICIONAR IMAGEMS
    //======================================
    getImages = function(str)
    {
        var Array_Imagens = str.match(/#imagem[D-E][0-9] [0-9][0-9][0-9]\|[0-9][0-9][0-9]/g);
        //if(Array_Imagens!=null)
        for(var i=0; i<Array_Imagens.length; i++)
        {
            var DE = Array_Imagens[i].match(/[D-E][0-9]/g);
            var NN = Array_Imagens[i].match(/[0-9][0-9][0-9]/g);
            if(DE[0].charAt(0)=='D')
            str = str.replace(Array_Imagens[i] + " ", "<img style='float:right;width:"+NN[0]+"px;height:"+NN[1]+"px;margin:8px;padding:0px;border:"+DE[0].charAt(1)+"px solid #777777' src='imagens/");
            if(DE[0].charAt(0)=='E')
            str = str.replace(Array_Imagens[i] + " ", "<img style='float:left; width:"+NN[0]+"px;height:"+NN[1]+"px;margin:8px;padding:0px;border:"+DE[0].charAt(1)+"px solid #777777' src='imagens/");
            str = str.replace(" #fim", "'>");
        }
        return str;
    }

    //======================================
    // DIVISÃO DE PÁGINAS
    //======================================
    getDivPages = function(str)
    {
        var Array_DivisaoPaginas = str.match(/<div page/g);
        //if(Array_DivisaoPaginas!=null)
        for(var i=0; i<Array_DivisaoPaginas.length; i++)
        {
            str = str.replace(Array_DivisaoPaginas[i], "<div style='"+pagina_bordas+"position:relative;width:"+largur_coluna+"px;height:"+altura_pagina+"px;border:1px solid "+cor_borda+";' ");
        }
        return str;
    }

    //======================================
    // GERRAR ÍNDICE
    //======================================
    generateIndex = function(str)
    {
        var Array_Gerar_Indice = str.match(/<div indice/gi, '');
        //if(Array_Gerar_Indice!=null)
        for(var i=0; i<Array_Gerar_Indice.length; i++)
        {
            str = str.replace(Array_Gerar_Indice[i], "<div style='"+pagina_bordas+"font-size:12px; font-family:Courier New,Courier,monospace;font-weight: bolder;position:relative;width:"+largur_coluna+"px;height:"+altura_pagina+"px;border:0px solid #cccccc;' ");       
        }
        return str;
    }

    //======================================
    // START
    //======================================   
    makePages = function()
    {
        var mapa = document.getElementById("mapa");
        var str = mapa.value;

        str = str.replace(new RegExp(/\n\n\<div/, 'gi'), "<div");
        str = str.replace(new RegExp(/div\>\n\n/, 'gi'), "div>");
        str = str.replace(new RegExp(/\n\<div/, 'gi'), "<div");
        str = str.replace(new RegExp(/div\>\n/, 'gi'), "div>");
   


        str = getImages(str)   
        str = getIndex(str)
        str = getPagination(str)   
        str = getDivPages(str)       
        str = generateIndex(str)
        str = replaceAllBreak(str);



        document.getElementById("texto").innerHTML = str ;
        mapa.style.visibility = "hidden";
        mapa.style.height = "0%";
        document.getElementById("myCheck").checked = true;
    }

    //======================================
    // TESTE
    //======================================
    check = function()
    {
        var mapa = document.getElementById("mapa");
        if(document.getElementById("myCheck").checked)
        {
            mapa.style.visibility = "hidden";
            mapa.style.height = "0%";
        }
        else
        {
            mapa.style.visibility = "visible";
            mapa.style.height = "100%";
        }
    }
   
    //Ver como ficou: <input type="checkbox" id="myCheck" onclick="check()" >  <button onclick="makePages()">Atualizar</button>  <br>

Para inserir tópicos no índice,  basta iniciar nova linha entre as tags <b> e </b>
Para inserir imagens basta inserir algo equivalente a:
#imagemD2 210|210 imagem.png #fim
D significa que será posicionado a direita do texto
2 significa a espessura da borda
210|210 são as medidas w e h da imagem

Exemplo do uso do código. Crie um arquivo como mostrado abaixo:

<html>
<script type="text/javascript" src="Editor.js"></script>
<textarea id="mapa"  rows="15" cols="120" >
<div parte>
<div page>




<span style='color:red;font-size:18px;'><b>Parte I </b></span>

Algo aqui
<b>vai para o índice</b>

#page </div>
#parte </div>

<div parte>
<div page>




<span style='color:red;font-size:18px;'><b>Parte II </b></span>

Algo aqui
<b>Indice</b>
#imagemD2 210|210 imagem.png #fim

#page </div>

<div page>


Algo aqui
<b>Indice</b>


#page </div>
#parte </div>

</textarea><br>

<div id="texto" style="font-size:14px;  text-align: justify;  column-count: 2; -webkit-column-gap:0px; -moz-column-gap:0px; column-gap:0px;">Defeito</div>

<script>
makePages()
</script>
</html>