Home> Tecnologia

Tecnologia Archive

Joguinho de memória em pascal – Trabalho feito no curso

fevereiro 12, 2011 Category :Computação| Notícia| Tecnologia Off

Essa foi bem interessante. Professor de Programação colocou pra matar mesmo. Logo no 1º bloco pra fazer um jogo de memória usando matriz e arrays em pascal.

Bem simples mas divertido.

//B - numero certo na casa correta
//E - numero certo na casa errada
program jogo;
uses crt;
var
senha: array[1..4] of integer;
i,j,l,n,cont:integer;
gab: array[1..8,1..4] of string;
resp: array[1..8,1..4] of integer;
ganhou:boolean;
key:char;

//procedimento para mostrar matriz completa
procedure matrix;
var i,j,k:integer;
begin
clrscr;
writeln('B - numero certo na casa correta');
writeln('E - numero certo na casa errada');
writeln;
for i:=8 downto 1 do
begin
for j:=1 to 4 do
begin
write(gab[i,j],' ');
end;
for k:=1 to 4 do
begin
write(' ',resp[i,k]);
end;
writeln;
end;
writeln;
end;

//procedimento de encerramento do jogo - acertou
procedure fim;
var i:integer;
begin
clrscr;
textbackground(blue);
for i:=1 to 20 do
begin
write('<');
for j:=1 to 30 do
begin
if (i=10) and (j=10) then
begin
write('VOCE ACERTOU TUDO!');
j:=j+8;
end
else
write('--');
delay(5);
end;
write('>');
writeln;
end;

for i:=1 to 100 do
begin
gotoxy(20,10);
if i mod 2 = 0 then
write('VOCE ACERTOU TUDO!')
else
write('----ABESTADO------');
delay(600);
end;
readkey;
end;

//procedimento de encerramento do jogo - perdeu
procedure gameover;
var i:integer;
begin
clrscr;
textbackground(red);
for i:=1 to 20 do
begin
write('<');
for j:=1 to 30 do
begin
if (i=10) and (j=10) then
begin
write('VAI SER BURRO LONGE!');
j:=j+9;
end
else
write('--');
delay(5);
end;
write('>');
writeln;
end;

for i:=1 to 100 do
begin
gotoxy(20,10);
if i mod 2 = 0 then
write('VAI SER BURRO LONGE!')
else
write('----ABESTADO--------');
delay(600);
end;
readkey;
end;

//inicio do programa
begin
TEXTCOLOR(white);
ganhou:=false;
//zerando matrizes
for i:=1 to 8 do
begin
for j:=1 to 4 do
begin
gab[i,j]:='*';
resp[i,j]:=0;
end;
end;

writeln('Digite 4 numeros inteiros(1-8): ');
for i:=1 to 4 do
begin
TEXTCOLOR(black);
readln(senha[i]);
TEXTCOLOR(white);
write('*');
end;
clrscr;
//desenha matriz limpa
matrix;
TEXTCOLOR(white);
writeln;
//inicio do jogo - loop de 8 tentativas
for i:=1 to 8 do
begin
if ganhou=true then
begin
fim;
break;
end
else
begin
if i>1 then
begin
TEXTCOLOR(yellow);
writeln('Errado! Tente novamente!!!');
TEXTCOLOR(white);
writeln;
end;
end;
writeln('Digite sua ',i,'a resposta (4 numeros inteiros - 1 a 8): ');
n:=1;
cont:=0;
for j:=1 to 4 do
begin
readln(resp[i,j]);
if senha[j]=resp[i,j] then
begin
gab[i,n] := 'B';
n:=n+1;
//se cont for igual a 4 o jogador acertou tudo na sequencia certa
cont:=cont+1;
if cont=4 then
ganhou:=true;
end
else
//se não achar na sequencia certa, verifica se tem elementos iguais nas sequencias erradas
begin
for l:=1 to 4 do
begin
if resp[i,j] = senha[l] then
begin
gab[i,n] := 'E';
n:=n+1;
end;
end;
end;
end;
matrix;
end;
//fim do jogo
if ganhou=false then
gameover;

readkey;
end.

Função para converter fórmulas condicionais do Excel para PHP

janeiro 3, 2011 Category :PHP| Sistemas| Tecnologia| Web Off

A algum tempo atrás precisei de uma função que convertesse pra mim estruturas condicionais do Excel [SE()], em estruturas condicionais da linguagem PHP. Após perder muito tempo a procura e não encontrar nada, resolvi criar uma função para estruturas simples.

Exemplo:

$x = 15;
$result = excelToPhp(“SE($x<=4;0;SE($x=15;111;666))”);
echo $result;
[Resultado: 15<=4?0:(15==15?111:666) ]

Com isso basta utilizar o eval e receber o valor da condição:

echo eval(“$test = $result;”);
echo $test;
[Resultado: 111]

Simples não!

Agora veja a função aqui:

function excelToPhp($for){

$operadores = "-*/=><";
$for = str_replace("SE","IF",$for);
$str = $for;
$pos = strpos($for,"E(");
while($pos!=''){
     $exp = substr($str,$pos+1);
     $pos1 = strpos($exp,"(");
     $pos2 = strpos($exp,")");
     $str1 = substr($exp,$pos1+1,$pos2-1);
     $str = str_replace(";","#",$str1);
     $for = str_replace($str1,$str,$for);
     $pos = strpos($str,"E");
}

$str = $for;
$pos = strpos($for,"OU(");
while($pos!=''){
     $exp = substr($str,$pos+1);
     $pos1 = strpos($exp,"(");
     $pos2 = strpos($exp,")");
     $str1 = substr($exp,$pos1+1,$pos2-1);
     $str = str_replace(";","@",$str1);
     $for = str_replace($str1,$str,$for);
     $pos = strpos($str,"OU");
}

$i = 0;
$str = explode(";",$for);
while($i<count($str)){
     $str[$i] .= ";";
     $j=0;
     while($j<strlen($operadores)){
          $op = $operadores{$j};
          if(strpos($str[$i],$op)!=''){
               $str[$i] = $str[$i]."?";
          }
          $j++;
     }
     $str[$i] = str_replace("IF","",$str[$i]);
     $forr .= $str[$i];
     $i++;
}

$forr = substr($forr,1);
$forr = str_replace(";?","?",$forr);
$forr = str_replace("|??","AA",$forr);
$forr = str_replace("AA","?",$forr);
$forr = str_replace("??","?",$forr);
$forr = str_replace("@"," || ",$forr);
$forr = str_replace("E","",$forr);
$forr = str_replace("OU","",$forr);
$forr = str_replace(";",":",$forr);
$forr = str_replace(":)",")",$forr);
$forr = str_replace("||):",")?",$forr);
$forr = substr($forr,0,strlen($forr)-2);
$forr = str_replace("=","==",$forr);
$forr = str_replace("<==","<=",$forr);
$forr = str_replace("|):",")?",$forr);
$forr = str_replace("?(",":(",$forr);
$forr = str_replace("#"," && ",$forr);
$forr = str_replace("?0)"," : 0)",$forr);
return $forr;
}

Ainda tem muita coisa pra fazer nessa função e deixar ela mais limpa, mas ja quebra um grande galho.

inté mais!