Video erstellen, Spiel Dialog

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

zirri

Betreff: Video erstellen, Spiel Dialog

BeitragDi, Aug 31, 2004 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Zwei Frage , kann man mit BB 2D irgendwie Videos erstellen die man dann ins Spiel packt? Embarassed D.h. Spiel Video oder Video vom entwickler.
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()
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
Danke schon mal im voraus.

rambo256

BeitragDi, Aug 31, 2004 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche es mal mit Fraps !

Musste mal Googlen...

Dann kannste ja das video einbinden.
Asus F53z

Das Leben ist eine reine Konkatenation...

zirri

BeitragDi, Aug 31, 2004 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,
Lad mir grad so ein programm von chip.de herunter.
Mal probieren

sbrog

BeitragMi, Sep 01, 2004 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder einfach jedes Frame speichern und dann zu einem .gif zusammenschneiden

zirri

BeitragMi, Sep 01, 2004 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke funktioniert. Very Happy
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

BeitragMi, Sep 01, 2004 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Sep 03, 2004 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Sep 03, 2004 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 04, 2004 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Gerhard,
Ich geb dir mal (kurz) meinen Quellcode.
Danke im Voraus für deine Hilfe Embarassed
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

BeitragSa, Sep 04, 2004 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo?
 

Gerhard

BeitragSa, Sep 04, 2004 9:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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()

flexo

Betreff: ---

BeitragSa, Sep 04, 2004 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
hi, mal eben ne kurze Frage Zwischendurch (bin relativ neu mit BB dabei)
kann mir kurz mal wer die vier befehle erklären? Embarassed
(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.
 

Timo

Betreff: Re: ---

BeitragSa, Sep 04, 2004 12:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink

flexo

Betreff: ---

BeitragSa, Sep 04, 2004 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed Ja, ich hätte in der online-hilfe nachschaun solln, aber danke!
So weiter mit dem alten thema =)
Du bist eizigartig - genau wie jeder andere auch.

zirri

BeitragSa, Sep 04, 2004 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 04, 2004 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo soll der neue Level sonst herkommen?

zirri

BeitragSa, Sep 04, 2004 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Sep 04, 2004 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Sep 05, 2004 10:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Embarassed

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

BeitragSo, Sep 05, 2004 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group