Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Basketball Freiwurf (https://www.delphipraxis.net/130825-basketball-freiwurf.html)

OmahaHawk 13. Mär 2009 20:22


Basketball Freiwurf
 
Hi Delphi-Pros und alle anderen ! :mrgreen:

ich bin gerade dabei für die Schule ein Basketball Freiwurf spiel zu programmieren :zwinker:
ich habe so weit alles fertig doch mir fehlen noch 2 eintscheidende sachen :wall:
ich hoffe ihr könnt mir helfen
Die 1. Sache:

ich habe bei diesem Spiel mehrere Level dabei werden die punkte angezeigt
doch ich will das wenn ich z.B. bei Level 1 einen punkt erziehle, beim 2 Level keinen punkte und beim 3 level wieder ein punkte.
das dann die gesamt punktzahl angezeigt wird (hab ihr es verstanden) :P

Die 2. Sache:

Ich will es so hinbekommen das es pro level maximal 3 Würfe gibt


Der bisherige Quelltext
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, jpeg, ExtCtrls, mmsystem;

type
  TForm2 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Shape1: TShape;
    Timer1: TTimer;
    Label9: TLabel;
    Label10: TLabel;
    Button4: TButton;
    Image2: TImage;
    Label7: TLabel;
    Label8: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure ScrollBar1Change(Sender: TObject);
    procedure ScrollBar2Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  xo,yo : integer;
  t : real;
  punkte : integer;

implementation

uses Unit1, Unit3;

{$R *.DFM}

procedure TForm2.Timer1Timer(Sender: TObject);
begin
scrollbar1.enabled := false;
scrollbar2.enabled := false;
t := t + 0.1;
shape1.Left := round(xo+t*scrollbar2.position*cos(scrollbar1.position*pi/180)) ;
shape1.top := round(yo-t*scrollbar2.position*sin(scrollbar1.position*pi/180)+9.81/2*t*t);


if shape1.Top >= 600 then begin timer1.enabled := false;
                                scrollbar1.enabled := true;
                                scrollbar2.enabled := true;
                                label10.visible := true;
                           end;
if (shape1.left > 734) and (shape1.left < 770) then
if (shape1.top > 51) and (shape1.top < 68 ) then
begin
timer1.enabled := false;
scrollbar1.enabled := true;
scrollbar2.enabled := true;
label9.visible := true;
punkte := punkte + 1;
label8.Caption := inttostr(punkte);
end;
end;

procedure TForm2.ScrollBar1Change(Sender: TObject);
begin
label3.Caption := inttostr (scrollbar1.position);
end;

procedure TForm2.ScrollBar2Change(Sender: TObject);
begin
label4.caption := inttostr(scrollbar2.position);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
scrollbar1.enabled := false;
scrollbar2.enabled := false;
xo := shape1.left;
yo := shape1.top;
t := 0;
timer1.enabled := true;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
scrollbar1.enabled := true;
scrollbar2.enabled := true;
shape1.left := 448;
shape1.top := 248;
t := 0;
label9.Visible := false;
label10.Visible := false;

timer1.enabled := false;
end;

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

procedure TForm2.Button4Click(Sender: TObject);
begin
form3.show;
form2.close;
end;

procedure TForm2.FormActivate(Sender: TObject);
begin
label9.Visible := false;
label10.Visible := false;
 sndPlaySound('sirius.wav', SND_ASYNC);
end;

end.
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

DeddyH 13. Mär 2009 20:36

Re: Basketball Freiwurf
 
Hallo und Willkommen in der DP :dp:,

beides wäre mit globalen Zählern zu erreichen. Das können globale Variablen sein (werden gern genommen, sind aber nur in speziellen Fällen die bessere Wahl) oder private Felder (damit würde ich das machen). Das könnte beispielsweise so aussehen:
Delphi-Quellcode:
type TDeinForm = class(TForm)
...
private
  FLevel,
  FGesamt,
  FWurf: integer;
  procedure NeuesLevel;
  procedure Punkte(iPunkte: integer);
...
end;

...

procedure TDeinForm.NeuesLevel;
begin
  //Level hochzählen
  FLevel := FLevel + 1;
  //Wurfvariable zurücksetzen
  FWurf := 0;
end;

procedure TDeinForm.Punkte(iPunkte: integer);
begin
  //Gesamtpunkte aufaddieren
  FGesamt := FGesamt + iPunkte;
end;

OmahaHawk 13. Mär 2009 21:50

Re: Basketball Freiwurf
 
Zitat:

Zitat von DeddyH

procedure TDeinForm.NeuesLevel;
begin
//Level hochzählen
FLevel := FLevel + 1;
//Wurfvariable zurücksetzen
FWurf := 0;
end;

rocedure TDeinForm.Punkte(iPunkte: integer);
begin
//Gesamtpunkte aufaddieren
FGesamt := FGesamt + iPunkte;
end;[/delphi]

procedure TDeinForm.NeuesLevel;
rocedure TDeinForm.Punkte(iPunkte: integer);

Sind das button oder label oder was sind das ?? :wiejetzt:

muss ich noch was bei den variablen (var) einfügen ?

DeddyH 13. Mär 2009 21:52

Re: Basketball Freiwurf
 
Das sind selbstdefinierte Methoden.

OmahaHawk 13. Mär 2009 21:55

Re: Basketball Freiwurf
 
wo muss ich den dann doppelt drauf klicken

den wenn ich auch button klicke kommt das hier
procedure TForm2.Button1Click(Sender: TObject);


wo muss ich den bei deinen drauf drücken ?

DeddyH 13. Mär 2009 22:02

Re: Basketball Freiwurf
 
Das ist da nicht ganz so bequem wie bei Komponenten, sondern muss von Hand geschrieben werden. In aktuellen Delphi-Versionen genügt es allerdings, die Definitionen zu tippen und anschließend STRG-UMSCHALT-C zu drücken, die Implementation wird dann einfach von Delphi eingefügt und muss nur noch mit Code gefüllt werden.

OmahaHawk 13. Mär 2009 22:04

Re: Basketball Freiwurf
 
ehrlich gesagt ich muss in der schule delphi 5 benutzeb

gibt es keine möglichkeit das auch mit delphi 5 zu programmieren ?

DeddyH 13. Mär 2009 22:06

Re: Basketball Freiwurf
 
Klar, die beschriebene Funktionalität ist ja nur eine Erleichterung für "faule Säcke" wie mich. Die logische Umsetzung wie in meinem ersten Post funktioniert auch unter Delphi 5.

OmahaHawk 13. Mär 2009 22:07

Re: Basketball Freiwurf
 
dan werde ich das mal versuchen :mrgreen: (wird aber é nicht klappen)

kannst du das nicht machen :angel:

DeddyH 13. Mär 2009 22:24

Re: Basketball Freiwurf
 
Liste der Anhänge anzeigen (Anzahl: 1)
Schau mal in den Anhang, das habe ich wie oben beschrieben umgesetzt.

[edit] Sry, habe den Quellcode vergessen (komplette Unit):
Delphi-Quellcode:
unit uExample;

interface

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

type
  TfrmExample = class(TForm)
    lblLevel: TLabel;
    lblWurf: TLabel;
    lblAktPunkte: TLabel;
    lblGesamt: TLabel;
    btnWurf: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btnWurfClick(Sender: TObject);
  private
    { Private-Deklarationen }
    FLevel,
    FGesamt,
    FWurf: integer;
    procedure NeuesLevel;
    procedure Punkte(iPunkte: integer);
    procedure Wurf;
  public
    { Public-Deklarationen }
  end;

var
  frmExample: TfrmExample;

implementation

{$R *.dfm}

{ TfrmExample }

procedure TfrmExample.btnWurfClick(Sender: TObject);
begin
  Wurf;
end;

procedure TfrmExample.FormCreate(Sender: TObject);
begin
  Randomize;
  NeuesLevel;
  Punkte(0);
  lblWurf.Caption := Format('Wurf: %d',[FWurf]);
  lblAktPunkte.Caption := Format('Punkte: %d',[0]);
end;

procedure TfrmExample.NeuesLevel;
begin
  inc(FLevel);
  lblLevel.Caption := Format('Level %d',[FLevel]);
end;

procedure TfrmExample.Punkte(iPunkte: integer);
begin
  inc(FGesamt,iPunkte);
  lblGesamt.Caption := Format('Gesamt: %d',[FGesamt]);
end;

procedure TfrmExample.Wurf;
var iPoints: integer;
begin
  iPoints := Random(4);
  inc(FWurf);
  if FWurf > 3 then
    begin
      NeuesLevel;
      FWurf := 1;
    end;
  lblAktPunkte.Caption := Format('Punkte: %d',[iPoints]);
  lblWurf.Caption := Format('Wurf: %d',[FWurf]);
  Punkte(iPoints);
end;

end.
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz