Hilfe bei Kollision, Animation und Schwerkraft
Übersicht

![]() |
JackBetreff: Hilfe bei Kollision, Animation und Schwerkraft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, ihr wundert euch wahrscheinlich, was der Name dieses Threads bedeuten soll. Ich werde es denjenigen, der dies nicht versteht, langsam und deutlich erklären:
Also, ich habe schon einen Programmtext für ein kleines Spiel: BlitzBasic:Code: [AUSKLAPPEN] Graphics 800,600,32,1 SetBuffer BackBuffer() Sound = LoadSound("soundfx.wav") Figur = LoadAnimImage("Animation.bmp", 150,120,0,12) HGrund = LoadImage("Level1.bmp") MaskImage Figur, 255,255,255 x = 100 : y = 200 : z = 0 : scroll = 0 : x2 = 0 : y2 = 0 z = z + 40 Repeat For I = 9 To 11 Next PlaySound Sound If KeyDown(205) Then x = x + 30 : Nr = 0 : scroll = scroll - 20 If KeyDown(203) Then x = x - 30 : Nr = 9 : scroll = scroll + 20 If KeyDown(200) Then y = y - 30 If KeyDown(208) Then y = y + 30 If x > 200 Then x = 200 If x < 200 Then x = 200 If scroll > 0 Then scroll = 0 If scroll < -3200 Then scroll = -3200 Cls DrawImage HGrund, x2+scroll,y2 DrawImage Figur, x,y, Nr Delay 150 Flip Until KeyHit(1) End Nun, 1. Problem: Wie stelle ich eine Grenze ein, die meine Figur nicht überschreiten soll? Aber, mein Level hat erst eine gerade Linie nach rechts und dann eine Linie nach oben. Das ist der Boden. Nun, 2. Problem: Meine Figur hat immer die selbe Nummer. Ich will die Nummern 0, 1 und 2 bei dem Tastendruck nach rechts, die Nummern 9, 10 und 11 bei dem Tastendruck nach links, die Nummern 3, 4 und 5, wenn die Figur startbereit in Richtung rechts steht und nach oben springt(dabei sollen natürlich noch die Tasten nach rechts und links möglich sein!) und das gleiche nur in die andere Richtung und mit den Nummern 6, 7 und 8. Nun, 3. Problem: Schwerkraft, das heißt, wie bekomme ich es hin, dass meine Figur nur ca. 80 Pixel hoch springen kann? Könnte dies mit einem Code in der Art von: If y = y - 80 Then y = + 80 Bitte antwortet mir und kommt nicht durcheinander! ![]() |
||
hitokiri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also wenn ich dich richtig verstehe meinst du mit den nummern die frames einer animation. drei frames pro stance.
ich würde folgendes vorschlagen: definiere eine globale variable nennsiewieduwillst=0 wenn du wie im beispiel die steuerung nicht in eine funktion auslagerst schreibst dann einfach hinter jedes if keyhit() noch ein nennsiewieduwillst=1 nach draw und vor until keyhit dann einfach: nennsiewieduwillst=nennsiewieduwillst+1 if nennsiewieduwillst = 4 nennsiewieduwillst=1 nr=nr-2 else nr=nr+1 endif delayy ist allerdings auch gar nicht hübsch vor allem sieht dann eine animation sehr seltsam aus wenn du kanpp jede 6te sekunde ein bild malst. das mit dem for I = 9 to 11 kapier ich gar nicht. -> Code: [AUSKLAPPEN] Graphics 800,600,32,1 SetBuffer BackBuffer() Sound = LoadSound("soundfx.wav") Figur = LoadAnimImage("Animation.bmp", 150,120,0,12) HGrund = LoadImage("Level1.bmp") MaskImage Figur, 255,255,255 global frame=0 global oldy global x = 100 global y = 200 global x2 = 0 const y2 = 0 loopsound Sound playsound(Sound) repeat if frame=4 then frame=1 control() drawzeugs, zu faul frame=frame+1 until keyhit(1) function control() If KeyDown(205) x=x+30 If Nr>2 then Nr=0 and frame=1 x2=x2-20 elseIf KeyDown(203) x = x - 30 If Nr<9 or Nr>11 then Nr=9 and frame=1 x2 = x2 + 20 [und so weiter] end function |
||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Äh, tut mir leid, aber dein Programm ging leider nicht. Als erste Fehlermeldungen erschien "'Until' or 'Forever'", dann erschien "'End Function' without 'Function'", dann "'Until' without 'Repeat'". Bitte prüfe dein Programm nochmal. Ich versuche auch, den Fehler zu beheben.
Ich danke trotzdem für deine Hilfe. Bitte um weitere Hilfe. ![]() |
||
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaub dein code is total verkorkst.
mach dir ne function move, der übergibste dann ne zahl, 1 bis 4 oder so und berechnest anhand derer die frames die angezeigt werden ... also quasi (movedirection-1)*4+aktuellerframe .. dann legste beim drücken in irgendeine richtung die zahl fest und zählst wenn die taste gedrückt ist den aktuellerframe nach oben ... wenn er 3 ist, dann isser wieder 1 oder 0 oder wie du das definiert hast ... schwerkraft machste so, das du beim space drücken nen wert von y abziehst, zb 1, aber ständig auch nen wert, zb 0.3 wieder dazuaddierst ... d.h. wenn space nich mehr gedrückt ist, ziehts den typen wieder zum boden. natürlich nur solange er in der luft ist ... was diese linien und dein erstes problem angeht, falls du ein jump and run machst... denk mal über ne tileengine nach, codes und tutorials gibts en masse im netz und ich hab auch code auf lager. den kriegste aber nicht ![]() |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich arbeite nicht so gerne mit Funktionen. Also bitte keine Funktionen im Programmtext mit einbauen.
Danke |
||
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du so denkst, dann kannst du eigentlich gleich einpacken... | ||
A Cray is the only computer that runs an endless loop in less than four hours. |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alfadur, hast du René Meyer's Buch "Spiele programmieren" gelesen? Er arbeitet auch nicht mit Funktionen und zwar in seinem gesamten Buch. Vor allem mag er es nicht mit Typen zu arbeiten, aber das ist jetzt was gamz anderes.
Bitte um Hilfe und nicht um Sätze wie "wenn du so denkst, kannst du gleich einpacken...". ![]() Danke |
||
DarkMike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
quatsch, ich hab nachgeschaut er schreibt nirgens das er functionen nicht mag oder kann etc!!!
wenn du ne erklärung zu functionen brauchst schreib mich an, wenn man es versteht ist es ganz simpl!!! |
||
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein) |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe ja nicht gesagt, dass er das geschrieben hat, ich habe nur gesagt, dass er in seinem Buch seine Spiele ohne Funktionen schreibt und er mag keine Typen. Kannst ihn ja Fragen.
P.S: Ich glaube du meinst das Buch "Spiele programmieren mit Blitz Basic". Du solltest lieber mal deine Bücher und vor allem diese Threads gründlich durchlesen(is jetz keinesfalls persönlich gemeint). ![]() |
||
![]() |
Alfadur |
![]() Antworten mit Zitat ![]() |
---|---|---|
dennerlein, es ist vollkommen wurscht ob rene meyer typen mag oder nicht. ich persönlich steh auch mehr auf frauen ... du bist hierhergekommen weil du hilfe wolltest, ich hab dir tipps gegeben. wenn du zu ignorant bist um sie umzusetzen kann ich dir auch nicht helfen. am besten du setzt dich gleich mit typen und funktionen auseinander.
willst du erst jahrelang in der programmiergeschichte rumgurken und einen spaghetticode nach dem anderen fabrizieren, oder willste es gleich richtig machen? denk drüber nach ... |
||
A Cray is the only computer that runs an endless loop in less than four hours. |
![]() |
Xaron |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dennerlein, es ist wirklich nicht böse gemeint, denke ich. Aber ohne Funktionen und Types wird es wirklich sehr schnell sehr unübersichtlich.
Ich kenne zwar diesen Rene und sein Buch nicht, kann mir aber nicht vorstellen, dass er gegen den Einsatz von Funktionen ist. Wenn doch, dann.... ![]() Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bigfreddy, was meinst du damit?
1. Prob.: des mit der Kollision(s. oben, danke für die Hilfe ![]() 2. Prob.: des mit der Animation(s. oben) 3. Prob.: des mit der Schwerkraft(s. oben) Welches prob meinst du mit "Was meinst du damit?"? ![]() |
||
Bigfreddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich meinte des 2.Prob:
Nun, 2. Problem: Meine Figur hat immer die selbe Nummer. Ich will die Nummern 0, 1 und 2 bei dem Tastendruck nach rechts, die Nummern 9, 10 und 11 bei dem Tastendruck nach links, die Nummern 3, 4 und 5, wenn die Figur startbereit in Richtung rechts steht und nach oben springt(dabei sollen natürlich noch die Tasten nach rechts und links möglich sein!) und das gleiche nur in die andere Richtung und mit den Nummern 6, 7 und 8. 3.Prob: Schwerkraft: y=y+0.3 (muss dauernd laufen) Sprung: sprung=-1 if keydown(x) then y=y+sprung if y<=sprunghoehe then sprung=+1 anderen Sprung(bei tippen ganzen sprung) kannst du bei der Suche finden...den code hab ich mal gepostet (weiß nur gar nix mehr ,wie der heißt und wo der ist) |
||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, ich hab mich ja scho lang nimmer gmeldet. Mein Computer ging net.
Aber jetz geht er wieder. Biggfreddy, kannst du mir mal ein Beispielprogramm zuschicken oder in den Thread hier schreiben? So was wie folgendes... Graphics 800,600,32,1 Setbuffer Backbuffer() bild = Loadimage usw. ...kannst du natürlich weglassen. Das Programm sollte aber auch leicht verständlich sein. Danke ![]() |
||
Bigfreddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Antwort: NEIN!
Es langt, wir haben dir alles gesagt was unklar war und jetzt ist deine Rolle dran... Versuchs doch einfach mal...mehr als schief gehn kanns net (außer dein PC überdreht ein wenig, aber des passiert nur ganz selten) Empfehlung: - Tuts bei www.robsite.de - OH bei www.blitzbase.de - Bücher z.b.: "Spiele programmieren mit BB" |
||
![]() |
Jack |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun ja, das 3. prob hab ich schon gelöst. das erste eigentlich auch schon. nur das problem mit der animation hab ich immer noch nicht gelöst. wie schaffe ich es, dass meine figur die frames 1,2,3(also von 0 an gezählt) bei BlitzBasic: [AUSKLAPPEN] KeyDown(205)und die frames 6,7,8(wieder von 0 an gezählt) bei BlitzBasic: [AUSKLAPPEN] KeyDown(203)hat. Bitte um hilfe ![]() |
||
Bigfreddy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
einfach: frame=wert
für wert: 0,1,2,3 bzw. 0,6,7,8 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group