Google+ Followers

segunda-feira, 30 de julho de 2012

Jogo em Delphi

A tela deve ficar como na figura abaixo...


Segunda parte do jogo



{limpa os edits}
    edit1.Clear;
     edit2.Clear;
      edit3.Clear;
       edit4.Clear;
        edit1.SetFocus;

end;
{programação do form}
procedure TForm1.FormShow(Sender: TObject);
var
wval:string;
 begin
  randomize;
   wval:=inputbox('Entrada','Digite seu nome:', '');
    label1.Caption:=('Bem vindo(a)!  '+wval);
   edit1.Clear;
  edit2.Clear;
 edit3.Clear;
  edit4.Clear;
   label8.Caption:=timetostr(now);
     label9.Caption:=datetostr(now);

{linha de codigo do mediaplayer}
    begin
   MediaPlayer1.FileName:='trilha.mp3';
  with MediaPlayer1 do
 if not AutoOpen then
  begin
   Open;
    Play;
     end;
     end;

{linha de codigo do timer,data}
begin
Tempo := Now;
Timer1.Enabled := True;
end;
end;

{linha de codigo do button sair}
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 close;
end;

{codigo de saida do timer data e cronometor}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label8.Caption:=timetostr(now);
 label9.Caption:=datetostr(now);
label17.Caption:= formatDateTime( 'nn:ss',Now-tempo);
   end;

{linha de codigo do button3}
procedure TForm1.SpeedButton3Click(Sender: TObject);

begin
   if (edit1.Text='')then
   a:=0
    else
     a:=StrToInt(edit1.Text);
      if (edit2.Text='')then
       b:=0
        else
       b:=StrToInt(edit2.Text);
      if (edit3.Text='')then
     c:=0
   else
  c:=StrToInt(edit3.Text);
 if (edit4.Text='')then
  d:=0
   else
    d:=StrToInt(edit4.Text);

{compara se a senha está certa}
   if (a=ra) then
  if b=rb then
 if c=rc then
  if d=rd then
  begin
{Compara se a senha tem erro e da uma mensagem
Caso esteja se isso for verdadeiro}
   if messagedlg('Parabéns, você acertou a combinação',mtinformation,[mbOK],0)=mrOK then
       end;
          if (a<>ra) then
     begin
      if messagedlg('Erro na 1º combinação',mterror,[mbYes],0)=mrYes then
      end;
    if (b<>rb) then
  begin
   if messagedlg('Erro na 2º combinação',mterror,[mbYes],0)=mrYes then
    end;
     if (c<>rc) then
      begin
       if messagedlg('Erro na 3º combinação',mterror,[mbYes],0)=mrYes then
      end;
     if (d<>rd) then
    begin
   if messagedlg('Erro na 4º combinação',mterror,[mbYes],0)=mrYes then
   end;

{limpa os edts}
   edit1.Clear;
    edit2.Clear;
     edit3.Clear;
      edit4.Clear;
       edit1.SetFocus;

 end;

 {codigo do radiogrup1}
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
begin
 SpeedButton3.Enabled:=false;
 SpeedButton1.Enabled:=true;
   end
   else
   begin
   SpeedButton3.Enabled:=true;
   SpeedButton1.Enabled:=false;
   end;

{sorteia os números do nivel 2}
 ra:=random(10-1);
   rb:=random(10-1);
    rc:=random(10-1);
     rd:=random(10-1);
//depois tirar estas linhas
    label12.Caption:=inttostr(ra);
   label13.Caption:=inttostr(rb);
  label14.Caption:=inttostr(rc);
 label15.Caption:=inttostr(rd);
//------------------------------
end;
procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  var DoDefault: Boolean);
begin

end;

end.

Jogo em delphi

Ola hoje iremos fazer um jogo em delphi, iremos usar esta imagem


e um arquivo de áudio mp3 com este nome trilha.
Primeira parte.....................

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, Buttons, StdCtrls, XPMan, MPlayer;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    SpeedButton1: TSpeedButton;
    GroupBox1: TGroupBox;
    SpeedButton2: TSpeedButton;
    Label2: TLabel;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    XPManifest1: TXPManifest;
    Label8: TLabel;
    Label9: TLabel;
    Timer1: TTimer;
    Label10: TLabel;
    Label11: TLabel;
    RadioGroup1: TRadioGroup;
    SpeedButton3: TSpeedButton;
    Label1: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label17: TLabel;
    MediaPlayer1: TMediaPlayer;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
      var DoDefault: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
{varivel global}
  Form1: TForm1;
 a,b,c,d:integer;
  ra,rb,rc,rd,na,nb,nc,nd:integer;
 TEMPO: TDateTime;
implementation

{$R *.dfm}

{codigo do buttom1 jogo com senha travada}
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if (edit1.Text='')then
   a:=0
    else
     a:=StrToInt(edit1.Text);
      if (edit2.Text='')then
       b:=1
        else
       b:=StrToInt(edit2.Text);
      if (edit3.Text='')then
     c:=0
   else
  c:=StrToInt(edit3.Text);
 if (edit4.Text='')then
  d:=0
   else
    d:=StrToInt(edit4.Text);

{verifica se está certa a senha}
     if (a=5) then
      if (b=0) then
       if (c=7) then
       if (d=3) then

{Compara se a senha tem erro e da uma mensagem
Caso esteja se isso for verdadeiro }
         begin
       if messagedlg('Parabéns você acertou a combinação',mtinformation,[mbOK],0)=mrOK then
       end;
      if (a<>5) then
      begin
     if messagedlg('Erro na 1º combinação',mterror,[mbYes],0)=mrYes then
    end;
    if (b<>0) then
     begin
     if messagedlg('Erro na 2º combinação',mterror,[mbYes],0)=mrYes then
    end;
      if (c<>7) then
       begin
     if messagedlg('Erro na 3º combinação',mterror,[mbYes],0)=mrYes then
    end;
      if (d<>3) then
     begin
     if messagedlg('Erro na 4º combinação',mterror,[mbYes],0)=mrYes then
    end;

sábado, 21 de julho de 2012

CONTROLE PORTA PARALELA

Esta parte e que que faz a magica juntamente com as imagens abaixo.
E com isso já e possível montar um controle para dispositivo  usando a porta paralela..................





O codigo
unit inicio;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons;

type
  TForm2 = class(TForm)
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses auto, Contrelo_do_Robo, help, sobre;
procedure Escrever(endereco:integer;valor:byte); stdcall; external 'inpout32.dll' name 'Out32';
function Ler(endereco:integer):byte; stdcall; external 'inpout32.dll' name 'Inp32';
function BinToInt(Value: string): Integer;
var  
   i, iValueSize: Integer;
begin  
   Result := 0;  
iValueSize := Length(Value);  
for i := iValueSize downto 1 do    
  if Value[i] = '1' then
  Result := Result + (1 shl (iValueSize - i));
end;

{$R *.dfm}

procedure TForm2.SpeedButton6Click(Sender: TObject);
begin
close;
end;

procedure TForm2.SpeedButton1Click(Sender: TObject);
// vai para frente
var
   endereco:integer;
dados:byte;
begin
   endereco := StrToInt('$' + Trim('378'));
dados := BinToInt(Trim('1110'));
Escrever(endereco,dados);
end;


procedure TForm2.SpeedButton3Click(Sender: TObject);
// vai para tras
var
   endereco:integer;
dados:byte;
begin
   endereco := StrToInt('$' + Trim('378'));
dados := BinToInt(Trim('1101'));
Escrever(endereco,dados);
end;

procedure TForm2.SpeedButton5Click(Sender: TObject);
//vai para direita
var
   endereco:integer;
dados:byte;
begin
   endereco := StrToInt('$' + Trim('378'));
dados := BinToInt(Trim('1011'));
Escrever(endereco,dados);
end;

procedure TForm2.SpeedButton4Click(Sender: TObject);
//vai para esquerda
var
   endereco:integer;
dados:byte;
begin
   endereco := StrToInt('$' + Trim('378'));
dados := BinToInt(Trim('0111'));
Escrever(endereco,dados);
end;

procedure TForm2.SpeedButton2Click(Sender: TObject);
//para o robo
var
   endereco:integer;
