Tipke za start in pavzo igre. Pomoč.

Vse kar se tiče programiranja iger.
Odgovori
Neox
Prispevkov: 8
Pridružen: 14.05.2009 12:13:05

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a Neox » 02.06.2009 15:03:06

Nekateri v tej temi so že pisali za pomoč pri igri, ki jo imamo v šoli. Tudi jaz potrebujem pomoč. Pisal sem že v prejšnjo temo ampak ni noben odpisal.

Zanima kako narediti tipko za start in pavzo igre...

Recimo če bi naredil button in odprl proceduro, kaj naj vanjo napišem.

Že vnaprej hvala. (:

Koda: Izberi vse

unit premik;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, ComCtrls, MPlayer;

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    ProgressBar1: TProgressBar;
    procedure PaintBox1Paint(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormActivate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x,Y_ball,X_ball,Score:integer;
implementation

{$R *.DFM}

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
     with PaintBox1.Canvas do
     begin
          Pen.Color:=clRed;
          Pen.Width:=4;
          MoveTo(PaintBox1.width div 2, PaintBox1.height-20);
          LineTo(PaintBox1.width div 2+20, PaintBox1.height-20);
     end;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
     with PaintBox1.Canvas do
     begin
          if Key='6' then
          begin
               if x< PaintBox1.Width-20 then x:=x+12;
               Pen.Color:=clRed;
               MoveTo(x, PaintBox1.height-20);
               LineTo(x+20, PaintBox1.height-20);
               Pen.Color:=clWhite;
               MoveTo(x-12, PaintBox1.height-20);
               LineTo(x, PaintBox1.height-20);
          end;
          if Key='4' then
          begin
               if x> 5 then x:=x-12;
               Pen.Color:=clRed;
               Pen.Width:=4;
               MoveTo(x, PaintBox1.height-20);
               LineTo(x+20, PaintBox1.height-20);
               Pen.Color:=clWhite;
               MoveTo(x+25, PaintBox1.height-20);
               LineTo(x+50, PaintBox1.height-20);
          end;
     end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
     x:=PaintBox1.width div 2;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     PaintBox1.Canvas.TextOut(X_ball,Y_ball,'   ');
     if Y_ball=PaintBox1.Height-20 then
     begin
           if (X_ball>x-20)and(X_ball<x+20) then
           begin
                Score:=Score +5;
                Label2.Caption:=InttoStr(Score);
           end
           else begin
                     if ProgressBar1.Position<10 then Form1.Close
                     else ProgressBar1.Position:=  ProgressBar1.Position -11;
                     Beep;
           end;
          Y_ball:=0;
          X_ball:=Random(PaintBox1.width);
     end
     else  Y_ball:=Y_ball+10;

     PaintBox1.Canvas.TextOut(X_ball,Y_ball,'O');
end;
end.  
Zadnjič spremenil Neox, dne 02.06.2009 15:05:12, skupaj popravljeno 1 krat.

GJ
Prispevkov: 1078
Pridružen: 13.03.2004 12:34:48

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a GJ » 02.06.2009 15:22:32

Zanima kako narediti tipko za start in pavzo igre...

Recimo če bi naredil button in odprl proceduro, kaj naj vanjo napišem.
Deklariraš public variablo:

Koda: Izberi vse

 
var
  Pause: boolean = false;
 
Po pa v OnButtonClick izvedeš...

Koda: Izberi vse

 
  Pause := not Pause;
 
V timerju oziroma tam kjer se program izvaja pa čekiraš Pause in ukrepaš!

LP GJ
Kdor se zadnji smeje, se smeje zadnji!

G16
Prispevkov: 462
Pridružen: 11.02.2005 21:54:48

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a G16 » 02.06.2009 16:19:07

Kaj spremenjivki lahko določiš začetno vrednost? Tega pa do zdaj nisem vedel Slika.
Joj, pa sem ves čas pod form create nastavljal tiste vrednosti.
Sem mislil da lahko to narediš samo z konstantami.
Napisal G16 (nekdanji G11,G14,G15°) Uporabljam: Delphi7 Ent.
http://delphi4u.awardspace.com/
Čas teče naprej...

GJ
Prispevkov: 1078
Pridružen: 13.03.2004 12:34:48

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a GJ » 02.06.2009 16:38:53

Kaj spremenjivki lahko določiš začetno vrednost? Tega pa do zdaj nisem vedel Slika.
Joj, pa sem ves čas pod form create nastavljal tiste vrednosti.
Sem mislil da lahko to narediš samo z konstantami.
Odvisno kje je deklarirana!
Če je deklarirana znotraj classa potem ne moreš in je po default-u 0.
Če pa je definirana znotraj procedure potem to ne gre in je njena začetna vrednost poljubna pač tisto kar je ostalo na stacku!

LP GJ
Kdor se zadnji smeje, se smeje zadnji!

Neox
Prispevkov: 8
Pridružen: 14.05.2009 12:13:05

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a Neox » 03.06.2009 18:45:21

Zanima kako narediti tipko za start in pavzo igre...

Recimo če bi naredil button in odprl proceduro, kaj naj vanjo napišem.
Deklariraš public variablo:

Koda: Izberi vse

 
var
  Pause: boolean = false;
 
Po pa v OnButtonClick izvedeš...

Koda: Izberi vse

 
  Pause := not Pause;
 
V timerju oziroma tam kjer se program izvaja pa čekiraš Pause in ukrepaš!

LP GJ


Najlepša hvala, bom sprobal a za start isto vela ? :P:D

Neox
Prispevkov: 8
Pridružen: 14.05.2009 12:13:05

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a Neox » 03.06.2009 18:52:17

Sem neki probavu pa mi ni glih ratal... :D a bi mi lahk bol natančn prosm povedu, kaj točn morm napisat? (sm še nov pri delphiju) Hvala.

Neox
Prispevkov: 8
Pridružen: 14.05.2009 12:13:05

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a Neox » 04.06.2009 22:16:45

Kle sm napisu v glavno var

Koda: Izberi vse

var
  Form1: TForm1;
  x,Y_ball,X_ball,Score:integer;
  Pause: boolean = false;
Potem sm pa naredu nov button in napisal tole

Koda: Izberi vse

procedure TForm1.Button1Click(Sender: TObject);
begin
Pause := not Pause;
end;

end.
Pa sm probu pa ni delal, kaj sm naredu narobe ? Hvala

GJ
Prispevkov: 1078
Pridružen: 13.03.2004 12:34:48

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a GJ » 04.06.2009 22:43:04

Zaenkrat je vse uredu.. ;)
Sedaj pa moraš le še preverjati stanje variable Pause tam kjer je to potrebno...
Recimo takole...

Koda: Izberi vse

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Pause then
    exit;
...
LP GJ
Zadnjič spremenil GJ, dne 04.06.2009 22:44:01, skupaj popravljeno 1 krat.
Kdor se zadnji smeje, se smeje zadnji!

Neox
Prispevkov: 8
Pridružen: 14.05.2009 12:13:05

Tipke za start in pavzo igre. Pomoč.

Odgovor Napisal/-a Neox » 05.06.2009 13:26:11

Zaenkrat je vse uredu.. ;)
Sedaj pa moraš le še preverjati stanje variable Pause tam kjer je to potrebno...
Recimo takole...

Koda: Izberi vse

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Pause then
    exit;
...
LP GJ


Dela! Najlepša hvala. (:

Odgovori