AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Basketball Freiwurf

Ein Thema von OmahaHawk · begonnen am 13. Mär 2009 · letzter Beitrag vom 13. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#1

Basketball Freiwurf

  Alt 13. Mär 2009, 21:22
Hi Delphi-Pros und alle anderen !

ich bin gerade dabei für die Schule ein Basketball Freiwurf spiel zu programmieren
ich habe so weit alles fertig doch mir fehlen noch 2 eintscheidende sachen
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)

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]
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 21:36
Hallo und Willkommen in der 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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#3

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 22:50
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 ??

muss ich noch was bei den variablen (var) einfügen ?
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#4

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 22:52
Das sind selbstdefinierte Methoden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#5

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 22:55
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 ?
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#6

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 23:02
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#7

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 23:04
ehrlich gesagt ich muss in der schule delphi 5 benutzeb

gibt es keine möglichkeit das auch mit delphi 5 zu programmieren ?
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#8

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 23:06
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
OmahaHawk

Registriert seit: 13. Mär 2009
20 Beiträge
 
#9

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 23:07
dan werde ich das mal versuchen (wird aber é nicht klappen)

kannst du das nicht machen
Danke für eure Hilfe !
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#10

Re: Basketball Freiwurf

  Alt 13. Mär 2009, 23:24
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]
Angehängte Dateien
Dateityp: zip example_184.zip (217,3 KB, 9x aufgerufen)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.
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