dados:byte;
begin
   endereco := StrToInt('$' + Trim('378'));
dados := BinToInt(Trim('1111'));
Escrever(endereco,dados);
end;

end.


SEGUNDA PARTE DO CONTROLE PORTA PARALELA


Esta parte juntamente com a imagem formam a primeira parte........
var
  Form1: TForm1;

implementation

uses auto, help, inicio, sobre;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
wval:string;
begin
wval:=inputbox('Entrada','Digite seu nome:', '');
label1.Caption:=('Bem vindo   ' + wval + '  ao Controle de Robô');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
statusbar1.Panels.Items[1].text:='Hora : '+ timetostr(time());
statusbar1.Panels.Items[2].text:='Data : '+ datetostr(date());
end;

procedure TForm1.Sair1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Inicio1Click(Sender: TObject);
begin
form2.ShowModal;
end;

procedure TForm1.este1Click(Sender: TObject);
begin
form3.ShowModal;
end;

procedure TForm1.Help1Click(Sender: TObject);
begin
form4.ShowModal;
end;

procedure TForm1.Sobre1Click(Sender: TObject);
begin
form5.ShowModal;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
form2.ShowModal;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
form3.ShowModal;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
form4.ShowModal;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
form5.ShowModal;
end;

end.

quinta-feira, 5 de julho de 2012

CONTROLE PARA PORTA PARALELA FEITO EM DELPHI

Ola daremos inicio a um programa para controlar Leds ou qualquer coisa pela porta paralela.
A tela ficara parecida com esta....




domingo, 1 de julho de 2012

Adaptando uma saída de Áudio e Vídeo no Atari 2600



Bom este circuito funciona, mais por motivos de deixar o meu  Atari 2600   no estado original não deixei a adaptação nele mais nada impede de ser feita estas adaptações.
Deixa de conversa e vamos a o que interessa...


Cansando dos chuviscos quando você joga Atari ? 
Não aguenta mais aquela interferência ?
Sua TV não sintoniza direito ?
Não será por isso que você não vai jogar Atari. Adapte facilmente uma saída de vídeo composto e áudio no seu videogame, "modernizando-o" e deixando uma imagem com boa qualidade e livre de ruídos.


Existem alguns circuitos divulgados pela internet, mas são todos destinados ao console original americano e não funcionaram muito bem nos consoles brasileiros.


VANTAGENS:
- Imagem limpa e cristalina, sem chuviscos;
- Fácil de implementar;
- Não requer nenhum ajuste, é montar e usar;
- Se você quiser pode manter o RF;
- Possibilidade de usar monitores como o 1084 da commodore;
- Novo ânimo para jogar Atari !!!


DESVANTAGENS:
- Videogame terá que ser "destranscodificado", virará NTSC;
- Precisará de 2 cabos para ligar a TV ao invés de 1.
- Você sentirá saudades do charme das interferências e ruídos. :-))


Bom então mãos a obra.



LISTA DE PEÇAS
:

- 1 videogame Atari da Polyvox
- 1 resistor de 150 ohms x 1/8 watt
- 1 resistor de 470 ohms x 1/8 watt
- 2 resistores de 1K8 ohms x 1/8 watt
- 1 capacitor eletrolítico de 1 uF x 25 (ou mais) volts
- 1 cristal oscilador de 3,579545 MHz (cristal NTSC)
- fios, cabos, plugs RCA, conforme a preferência
- ferro de soldar (max. 30W) e solda fina (40/60 ou 37/63)
- chave de fenda, chave philips, alicates.


IMPORTANTE: o circuito, teoricamente, funciona em qualquer modelo de Atari. Porém ele somente foi testado e implementado no Atari 2600 da Polyvox. Os outros modelos nacionais ainda não foi testado portanto não sei se dará certo.




MONTANDO:
Primeiro passo é desmontar o Atari. Remova os 4 parafusos da parte inferior, solte a placa de circuito impresso com cuidado; desplugue o cabo de RF do modulador para a placa ficar livre. Guarde os parafusos e a caixa plástica do videogame com cuidado para depois remontarmos.
Agora com a placa "solta" remova com cuidado a blindagem metálica que envolve a placa. Para tal destorça as lingüetas metálicas que fixam a blindagem. Estas lingüetas estão nas extremidades da placa. Use um alicate de bico e seja cuidadoso para não danificar nenhuma. Remova as duas metades da blindagem e reserve num local à parte.
Temos então a placa do Atari completamente aberta.
No centro temos o conector do cartucho; um pouco abaixo a plaquinha adaptadora para PAL-M; e os três Circuitos Integrados do videogame: o 6507 (o processador), à esquerda, o 6532 (o RIOT) ao centro e o 6526 (o Stella) à direita. Este último que nos interessa. Ele pode vir com vários códigos diferentes: UM 6526, 10444, KS<alguma coisa> não importa, o fato é que o CI no qual retiraremos o sinal é esse, à direita.
A primeira providência é remover a placa adaptadora PAL-M e trocar o cristal. Para remover a plaquinha simplesmente desolde nos pontos de fixação e puxe-a para fora. Alguns modelos do Atari da Polyvox, os primeiros, tem a placa "solta", ligada com fios na placa principal. Neste caso dessolde os fios e descole a plaquinha, removendo-a. Guarde ela, nunca se sabe... :-D








Depois localize o cristal oscilador. Ele fica a direita do chip 6526. Simplesmente dessolde-o e coloque o cristal novo (o de 3,579545 MHz). 



Prontinho, seu Atari agora é uma unidade que opera em NTSC !!!
Partamos, então, para a extração dos sinais A/V em si.
Separe os resistores. Para identificar os valores, para quem não sabe o código de cores, eis as cores dos resistores usados no nosso projeto: 





Pegue os dois resistores de 1K8 e solde-os em paralelo ("perna com perna").
O capacitor eletrolítico pode vir em 2 modelos: radial, com ambas as "pernas" de um lado só, caso em que a menor é o negativo, ou axial, que uma "perna" é em cada lado do capacitor. Em ambos os casos há uma inscrição no rótulo do componente indicando a polaridade do mesmo. Isso é importante, atenção nesse ponto.
Uma vez reconhecidos os componentes, vamos as ligações na placa.
O Circuito Integrado que nos interessa é o 6526, conhecido como o chip Stella. Esse chip é o responsável pela geração dos sinais de áudio e vídeo, além de conter os conversores A/D que são usados nos controles paddles. É, portanto, dele que extrairemos os tão desejados sinais de vídeo composto e áudio.
Este componente é o chip mais à direita da placa, olhando-a com as chaves para cima. Ele pode ter vários códigos esquisitos, mas é o chip mais à direita da placa (lembre-se: isso é válido SOMENTE para os consoles Polyvox).
Localizado o chip, será necessário agora a ligação dos resistores e do capacitor em alguns pinos deste circuito integrado. Você pode soldar diretamente na parte de cima da placa ou se preferir soldar na parte de baixo da placa (lado cobreado). Neste caso apenas tome cuidado para não confundir os pinos.
Confira abaixo, então, quais pinos serão usados:

Faça a ligação dos componentes conforme o esquema abaixo: 

Existe uma ligação que não será feita no chip e sim na junção dos resistores R44 com o capacitor C42. Esse ponto de ligação fica logo abaixo do CI 6532, perto de onde estava o conversor PAL-M. Confira na foto: 



Solde tudo com cuidado e isole com fita isolante. O ponto de terra (negativo) você pode pegar soldando um fio na caixa metálica do modulador de vídeo ou mesmo por baixo da placa. Solde um cabo nas saídas A/V e ligue um plug RCA fêmea ou deixe um cabo mais longo e solde plugs RCA macho. Isso fica conforme a preferência de cada um.
Antes de remontar o videogame ligue as saídas recem-implementadas na TV, vídeo ou monitor e faça um teste. Não esqueça que agora o seu Atari é NTSC e portanto o terminal de vídeo deve suportar esse sistema de cor. A totalidade das TVs hoje em dia suportam sem problemas.
Comprovado o funcionamento, termine de isolar tudo, recoloque a blindagem metálica do console, passe os fios de ligação do A/V pelo furo do cabo de RF, tape o console e recoloque os parafusos.
Leve seu console pra sala, ligue na sua TV nova e chame a galera para horas de diversão com o Atari, desta vez sem interferências !!! :-))
Veja uma foto do Atari adaptado para A/V ligado numa TV, via A/V claro, Canal 3:
  








