etwas hüpfen lassen
Übersicht

![]() |
maboxBetreff: etwas hüpfen lassen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ich bin grad am Versuch ein Rechteck hüpfen zu lassen.
Klappt auch schon ganz gut, aber nachden der Code ein Paarmal durchgelaufen ist geht der speed zu sehr ins minus und die Richtung wechstelt zu oft. da find ich den Fehler nicht. hier mein Code: [AUSKLAPPEN] Graphics 800,600,0,2
SetBuffer BackBuffer() richtung = 1 Ball_x = 400 Ball_y = 100 timer = CreateTimer (60) speed# = .1 Repeat Cls If speed# =< 0 Then richtung = richtung * -1 If richtung = 1 Then speed# = speed# + .01 Else speed# = speed# - .013 EndIf ball_y = Ball_y + speed# * richtung* 15 Rect Ball_x,Ball_y, 10, 10 Rect 0, 580, 800, 1 If RectsOverlap (Ball_x, Ball_y, 10, 10, 0, 580, 800, 1) Then richtung = richtung * -1 EndIf Text 10,10,richtung Text 10,30,speed# WaitTimer (timer) Flip Until KeyHit (1) |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo.
Falls du es noch nicht bemerkt hast: dein "speed#" geht ja nur ins Minus, weil dein Ball näher an den Boden kommt von Sprung zu Sprung. Ich würde vorschlagen, deine Geschwindigkeit nach der Länge der Strecke von der oberen Ballposition bis zum Boden anzupassen. In etwa: Code: [AUSKLAPPEN] speed# = speed# + (boden_y - ball_y)/60
Ich glaube, somit sollte der Speed nicht ins Negative kommen. MFG Lador |
||
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm leider gehts mit deinem Code auch nicht, da geht der speed noch mehr ins Minus. | ||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,0,2
SetBuffer BackBuffer() richtung = 1 Ball_x = 400 Ball_y = 100 timer = CreateTimer (60) speed# = .1 Repeat Cls If speed# =< 0 Then richtung = richtung * -1 If speed# < 0 Then If richtung = 1 Then speed = speed + 0.01 Else speed = speed - 0.013 EndIf ElseIf speed# > 1 Then speed = -0.01 EndIf If richtung = 1 Then speed# = speed# + 0.01 Else speed# = speed# - 0.013 EndIf ball_y = Ball_y + speed# * richtung* 15 Rect Ball_x,Ball_y, 10, 10 Rect 0, 580, 800, 1 If RectsOverlap (Ball_x, Ball_y, 10, 10, 0, 580, 800, 1) Then richtung = richtung * -1 EndIf Text 10,10,richtung Text 10,30,speed# WaitTimer (timer) Flip Until KeyHit (1) Also bis zum Schluss klappt es bei mir. MFG Lador |
||
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du bei deinem Code bleiben möchtest hier auch mit variierbarer Richtung
Code: [AUSKLAPPEN] Graphics 800,600,0,2
SetBuffer BackBuffer() richtung = 1 Ball_x = 400 Ball_y = 100 timer = CreateTimer (60) speed# = .1 Repeat left_ = KeyDown(203) Right_ = KeyDown(205) Cls If Left_ Then ball_x = ball_x - 1 If right_ Then ball_x = ball_x + 1 If speed# =< 0 Then richtung = 1 If richtung = 1 Then speed# = speed# + .01 Else speed# = speed# - .013 EndIf ball_y = Ball_y + speed# * richtung* 15 Rect Ball_x,Ball_y, 10, 10 Rect 0, 580, 800, 1 If RectsOverlap (Ball_x, Ball_y, 10, 10, 0, 580, 800, 1) Then richtung = -1 EndIf Text 10,10,richtung Text 10,30,speed# WaitTimer (timer) Flip Until KeyHit (1) |
||
- Zuletzt bearbeitet von WEBLink am Do, Mai 08, 2008 17:49, insgesamt 2-mal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal solltest du immer wenn ein Timer benutzt wird, auch Flip auf 0 stellen.
Desweiteren sollte man so weit es geht auf unnötige Variablen verziechten. Also auf die Richtung etc. kann man ganz gut verzichten. Das alles lässt sich auch sehr gut auf rein mathematischem Wege berechnen, als per ewigen If-Abfragen zu kontrolieren zu versuchen. Ich habe leider nicht so viel Lust das alles bis aufs Detail zu erklären, weshalb ich mal dein Code soweit überarbeitet habe. Das einzige was ich mich frage ist, ob deine Überlegung mit RectsOverlap ![]() Code: [AUSKLAPPEN] Graphics 800,600,0,2
SetBuffer BackBuffer() Const Gravitation#=0.1 Const Luftwiederstand#=0.995 Const Aufprallwiederstand#=0.8 Const Kraft#=0.2 Local Timer = CreateTimer (60) Local Ball_X# = 400 Local Ball_Y# = 100 Local Ball_XSpeed# = 0 Local Ball_YSpeed# = 0 Repeat Cls If KeyDown(203) Then Ball_XSpeed=Ball_XSpeed-Kraft If KeyDown(205) Then Ball_XSpeed=Ball_XSpeed+Kraft If KeyDown(200) Then Ball_YSpeed=Ball_YSpeed-Kraft If KeyDown(208) Then Ball_YSpeed=Ball_YSpeed+Kraft Ball_XSpeed=Ball_XSpeed*Luftwiederstand Ball_YSpeed=Ball_YSpeed*Luftwiederstand Ball_YSpeed=Ball_YSpeed+Gravitation Ball_X=Ball_X+Ball_XSpeed Ball_Y=Ball_Y+Ball_YSpeed If Ball_Y>580 Then Ball_YSpeed=-Ball_YSpeed*Aufprallwiederstand Ball_Y=580 EndIf Rect Ball_X-5,Ball_Y-5, 10, 10, 1 Rect 0, 580, 800, 1, 1 Text 20,20,Ball_XSpeed# Text 20,40,Ball_YSpeed# WaitTimer (Timer) Flip 0 Until KeyHit (1) edit1: Achja, dein Spieler ging vermutlich deshalb zu weit ins Minus, da deine Kollisions''fläche'' nur ein Pixel hoch war. Da die Fallgeschwindigkeit auch schneller als ein Pixel sein konnte und damit nicht genau auf die Fläche getroffen wurde, könnte es passieren, dass eben der Spieler da durch fällt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
wow hectic ![]() (ich weiss ja hier, aber so einen code hab ich in der art noch nirgends gesehen) mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
der eine NOOB!!!, deine Reaktion ist so übertrieben, dass ich mir nicht sicher bin wie du es meinst. ![]() Als Nachtrag muß ich anmerken, dass ich mir - aus welchen Gründen auch immer - sicher war, dass ich der Erstantworter bin. Da liegen aber so einige Beiträge noch dazwischen. War wohl ein Irrtum. Mein Beitrag bezog sich also auf den Fragesteller ohne Berücksichtigung anderer bereits zuvor geschriebener Beiträge. Daher ''sorry'' für die anderen, dennen ich dazwischen funke. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
mabox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok vielen Dank schonmal, ich hab mir jetzt zwar noch nicht alles angeschaut, aber das von Hectic ist auf jeden Fall sehr gut! | ||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry dass mein beitrag so übertrieben gewirkt hat ![]() damit meine ich dass deine beiträge bei näherem betrachten voller logik sprotzen und ich keine ahnung habe wo man das herhat mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
BigMaexle |
![]() Antworten mit Zitat ![]() |
---|---|---|
Etwas Talent für Logische Sachen + Motivation + Geduld -> Guter Programmierer
Bei Hectic trifft halt aller ziemlich gut hin. Er ist halt ein ziemlich guter Programmierer. Nicht mehr und nciht weniger. Da braucht man keine besondere Ausbildung ![]() |
||
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber |
AntiAdi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh ja so ist das, bei mir trifft leider nicht ganz alles zu. Talent für logische Sachen hab ich nicht sonderlich, aber an Motivation dürfte es nicht fehlen und damit kann man das logische Talent (zumendest ein Bisschen) verdecken wenn man noch die nötige Geduld mitbringt. Wobei dann alles sehr viel länger dauert als wenn man von vornerein gut logisch denken kann. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group