Hilfe bei Kollision, Animation und Schwerkraft

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Jack

Betreff: Hilfe bei Kollision, Animation und Schwerkraft

BeitragFr, Apr 29, 2005 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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! Rolling Eyes
 

hitokiri

BeitragFr, Apr 29, 2005 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Apr 29, 2005 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ä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. Laughing

Alfadur

BeitragSa, Apr 30, 2005 5:04
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile
A Cray is the only computer that runs an endless loop in less than four hours.

Jack

BeitragSa, Apr 30, 2005 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite nicht so gerne mit Funktionen. Also bitte keine Funktionen im Programmtext mit einbauen.

Danke

Alfadur

BeitragSa, Apr 30, 2005 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Apr 30, 2005 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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...". Evil or Very Mad

Danke
 

DarkMike

BeitragSa, Apr 30, 2005 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 01, 2005 11:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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). Very Happy

Alfadur

BeitragSo, Mai 01, 2005 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Mai 03, 2005 8:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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.... Wink

Gruß - Xaron
Cerberus X - Monkey X Reloaded!

Jack

BeitragDi, Mai 03, 2005 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Bigfreddy, was meinst du damit?
1. Prob.:
des mit der Kollision(s. oben, danke für die Hilfe Laughing )

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?"? Rolling Eyes
 

Bigfreddy

BeitragDi, Mai 03, 2005 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Mai 06, 2005 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
 

Bigfreddy

BeitragSo, Mai 08, 2005 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Mai 10, 2005 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
 

Bigfreddy

BeitragDi, Mai 10, 2005 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach: frame=wert

für wert: 0,1,2,3 bzw. 0,6,7,8

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group