Entwickler-Ecke

Open Source Projekte - Ballistische Kurve, Spiel


Fiete - Sa 02.10.10 16:39
Titel: Ballistische Kurve, Spiel
Der Spieler muß das Ziel, das durch einen Berg versperrt wird, treffen.
Nach dem Bau des Berges muß die Kanone initialisiert werden(Gegenwind und Achsenmaßstab) :wink:
Die Abschußgeschwindigkeit und der Abschußwinkel beeinflussen zusätzlich die ballistische Kurve.
Der Spieler hat 5 Versuche.

Gerechnet wird nach der Formel Y:=X*sin(W)/cos(W)-0.5*G*X*X/(V0*V0*cos(W)*cos(W))*(1+CW*X);

Viel Spaß beim spielen.
Gruß
Fiete
Edit1: neue Version liegt vor
Edit2: jetzt fliegt eine Kugel :wink:


Martok - Sa 02.10.10 18:44

Nett ;)

Noch etwas "grafischer" wäre schön.
Und ein Käfer: nach einer Meldung wenn man nicht getroffen hat, wird das Fenster nicht neu gezeichnet. Und während der Explosion wenn man trifft auch nicht, da kommt nur der Sound und irgendwann danach dann Meldung und "Linienexplosion"


Fiete - Mo 04.10.10 11:04

Moin Martok,

> Noch etwas "grafischer" wäre schön.
stimmt, leider bin ich kein guter Grafiker.
Im Quelltext sind zwei kleine Änderungen vorgenommen, die Dir wohl gefallen :beer:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
     if Getroffen then
      begin
       for KL:=1 to 50 do
        begin
         Pen.Color:=random(65535);
         MoveTo(XMitte,YMitte);
         LineTo(XMitte+(2*random(2)-1)*random(100),YMitte+(2*random(2)-1)*random(100));
        end;
       SndPlaySound('Treffer.wav',SND_ASYNC); // vorher stand hier SND_SYNC!!!
      end;
     if ImBerg then MessageDlg('Du sollst den Berg NICHT durchlöchern!!!',mtError,[mbOk],0);
     if Getroffen or (Versuch=5then
      begin
       if Getroffen then MessageDlg('Du hast das Ziel getroffen! Profi???',mtInformation,[mbOk],0)
       else MessageDlg('Du hast das Ziel NICHT getroffen!',mtError,[mbOk],0);
       FeuerKnopf.Visible:=False;
       EditV.Visible:=False;
       EditW.Visible:=False;
       AV.Visible:=False;
       VA.Visible:=False;
       StW.Visible:=False;
       Wind.Visible:=False;
       HF.Visible:=True;
       FarbeH.Visible:=True;
       LF.Visible:=True;
       FarbeL.Visible:=True;
       LabelGrad.Visible:=True;
       EditGrad.Visible:=True;
       BergBau.Visible:=True;
       BergZeichnen; // neue Zeile
      end;

Gruß
Fiete


FinnO - Fr 03.06.11 14:27

Vom Berg ist man noch immer beeindruckt ;)

Ferner: Wenn der Winkel 90 Grad beträgt, gibt es eine Gleitkommakatastrophe.

LG,

FinnO


Fiete - Sa 04.06.11 12:03

Moin FinnO,
die Gleitkommakatastrophe läßt sich verhindern, ändere den Quelltext

Delphi-Quelltext
1:
2:
Winkel:=StrToFloat(EditW.Text);
if Winkel>89 then Winkel:=89// Absicherung

Gruß Fiete