Problem pri igri

Vse kar se tiče programiranja iger.
SubZero
Prispevkov: 1
Pridružen: 28.05.2009 12:14:42

Problem pri igri

Odgovor Napisal/-a SubZero » 28.05.2009 12:32:40

Zanima me kako narediš v Delphiju, da ko porabiš vsa 3 življenja v igri da ti v novem oknu izpiše rezultat.

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.  

Miha-R
Prispevkov: 2155
Pridružen: 14.05.2001 21:29:53

Problem pri igri

Odgovor Napisal/-a Miha-R » 28.05.2009 13:08:43

ShowMessage('KONEC IGRE') ali ShowMessageFmt('Rezultat: %d', [Tocke])
Vedno sem želel napisati prav tak odgovor.

vili93
Prispevkov: 5
Pridružen: 27.05.2009 16:27:30

Problem pri igri

Odgovor Napisal/-a vili93 » 28.05.2009 13:36:53

Tko mora narediti da na koncu ko izgubis 3 zivlenja da se ti odpre okno in da v njem pise dosežen rezultat

vili93
Prispevkov: 5
Pridružen: 27.05.2009 16:27:30

Problem pri igri

Odgovor Napisal/-a vili93 » 28.05.2009 13:57:09

Miha-R deluje ampak še nekaj ko se pojavi zdaj to , se pokaže rezultat in tipka OK in se da ko klikneš OK da bi se ugasnila igra ??

Huligan
Prispevkov: 475
Pridružen: 19.11.2001 10:02:31

Problem pri igri

Odgovor Napisal/-a Huligan » 28.05.2009 15:05:30

Miha-R deluje ampak še nekaj ko se pojavi zdaj to , se pokaže rezultat in tipka OK in se da ko klikneš OK da bi se ugasnila igra ??
Probaj raje z MessageDlg v tem stilu:

Koda: Izberi vse

if MessageDlg('Dosegli ste xxx tock. Zelite nadaljevati?',  mtConfirmation, [mbYes, mbNo], 0) = mrNo then //dobis 2 gumba(Yes, No)
  Close; //zapri aplikacijo
  
Pa ker vidim, da si zacetnik: magicna tipka je F1 (Help).

vili93
Prispevkov: 5
Pridružen: 27.05.2009 16:27:30

Problem pri igri

Odgovor Napisal/-a vili93 » 28.05.2009 15:43:22

Res je šele začetnik sem !

Zdaj imam takole
if ProgressBar1.Position<10 then ShowMessageFmt('Rezultat: %d', [Score])
else ProgressBar1.Position:= ProgressBar1.Position -11;
Beep;

In zdaj bi rad ko se na koncu pojavi Rezultat in tipka OK bi rad zdaj ko pritisneš OK da se izklopi Igra ! Prosim pomoč

Hvala

vili93
Prispevkov: 5
Pridružen: 27.05.2009 16:27:30

Problem pri igri

Odgovor Napisal/-a vili93 » 30.05.2009 10:13:57

Plisssssss :(:(

Uporabniški avatar
Lipe
Prispevkov: 232
Pridružen: 12.10.2005 11:31:25
Kraj: Kranj

Problem pri igri

Odgovor Napisal/-a Lipe » 30.05.2009 10:51:02

ko pritisneš OK da se izklopi Igra
Ja, pač po klicu ShowMessage na en način zapreš program, na primer:

Koda: Izberi vse

 
if ProgressBar1.Position<10 then
begin
  ShowMessageFmt('Rezultat: %d', [Score]);
  Application.Terminate; // ali Self.Close ali karkoli že
end
else
  ProgressBar1.Position:= ProgressBar1.Position -11;
Nič ni nič, pa tudi nekaj ni bogve kaj.

vili93
Prispevkov: 5
Pridružen: 27.05.2009 16:27:30

Problem pri igri

Odgovor Napisal/-a vili93 » 30.05.2009 12:21:09

Deluje Hvala!:)


Hvala :)

Lp

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

Problem pri igri

Odgovor Napisal/-a Neox » 01.06.2009 13:41:37

Mene pa zanima kako narediti gumb za začetek in pavzo igre. Koda je enaka.

Hvala
Zadnjič spremenil Neox, dne 01.06.2009 13:42:09, skupaj popravljeno 1 krat.

Odgovori