Advertisement
auladecomputacao

Genis_Lazarus

Oct 18th, 2018
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.31 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  9.   StdCtrls, CRT;
  10.  
  11. type
  12.  
  13.   { TfrmPrincipal }
  14.  
  15.   TfrmPrincipal = class(TForm)
  16.     Button1: TButton;
  17.     Image1: TImage;
  18.     btnVerde: TPanel;
  19.     btnAmarelo: TPanel;
  20.     btnVermelho: TPanel;
  21.     btnAzul: TPanel;
  22.     lblfase2: TLabel;
  23.     lblVel: TLabel;
  24.     lblFase: TLabel;
  25.     lblVelocidade: TLabel;
  26.     procedure btnAmareloClick(Sender: TObject);
  27.     procedure btnAzulClick(Sender: TObject);
  28.     procedure btnVerdeClick(Sender: TObject);
  29.     procedure btnVermelhoClick(Sender: TObject);
  30.     procedure Button1Click(Sender: TObject);
  31.     procedure FormShow(Sender: TObject);
  32.     procedure Timer1Timer(Sender: TObject);
  33.     procedure geranum();
  34.     procedure liga();
  35.     procedure muda(var n,t:integer);
  36.     procedure comumbotoes();
  37.     function verifica():  boolean;
  38.   private
  39.  
  40.   public
  41.  
  42.   end;
  43.  
  44. var
  45.   frmPrincipal: TfrmPrincipal;
  46.   seq : array[1..6 , 1..6] of integer;
  47.   i : integer;
  48.   vel : integer;//velocidade
  49.   fase: integer;
  50.   contador :integer;
  51.   tempo: integer;
  52.   sequencia :integer;
  53.   usuario : array[1..6] of integer;
  54.  
  55. implementation
  56.  
  57. {$R *.lfm}
  58.  
  59. { TfrmPrincipal }
  60.  
  61. function TfrmPrincipal.verifica():  boolean;
  62. var
  63.   c,l,s : integer;
  64. begin
  65.   s := 0;
  66.   l:= fase;
  67.  
  68.   for c:=0 to contador do
  69.   begin
  70.     if (seq[l][c] <> usuario[c]) then
  71.     begin
  72.         s := 1;
  73.         result := FALSE;
  74.         break;
  75.     end;
  76.   end;
  77.  
  78.   if (s = 0) then
  79.   begin
  80.      result := TRUE;
  81.   end;
  82. end;
  83.  
  84. procedure TfrmPrincipal.comumbotoes();
  85. begin
  86.     if (sequencia = contador) then
  87.   begin
  88.       if (verifica()) then
  89.       begin
  90.           contador+=1;
  91.  
  92.           if (contador mod 6 =0) then
  93.           begin
  94.               sound(5000);
  95.               delay(2000);
  96.               nosound;
  97.  
  98.               ShowMessage ( 'Parabéns! Nova fase!' ) ;
  99.  
  100.               fase+=1;
  101.               vel+=1;
  102.               tempo-=100;
  103.  
  104.               if (tempo < 100) then
  105.               begin
  106.                   tempo := 500;
  107.                   fase := 0;
  108.               end;
  109.               contador := 0;
  110.               sequencia := 0;
  111.               liga;
  112.           end
  113.           else
  114.           begin
  115.              sequencia := 0;
  116.              ShowMessage ( 'Você acertou' ) ;
  117.              liga;
  118.           end;
  119.       end
  120.       else
  121.       begin
  122.         sequencia := 0;
  123.         ShowMessage ( 'Você errou' ) ;
  124.         liga;
  125.       end;
  126.   end
  127.   else
  128.   begin
  129.      sequencia+=1;
  130.   end;
  131.  
  132. end;
  133.  
  134. procedure TfrmPrincipal.muda(var n,t:integer);
  135. begin
  136.   Case n Of
  137.        0: begin
  138.            btnAmarelo.color := clYellow; //amarelo aceso
  139.  
  140.            btnAzul.Color:= $00623100;  //azul apagado
  141.            btnVermelho.Color:= $00000084; //vermelho apagado
  142.            btnVerde.Color:= $00007500; //verde apagado
  143.  
  144.            repaint;
  145.            sound(3000); // Quanto maior, mais agudo
  146.            delay(t);
  147.            nosound;
  148.        end;
  149.        1:
  150.        begin
  151.            btnAzul.Color:= $00FF972F;  //azul aceso
  152.  
  153.            btnVermelho.Color:= $00000084; //vermelho apagado
  154.            btnVerde.Color:= $00007500; //verde apagado
  155.            btnAmarelo.color := $0000C6C6; //amarelo apagado
  156.  
  157.            repaint;
  158.            sound(2500); // Quanto maior, mais agudo
  159.            delay(t);
  160.            nosound;
  161.        end;
  162.        2:
  163.        begin
  164.            btnVermelho.Color:= clRed; //vermelho aceso
  165.  
  166.            btnVerde.Color:= $00007500; //verde apagado
  167.            btnAmarelo.color := $0000C6C6; //amarelo apagado
  168.            btnAzul.Color:= $00623100;  //azul apagado
  169.  
  170.            repaint;
  171.            sound(2000); // Quanto maior, mais agudo
  172.            delay(t);
  173.            nosound;
  174.        end;
  175.        3:
  176.        begin
  177.            btnVerde.Color:= $0000F000; //aceso
  178.  
  179.            btnAmarelo.color := $0000C6C6; //amarelo apagado
  180.            btnAzul.Color:= $00623100;  //azul apagado
  181.            btnVermelho.Color:= $00000084; //vermelho apagado
  182.  
  183.            repaint;
  184.            sound(1500); // Quanto maior, mais agudo
  185.            delay(t);
  186.            nosound;
  187.        end;
  188.       End;
  189. end;
  190.  
  191. procedure TfrmPrincipal.liga();
  192. var
  193.   j : integer;
  194. begin
  195.   for j:=0 to contador do
  196.   begin
  197.     muda(seq[fase][j], tempo);
  198.   end;
  199.  
  200.   btnAmarelo.color := $0000C6C6; //amarelo apagado
  201.   btnAzul.Color:= $00623100;  //azul apagado
  202.   btnVermelho.Color:= $00000084; //vermelho apagado
  203.   btnVerde.Color:= $00007500; //verde apagado
  204.  
  205.  
  206.   lblFase.Caption:=inttostr(fase);
  207.   lblVel.Caption:=inttostr(vel);
  208. end;
  209.  
  210. procedure TfrmPrincipal.geranum();
  211. var
  212.   lin, col : integer;
  213.   num : integer;
  214. begin
  215.   Randomize;
  216.  
  217. (*  lblFase2.Caption := '';*)
  218. (*  lblFase.Caption := '';*)
  219.  
  220.  
  221.   for lin := 0 to 4 do
  222.   begin
  223.     for col := 0 to 4 do
  224.     begin
  225.        num := Random(4);
  226.        (* lblFa.Caption:=lblFa.Caption + inttostr(num);*)
  227.        while (num=seq[lin][col-1]) do
  228.        begin
  229.           num := Random(4);
  230. (*          lblFase.Caption:=lblFase.Caption + inttostr(num);*)
  231.        end;
  232.        seq[lin][col] := num;
  233.      end;
  234.    end;
  235. end;
  236.  
  237. procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
  238. begin
  239.  
  240. end;
  241.  
  242. procedure TfrmPrincipal.FormShow(Sender: TObject);
  243. begin
  244.   i:=0;
  245.   fase:=0;
  246.   vel:=0;
  247.   geranum();
  248.   contador:=0;
  249.   tempo:=500;
  250.   sequencia:=0;
  251.  
  252. end;
  253.  
  254. procedure TfrmPrincipal.Button1Click(Sender: TObject);
  255. begin
  256.     contador :=0;
  257.     sequencia :=0;
  258.     liga();
  259. end;
  260.  
  261. procedure TfrmPrincipal.btnAmareloClick(Sender: TObject);
  262. begin
  263.   btnAmarelo.color := clYellow; //amarelo aceso
  264.  
  265.   repaint;
  266.   sound(3000); // Quanto maior, mais agudo
  267.   delay(500);
  268.   nosound;
  269.  
  270.   btnAmarelo.color :=  $0000C6C6; //amarelo apagado
  271.  
  272.   usuario[contador] := 0;
  273.  
  274.   comumbotoes();
  275. end;
  276.  
  277. procedure TfrmPrincipal.btnAzulClick(Sender: TObject);
  278. begin
  279.   btnAzul.color := $00FF972F; //azul aceso
  280.   repaint;
  281.   sound(2500);
  282.   delay(500);
  283.   nosound;
  284.   btnAzul.color :=  $00623100; //azul apagado
  285.  
  286.   usuario[contador] := 1;
  287.  
  288.   if (sequencia = contador) then
  289.   begin
  290.       if (verifica()) then
  291.       begin
  292.           contador+=1;
  293.  
  294.           if (contador mod 6 =0) then
  295.           begin
  296.               ShowMessage ( 'Nova fase!' ) ;
  297.               sound(1500);
  298.               delay(3000);
  299.  
  300.               fase+=1;
  301.               vel+=1;
  302.               tempo-=100;
  303.  
  304.               if (tempo < 100) then
  305.               begin
  306.                   tempo := 500;
  307.                   fase := 0;
  308.               end;
  309.               contador := 0;
  310.           end;
  311.  
  312.           sequencia := 0;
  313.           ShowMessage ( 'Você acertou' ) ;
  314.           liga;
  315.       end
  316.       else
  317.       begin
  318.         sequencia := 0;
  319.         ShowMessage ( 'Você errou' ) ;
  320.         liga;
  321.       end;
  322.   end
  323.   else
  324.   begin
  325.      sequencia+=1;
  326.   end;
  327. end;
  328.  
  329. procedure TfrmPrincipal.btnVerdeClick(Sender: TObject);
  330. begin
  331.   btnVerde.color := $0000F000; //verde aceso
  332.   repaint;
  333.   sound(1500);
  334.   delay(500);
  335.   nosound;
  336.   btnVerde.color :=  $00007500; //verde apagado
  337.  
  338.   usuario[contador] := 3;
  339.  
  340.   comumbotoes();
  341.  
  342. end;
  343.  
  344. procedure TfrmPrincipal.btnVermelhoClick(Sender: TObject);
  345. begin
  346.   btnVermelho.color := clRed; //vermelho aceso
  347.   repaint;
  348.   sound(2000);
  349.   delay(500);
  350.   nosound;
  351.   btnVermelho.color :=  $00000084; //vermelho apagado
  352.  
  353.   usuario[contador] := 2;
  354.  
  355.   comumbotoes();
  356. end;
  357.  
  358. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement