![]() |
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:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
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. |
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; |
Re: Basketball Freiwurf
Zitat:
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 ? |
Re: Basketball Freiwurf
Das sind selbstdefinierte Methoden.
|
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 ? |
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.
|
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 ? |
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.
|
Re: Basketball Freiwurf
dan werde ich das mal versuchen :mrgreen: (wird aber é nicht klappen)
kannst du das nicht machen :angel: |
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:
[/edit]
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz