Autor Beitrag
Anxiety
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 27.06.06 12:00 
Hallo Leute

ich und ein Kumpel sollen für Informatik ein Spiel programmieren. Es handelt sich um ein Spiel, bei dem sich 2 Spieler den Ball hin-und her köpfen. Jetzt haben wir nur ein Problem bei der Programmierung der Flugkurve des Balles:
Die Bahnkurve haben wir mit Hilfe von Punkten (und mathematischem Hintergrundwissen ;) ) bereits berechnet.

Jetzt ist nur die Frage, wie wir diese Kurve in das Programm einfügen können, sodass sich der Ball genau an der Kurve entlang bewegt? Der Ball ist als Image programmiert.

Danke für eure Hilfe
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 27.06.06 12:06 
ausblenden Delphi-Quelltext
1:
2:
xKoord := image.top + image.heigth div 2
yKoord := image.left + image.witdh div 2


gibt die Koordinaten des Mittelpunktes des images an.
ACHTUNG : der Koordinaten-Ursprung befindet sich in der linken oberen Ecke
Anxiety Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 29.06.06 16:36 
ich weiß nicht, ob ich was falsch machen..aber bei meiner version von Delphi (D6) kennt er die Funktion "xKoord" und "yKoord" nicht.
Was mir außerdem noch unklar ist:
wie bekommt man den Ball dazu, sich zu bewegen (und eben später dann an der Kurve entlang)??
crowley
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 406

Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
BeitragVerfasst: Fr 30.06.06 08:06 
xKoord und yKoord sind Variablen, die du dir deklarieren solltest ;)

in welcher form auch immer (schleife, timer, ...) du deinen "ball" bewegen möchtest... dafür brauchst du doch die koordinaten des "balles"... und den richtest du auf deiner "flugkurve" aus...
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 02.07.06 13:58 
hi,

ich bin der kumpel, von dem oben die rede war, der auch an dem projekt mitarbeitet. erstmal danke! der ball bewegt sich jetzt auf einer parabel von links nach rechts ;)

naja soweit, so gut; jetzt haben wir nur folgendes problem:
der ursprung des koordinatensystems beginnt in delphi ja in der linken oberen ecke. und parabeln werden generell von links nach rechts dargestellt; wie bekomme ich delphi nun dazu, meinen ball auch von rechts nach links entlang einer parabel zu bewegen?? muss ich dazu einen neuen ursprung, also ein neues koordinatensystem deklarieren??, und wenn ja wie??

im moment sieht mein quelltext folgendermaßen aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

y := imball1.top + imball1.height div 2;                                         // y-koordinate des balles
x := imball1.left + imball1.width div 2;                                         // x-koordinate des balles
u := ((25847/10000000)*sqr(x))-((19861071/10000000)*x)+(462551776/1000000);      //u= variable für flugbahn 1

imball1.Left := round(x);                                                        //flugkurve 1
imball1.Top := round(u);


y, x und u sind vom typ real.

wäre nett, wenn ihr uns auch bei diesem poblem weiterhelfen könntet ;)

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 10.07.06 20:23 
...

heißt das, dass ihr auch keine ahnung habt ?!?

falls doch - dann postet bitte mal euren vorschlag; thx
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 10.07.06 20:51 
Wo ist das Problem?
Du meinst einfach das der Ball in die andere Richtung fährt?
Einfach X am Anfang setzen (z.B. im OnCreate vom Form) und dann aus
ausblenden Delphi-Quelltext
1:
2:
x := imball1.left + imball1.width div 2;
x := imball1.left - imball1.width div 2;

und ans Ende des Timers setzen, sieht dann so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
u := ((25847/10000000)*sqr(x))-((19861071/10000000)*x)+(462551776/1000000); 
imball1.Left := round(x) ;                                                        
imball1.Top := round(u) ;
x := imball1.left - imball1.width div 2;                                       
end;

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Mo 10.07.06 21:18 
also so wie ich das sehe wird der Wert der Variable y nicht verwendet, das kommt mir schonmal falsch vor. Pack mal das ganze Projekt (*.dpr, *.pas, *.dfm) in eine zip-Datei und stell es hier rein, an dem schnipsel kann man ja echt nix sehen...
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 11.07.06 10:53 
ja die variable y wird nicht verwendet. mir is auch im nachhinein aufgefallen, dass der y-wert des balles mit der flugkurve nichts zu tun hat.
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 11.07.06 14:17 
Erklär bitte nochmal dein Problem.
Soweit ich das verstanden habe, löst meine Quelltext änderung dein Problem schon, wenn man sich alles durchliest.

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 11.07.06 22:06 
ja, dein quelltext löst das problem.
mal schaun vllt ergibt sich während des proggens noch ein wieteres problem, aber falls nicht is die sache damit erledigt ;)
thx
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 19.07.06 15:41 
so es ist geschafft ;)
das Prog läuft (naja so halbwegs)
ich stells mal zum Download rein; falls ihr dann noch irgendwelche Anregungen oder Verbesserungsvorschläge habt könnt ihr euch gerne bei mir melden.

(PS: Spielfiguren sind einfach 3 Lehrer ^^ ... unkreativ aber was solls)
Einloggen, um Attachments anzusehen!
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Mi 19.07.06 16:44 
der ball schlingert immer so komisch, soll dass so sein?
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 19.07.06 18:08 
naja nich wirklich. Ich weiß auch nicht wieso das so ist; ich schätz, dass es irgendein fehler mim zufallsgenerator ist (liefert zufallszahlen zwischen 1 und 3; je nach zahl wird eine bestimmte flugkurve ausgeführt, zb: pos 1 nach pos 6; pos 1 nach pos 5; pos 1 nach pos 4; pos 2 nach pos 6 usw.)
aber hab ehrlich gesagt keine ahnung ;)
templer
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 13.09.06 14:50 
ich hab noch ein bisschen an meinem Programm weitergearbeitet - sound + hintergrundmusik und die grafik ist etwas verändert

jetzt möchte ich in das ganze auch noch eine Netzwerkvariante einbauen; habe allerdings überhaupt keine ahnung, wie das ganze gehn soll, da ich ein absoluter neuling in sachen programmierung bin.
es soll hat am ende so sein, dass spieler 1 die linke spielfgur steuert und spieler 2 die rechte
das ganze muss dann über einen speziellen port ablaufen, wobei dann ständig informationen über die position des balles und der spielfiguren versand werden müssen - oder?!
nur wie kann ich das programmieren ?

wäre nett, wenn ihr mir hierbei helfen könntet

MFG
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mi 13.09.06 15:30 
Hallo, neue Frage neuer Thread :)!
Außerdem gibt es davon schon etliche im Forum. Bei den Tutorial ist eine Anleitung wie man Daten versenden kann. Jetzt muss t du dir halt überlegen, welche Daten du übertragen möchtest und dir dafür ein passendes Protokoll überlegen.
Am einfachsten wäre es wohl, einfach die Zufallszahl zu übertragen, die Flugbahn können dann beide selbständig berechnen. Wenn die Flugbahn noch von zusätzlichen Parameter bestimmt ist, dann diese mitübertragen.
Wichtig ist, dass, wie gesagt, die Flugbahn beide selber berechnen können, dann sparst du dir unnötigen Traffic. Wenn es dir nicht sicher genug ist, kannst du ja zwischendurch abgleichen, aber ich denke für die einfachen Zwecke sollte es reichen!

Viele Grüße,
Hape

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.