Jogo da Velha utilizando jQuery e PHP

Autor: Amin Saeedi
Fonte: phpclasses.org

Download dos Arquivos: Aqui
Exemplo Funcionando: Aqui

Bom… não tem muito o que explicar…
O jogo é constituído de algumas classes em PHP e algumas libraries escritas em jQuery e Javascript.

A interação do jogo é feita através de requisições ($.post) do jQuery no arquivo (libs/TicTacToe.js) ao arquivo index.php

Arquivo: index.php

<?php
    set_time_limit(0);

    require 'Board.php';
    require 'TicTacToe.php';

    $board = explode(',', $_POST['board']);
    foreach ($board as $key => $b) {
        $board[$key] = intval($b);
    }

    $ttt = new TicTacToe();
    $response = $ttt->play($board);
    echo json_encode($response);
?>

O index.php recebe as posições que estão marcadas no quadro e efetua o cálculo para definir a próxima jogada.
O retorno é no formato JSON interpretado pela biblioteca Javascript…
Assim até o final…

Para alterar quem inicia o jogo basta alterar no arquivo (/libs/Position.js):

<?php
var Const = {
    HUMAN: 1,
    BLANK: 0,
    COM: -1,
    TURN: this.HUMAN
};
?>

Para:

<?php
var Const = {
    HUMAN: 1,
    BLANK: 0,
    COM: -1,
    TURN: this.COM
};
?>

Vale a pena percorrer as classes do jogo para entender o seu funcionamento.

Espero que gostem!

Até (:

Share Button

Tirar foto utilizando Webcam e PHP

Fonte: Aqui

Author: Vivek Moyal
Tradução e Ajustes: PHPBlog
Download dos Arquivos: Aqui

*Não colocarei o exemplo funcionando aqui pois não tenho como prever o conteúdo das fotos tiradas. ehehehehehehe

Para este tutorial, utilizaremos o webcam.js desenvolvido pelo Joseph Huckaby.
Disponível em: https://code.google.com/p/jpegcam/

Vamos as explicações.

No arquivo index.php encontramos:

<!DOCTYPE html>
<html>
<head>
<title>PHP Blog - Exemplo de utilização de Webcam com PHP</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<script type="text/javascript" src="webcam.js"></script>
<script type="text/javascript">
//Configurando o arquivo que vai receber a imagem
webcam.set_api_url('upload.php');

//Setando a qualidade da imagem (1 - 100)
webcam.set_quality(90);

//Habilitando o som de click
webcam.set_shutter_sound(true);

//Definindo a função que será chamada após o termino do processo
webcam.set_hook('onComplete', 'my_completion_handler');

//Função para tirar snapshot
function take_snapshot() {
document.getElementById('upload_results').innerHTML = '<h1>Uploading...</h1>';
webcam.snap();
}

//Função callback que será chamada após o final do processo
function my_completion_handler(msg) {
if (msg.match(/(http\:\/\/\S+)/)) {
var htmlResult = '<h1>Upload Successful!</h1>';
htmlResult += '<img src="'+msg+'" />';
document.getElementById('upload_results').innerHTML = htmlResult;
webcam.reset();
}
else {
alert("PHP Erro: " + msg);
}
}
</script>
</head>
<body>
<script type="text/javascript">
//Instanciando a webcam. O tamanho pode ser alterado
document.write(webcam.get_html(320, 240));
</script>
<form>
<input type=button value="Configurar" onClick="webcam.configure()">
&nbsp;&nbsp;
<input type=button value="Tirar Foto" onClick="take_snapshot()">
&nbsp;&nbsp;
<input type=button value="Reset" onClick="webcam.reset()">
</form>
<div id="upload_results"></div>
</body>
</html>

É basicamente composto por HTML e Javascript no qual vai instanciar a Webcam e habilitar algumas funcionalidades.

O PHP está no arquivo: upload.php

<?php
    session_start();

    $uploadDir = 'uploads';

    if(!is_dir($uploadDir)){
        if (!mkdir($structure, 0777, true)) {
            print "ERRO: Não foi possível criar o diretório [uploads]";
        }
    }

    if(!is_writable($uploadDir)){
        chmod($uploadDir, 0777);
    }

    $name = $uploadDir.'/image_'.date('YmdHis').'.jpg';
    $file = file_put_contents($name, file_get_contents('php://input'));
    if (!$file) {
        print "ERRO: Falha de escrita para o arquivo [$name], É necessário dar permissão de escrita na pasta [$uploadDir]\n";
        exit();
    }

    print 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI']).'/'.$name;
?>

Este é o responsável por fazer o upload da imagem gerada e salvar na pasta definida na variável “$uploadDir”.

Vale lembrar que é preciso definir a permissão de escrita para a pasta definida. No caso do exemplo “uploads”.

Até (:

Share Button

Empacotando código fonte javascript com PHP

Aos Arquivos:

Download: Aqui
Exemplo: Aqui

Feito isso, vamos ao código:

Arquivo: index.php

<?php

    $treat = false;
    //Verificando o post
    if (isset($_POST['src']))
    {
        //Capturando o fonte
        $script = $_POST['src'];
        //Vericicando magic quotes (aspas) do servidor
        if (get_magic_quotes_gpc())
        {
            $script = stripslashes($script);
        }

        //Capturando dados do post do fomulário
        $encoding = (int)$_POST['ascii_encoding'];
        $fast_decode = isset($_POST['fast_decode']) && $_POST['fast_decode'];
        $special_char = isset($_POST['special_char'])&& $_POST['special_char'];

        //Incluindo a classe JavascriptPacker
        require 'class.JavaScriptPacker.php';

        //Instanciando o objeto
        $packer = new JavaScriptPacker($script, $encoding, $fast_decode, $special_char);
        //Empacotando
        $packed = $packer->pack();        
        $treat = true;
    }
?>

No exemplo, temos um textarea onde colocamos nossas funções javascript.
Abaixo escolhemos algumas opções de criptografia:
Tipo de codificação (Cuidado ao utilizar High ASCII com utf-8)
Decodificação Rápida
Caracteres Especiais

Com isso, ao clicar no botão Codificar teremos abaixo o nosso javascript empacotado.

Exemplificando:

Uma função simples:

function mostraMensagem(msg){
   alert(msg);
}

Empacotando, resultaria em:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1 3(0){2(0)}',4,4,'msg|function|alert|mostraMensagem'.split('|'),0,{}))

Um pouco menos claro ao entendimento humano. ehehehe

Usem e abusem.

Até!

Share Button