MODULO DE PAUSA



package calculadora;

import java.io.BufferedReader;
import java.io.InputStreamReader;


public class Pausa extends Calculadora {
    public static void Pausa(){
        byte enter;
        System.out.println();
        System.out.println("Tecle enter para voltar ao Menu");
         try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
           enter = Byte.parseByte(br.readLine());
        } catch (Exception e) {
            enter = 0;
        }
    }

}

E com estes ultimo modulo terminamos a nossa calculadora.....................

MODULO DE DIVISÂO


package calculadora;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

public class Divi extends Calculadora {

    public static void Divi() {
        double r, a, b;
        DecimalFormat df = new DecimalFormat();
        System.out.println();
        System.out.println();
        System.out.println("Rotina de Divisão");
        System.out.println("----------------");
        System.out.println();
        System.out.println("Entre com o valor de A");
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            a = Double.parseDouble(br.readLine());
        } catch (Exception e) {
            a = 0;
        }
        System.out.println("Entre com o valor de B");
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            b = Double.parseDouble(br.readLine());
        } catch (Exception e) {
            b = 0;
        }
        if (b == 0) {
            System.out.println("Não e possivel fazer divisão por 0 !");
        } else {
            r = a / b;
            System.out.println();
            df.applyPattern("0.00");
            System.out.println("O resultado e A / B = " + df.format(r));
         
        }
         Pausa.Pausa();

    }
}

MODULO DE MULTIPLICAÇÂO


package calculadora;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

public class Multipli extends Calculadora {

    public static void Multipli() {
        double r, a, b;
        DecimalFormat df = new DecimalFormat();
        System.out.println();
        System.out.println();
        System.out.println("Rotina de Multiplicação");
        System.out.println("----------------");
        System.out.println();
        System.out.println("Entre com o valor de A");
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            a = Double.parseDouble(br.readLine());
        } catch (Exception e) {
            a = 0;
        }
        System.out.println("Entre com o valor de B");
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            b = Double.parseDouble(br.readLine());
        } catch (Exception e) {
            b = 0;
        }
        r = a * b;
        System.out.println();
        df.applyPattern("0.00");
        System.out.println("O resultado e A * B = " + df.format(r));
        Pausa.Pausa();


    }
}

MODULO DE SUBTRAÇÂO


package calculadora;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DecimalFormat;


public class Subtracao extends Calculadora{
    public static void Subtracao(){
         double r, a, b;
        DecimalFormat df = new DecimalFormat();
        System.out.println();
        System.out.println();
        System.out.println("Rotina de Subtração");
        System.out.println("----------------");
        System.out.println();
        System.out.println("Entre com o valor de A");
         try {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                a = Double.parseDouble(br.readLine());
            }
         catch (Exception e) {
                a = 0;
            }
        System.out.println("Entre com o valor de B");
        try {
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                b = Double.parseDouble(br.readLine());
            }
         catch (Exception e) {
                b = 0;
            }
        r = a-b;
        System.out.println();
        df.applyPattern("0.00");
        System.out.println("O resultado e A - B = "+df.format(r));
        Pausa.Pausa();


}
}

MODULO DE ADIÇÂO


package calculadora;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

public class Adicao extends Calculadora {

    public static void Adicao() {
        double r, a, b;
        DecimalFormat df = new DecimalFormat();
        System.out.println();
        System.out.println();
        System.out.println("Rotina de Adição");
        System.out.println("----------------");
        System.out.println();
        System.out.println("Entre com o valor de A");
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            a = Double.parseDouble(br.readLine());
        } catch (Exception e) {
            a = 0;
        }
        System.out.println("Entre com o valor de B");
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            b = Double.parseDouble(br.readLine());
        } catch (Exception e) {
            b = 0;
        }
        r = a + b;
        System.out.println();
        df.applyPattern("0.00");
        System.out.println("O resultado e A + B = " + df.format(r));
        Pausa.Pausa();

    }
}