Video erstellen, Spiel Dialog
Übersicht

![]() |
zirriBetreff: Video erstellen, Spiel Dialog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Zwei Frage , kann man mit BB 2D irgendwie Videos erstellen die man dann ins Spiel packt? ![]() Zweite: Ich habe einen Space Shooter programmiert. Jetzt würde ich gerne einen Text am Anfang ins Spiel setzen wenn man auf Start drückt. Mein Problem ist das man den Dialog lesen kann, aber das Spiel startet. man müsste es schaffen den Dialog anzuzeigen und wenn der Dialog zu ende ist das Spiel startet oder man den Dialog mit irgendeiner taste abbricht. Code: [AUSKLAPPEN] SetBuffer BackBuffer()
Danke schon mal im voraus.
Graphics 800, 600 Font1=LoadFont("arial",24,1,0,0): SetFont Font1 x=0 p=1 a$="Hallo. Ich bin ein Text. l=Len(a$) While Not KeyDown(1) x=x+1 If x> 10 p=p+1 If p>l Then p=l x=0 EndIf Text 20,20,Mid(a$,1,p) Flip Wend |
||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuche es mal mit Fraps !
Musste mal Googlen... Dann kannste ja das video einbinden. |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke,
Lad mir grad so ein programm von chip.de herunter. Mal probieren |
||
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder einfach jedes Frame speichern und dann zu einem .gif zusammenschneiden | ||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke funktioniert. ![]() Jetzt würde ich gerne einen Text am Anfang ins Spiel setzen wenn man auf Start drückt(Im Hauptmenü). Mein Problem ist das man den Dialog lesen kann, aber das Spiel startet im Hintergrund schon startet. man müsste es schaffen den Dialog anzuzeigen und wenn der Dialog zu ende ist das Spiel zum starten bringen oder dass man den Dialog mit irgendeiner taste abbricht. Code: [AUSKLAPPEN] SetBuffer BackBuffer()
Graphics 800, 600 Font1=LoadFont("arial",24,1,0,0): SetFont Font1 x=0 p=1 a$="Hallo. Ich bin ein Text. l=Len(a$) While Not KeyDown(1) x=x+1 If x> 10 p=p+1 If p>l Then p=l x=0 EndIf Text 20,20,Mid(a$,1,p) Flip Wend |
||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Geht setbuffer vor Graphics?
Dein Spiel würde nicht starten, wenn du nach dem Wend eine 2. Schleife beginnen würdest, in der dein Spiel läuft. Oder du steckst alles ab x=0 bis Wend in eine Funktion namens Zeigetext() und schreibst Graphics... setbuffer... font... ; Zeigetext() ; while not keydown(1) ..Spiel.. wend end Problem dabei ist immer, dass du mit drücken von ESC auf einmal durch alle Schleifen rauschst - also gleich auch noch das Spiel beendest. Ich mache dann am Ende der Funktion Zeigetext() while not keydown(1) wend um sicherzustellen, dass ESC nicht mehr gedrückt ist, wenn du die Zeigetext-Funktion mit esc beendest. Geht aber sicher auch auf anderem Weg. |
||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
<tut mir leid, aber ich kapier das irgendwie nocht nicht wie du das meinst. Bitte beschreib den Quelltext mir ein bisschen besser Gerhard. |
||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn dein Spiel startet, während dein Text angezeigt wird, denk ich mal, dass du beides in der While...Wend - Schleife hast. Oder versteh ich dich falsch?
Problemlösung wäre beispielsweise, dass du eine zweite Schleife nach der ersten (mit dem Text) beginnst, in der dein Spiel läuft. |
||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Gerhard,
Ich geb dir mal (kurz) meinen Quellcode. Danke im Voraus für deine Hilfe ![]() PS: Kannst du oder jemand anders mir ein drittes mal helfen. Mein Spiel ladet das nächste Level nicht. Danke Code: [AUSKLAPPEN] AppTitle ".........."
Graphics 800,600 SetBuffer BackBuffer() Global monster = LoadImage("gfx\player2.bmp") Global player = LoadImage("gfx\spaceship3.bmp") Global schussbild = LoadImage("gfx\bullet.bmp") Global background = LoadImage("gfx\Meer.jpg") Global schusston = LoadSound("gfx\048.wav") Global trefferton = LoadSound("gfx\ugh.wav") Global background2 = LoadImage("gfx/stars.bmp") PlayMusic("gfx\rockoverblitz.mp3") hinter = LoadImage ("gfx\Meer.jpg") tiles = LoadImage ("gfx\blocks1.bmp") maus = LoadImage ("gfx\pointer.bmp") font = LoadFont("Times New Roman", 40, 1, 0, 0) SetFont font ; Graphik für Menüpunkt erzeugen stein = CreateImage(32,32) SetBuffer ImageBuffer(stein) DrawImageRect tiles, 0, 0, 444, 308, 32, 32 ScaleImage stein, 8, 2 ; Graphik für aktiven Spielstein erzeugen aktivstein = CreateImage(32,32) SetBuffer ImageBuffer(aktivstein) DrawImageRect tiles, 0, 0, 2, 342, 32, 32 ScaleImage aktivstein, 8, 2 ; Menü definieren Dim MenuZeile(3) : Dim MenuName$(3) MenuZeile(1) = 100 : MenuName$(1) = "Start" MenuZeile(2) = 200 : MenuName$(2) = "Einstellungen" MenuZeile(3) = 300 : MenuName$(3) = "Ende" Global X Global Y Global I Dim rakete(20,2) Global treffer = 0 Global hoehe = 200 Global schuss = 0 Global punkte = 0 Global pos_y = 10 Global sin_x = 0 Global bg = 0 ; ; Hauptmenü-Schleife ; SetBuffer BackBuffer() Repeat TileBlock hinter Menu = 0 X = MouseX() Y = MouseY() For I=1 To 3 If ImageRectOverlap (maus, X, Y, 192, 100*I, 256, 64) Then DrawImage aktivstein, 192, I * 100 Menu = I Else DrawImage stein, 192, I * 100 EndIf Text (640 - StringWidth( MenuName$(I) )) / 2, I*100 + 12, MenuName$(I) Next DrawImage maus, X,Y Flip If MouseHit(1) Then If Menu = 1 Then Start() If Menu = 2 Then Einstellungen() If Menu = 3 Then Ende() EndIf Until KeyHit(1) End ; ; Funktionen für Menüpunkte ; Function Start() x=300 y=300 i=0 Repeat Cls hintergrund() steuerung() schiesen() gegner() kollisionen() spieler() punkte() Flip Until KeyDown(1) End Function Function Einstellungen() Repeat Cls Text 100,100, "Einstellungen" Text 200,200, "Kommen noch" Text 300,300, "Beenden mit Esc" Flip Until KeyHit(1) End Function Function Ende() Repeat Cls Text 100,100, "Ende" Flip Until KeyHit(1) Or KeyHit(57) End End Function Function hintergrund() bg = bg + 1 If bg = 200 Then bg = 0 TileBlock background2, 0, bg End Function Function steuerung() If KeyDown(205) Then x = x + 4 If KeyDown(203) Then x = x - 4 If KeyDown(200) Then y = y - 4 If KeyDown(208) Then y = y + 4 If x > 765 Then x = 765 If x < 0 Then x = 0 If y > 570 Then y = 570 If y < 0 Then y = 0 End Function Function schiesen() If KeyHit(57) Then schuss = schuss + 1 If schuss = 21 Then schuss = 1 rakete(schuss,0) = 1 rakete(schuss,1) = x + 8 rakete(schuss,2) = y - 16 PlaySound(schusston) EndIf For l = 1 To 20 If rakete(l,0) = 1 Then DrawImage schussbild, rakete(l,1), rakete(l,2) rakete(l,2) = rakete(l,2) - 5 EndIf Next End Function Function gegner() i = i + 1 pos_y = pos_y + 3 sin_x = Sin(i) * hoehe sin_x = sin_x + 300 DrawImage monster, sin_x, pos_y If pos_y > 641 Then punkte = punkte - 10 pos_y = 0 hoehe = Rnd(200,300) EndIf End Function Function kollisionen() For k = 1 To 20 If rakete(k,0) = 1 And ImagesOverlap(monster, sin_x, pos_y, schussbild, rakete(k,1), rakete(k,2)) Then rakete(k,0) = 0 treffer = treffer + 1 Sin_x=0:Pos_y=10 EndIf Next If treffer = 1 Then treffer = 0 punkte = punkte + 10 hoehe = Rnd(200,300) pos_y = -10 EndIf If punkte = 100 Then LoadImage("gfx/schnee004.bmp") If punkte = 110 Then LoadImage("gfx/schnee004.bmp") If punkte = 090 Then LoadImage("gfx/schnee004.bmp") If KeyDown(197) Or KeyDown(25) Then font = LoadFont("Times New Roman",80,0,0,0) SetFont font Locate 150,200 Print "P A U S E" FlushKeys WaitKey FreeFont font EndIf If ImagesOverlap(monster, sin_x, pos_y, player, x, y) Then PlaySound(trefferton) font = LoadFont("Times New Roman",80,0,0,0) SetFont font Color 255,0,0 Text 400,100,"-GAME OVER-",1,0 FreeFont font e$ = Input("Willst du nochmals?(j,n)") If e$ <> "j" Then End EndIf End Function Function spieler() DrawImage player, x, y End Function Function punkte() Text 400,10, "Du hast "+punkte+" Punkte" End Function Function levelzer() Cls SpielerX = 0 SpielerY = 0 Leben = 5 monster = 5 DrawImage Hintergrund, 0, 0 End Function |
||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo? | ||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Falls dein nächster Level mit levelzer() aufgerufen wird, liegt das daran, dass du diese Funktion nirgends aufrufst.
Du müsstest bei Erfüllung einer Bedingung deinen neuen Level aufrufen: Punkte = (?) then levelzer() |
||
![]() |
flexoBetreff: --- |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi, mal eben ne kurze Frage Zwischendurch (bin relativ neu mit BB dabei)
kann mir kurz mal wer die vier befehle erklären? ![]() (den rest versteh ich aber =) Code: [AUSKLAPPEN] stein = CreateImage(32,32)
SetBuffer ImageBuffer(stein) DrawImageRect tiles, 0, 0, 444, 308, 32, 32 ScaleImage stein, 8, 2 danke! |
||
Du bist eizigartig - genau wie jeder andere auch. |
TimoBetreff: Re: --- |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] ;ein neues Bild mit den Maßen 32*32 wird erstellt stein = CreateImage(32,32) ;Der Buffer wird auf das Bild eingestellt, damit jede Mal und ;Schreibbefehle in das Bild gehen SetBuffer ImageBuffer(stein) ;Jetzt malt man aus dem Bild "tiles" einen Ausschnitt in das neue Bild "stein" DrawImageRect tiles, 0, 0, 444, 308, 32, 32 ;jetzt vergrößert man das Bild, scale-Image nie in einer Schleife verwenden, ;da zu langsam!! ;) ScaleImage stein, 8, 2 hoffe ich konnte helfen, sonst schau einfach mal in der Onlinehilfe unter "Setbuffer" und den anderen Sachen nach ![]() |
||
![]() |
flexoBetreff: --- |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() So weiter mit dem alten thema =) |
||
Du bist eizigartig - genau wie jeder andere auch. |
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte den Level gar nicht mit Levelzer aufgerufen.
Habs nur so gemacht wies im Quelltext steht. D.H. das ich ne neue Function öfnnen muss oder? |
||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wo soll der neue Level sonst herkommen? | ||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich hatte gedacht das reicht , dass man den einfach nur lädt.
Kansst du dir bitte bitte bitte bitte bitte bitte bitte die mühe machen und ne Levelzer Function für mich machen? Ich bin noch jung und neu und versteh davon noch recht wenig. Danke im voraus |
||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, ja, ich glaub da hast du recht...
Du lädst zum Bsp. Bilder, die du nie anzeigst (schnee004) usw. Programmieren ist das aber nicht, was du machst. Also für einen neuen Level musst du dir wohl oder übel überlegen, wann der kommen soll. Bei einer bestimmten Punktzahl? Oder nach einer bestimmten Zeit? Diese Bedingung fragst du ab If bedingung = true then ; Einstellungen für neuen Level (alles auf Ausgangsposition) level = level + 1 waitkey() Endif Oder noch einfacher: Du machst keinen neuen Level (zumal wenn sowieso nichts Neues kommt). |
||
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich hatte das schon mal gemacht mit Punktzahl, aber er hat nicht das Level geladen.
Ich verstehe das jetzt so, Code: [AUSKLAPPEN] If bedingung = true then das ist dann
diese Bedingung: Code: [AUSKLAPPEN] If punkte = 100 Then LoadImage("gfx/schnee004.bmp")
If punkte = 110 Then LoadImage("gfx/schnee004.bmp") If punkte = 090 Then LoadImage("gfx/schnee004.bmp") Aber ich versteh das Code: [AUSKLAPPEN] Level = Level +1 nicht. ![]() Ich hatte die Function levelzer im Buch nachgeguckt und im Internet und hab aber nichts darüber gefunden, deswegen weiß ich darüber nicht bescheid. |
||
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, wen die Punkte Zahl erreicht ist, dann kann man zum beispiel einer variable 1 zu weisen.
Dann muss man nur noch abfragen ob die variable = 1 ist. Wen ja, dan lädst du dass neue Level. Und setzt die variable wieder auf 0 damit er nicht sofort wieder dass nächste Level lädt. Thx DarkAngel |
||
Deutscher Blitz Basic Chat |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group