Hauptmenü ins Spiel

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

zirri

Betreff: Hauptmenü ins Spiel

BeitragDi, Aug 24, 2004 8:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi-
Ich hatte so etwas nicht gefunden dewege frag ich jetzt.
Ich wollte in mein Spiel ein Haupmenü einfügen, das hab ich auch schon fertig, aber ich schaffe es nicht wenn ich auf Spielstart drücke das das Spiel auch startet. Vielleicht könntet ihr mir ja mal helfen. Embarassed danke im Voraus. Hier hab ich meinen Queltext wo es schon funktoniert aber das raumschiff lässt sich nicht mehr steuern und der gegner fliegt gerade auf mich zu.

AppTitle "Shooter"
Graphics 640, 480
SetBuffer BackBuffer()

Global monster = LoadImage("player2.bmp")
Global player = LoadImage("spaceship3.bmp")
Global schussbild = LoadImage("bullet.bmp")
Global background = LoadImage("stars.bmp")
PlayMusic("\Spacefighter.mp3")
hinter = LoadImage ("stars.bmp")
tiles = LoadImage ("blocks1.bmp")
maus = LoadImage ("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()
Repeat
x=300
y=300
i=0
Cls

hintergrund()
steuerung()
schiesen()
gegner()
kollisionen()
spieler()
punkte()

Flip
Until KeyDown(1)
End Function


Function Einstellungen()
Repeat
Cls
Text 100,100, "Einstellungen"
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 background, 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 > 600 Then x = 600
If x < 0 Then x = 0
If y > 440 Then y = 440
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
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 = 3 Then
treffer = 0
punkte = punkte + 20
hoehe = Rnd(200,300)
pos_y = -10
EndIf

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

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

sbrog

BeitragDi, Aug 24, 2004 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
du setzt am anfang der spielschleife x und y immer auf 300.
Außerdem benutzt du x und y zusätzlich für die maus

zirri

BeitragDi, Aug 24, 2004 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich bin noch neu beim programieren. Deshalb kannst du das vielleicht ein bisschen genauer für einen anfänger erklären Question

Jan_

Ehemaliger Admin

BeitragDi, Aug 24, 2004 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
du benutzt Variablen 2x
--> die Werte die du zuerstz drinne gespeichert hast, gehen verloren!
between angels and insects

zirri

BeitragDi, Aug 24, 2004 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie krieg ich das weg? kann sich bitte jemand die mühe machen und den quelltext überarbeiten?

Jan_

Ehemaliger Admin

BeitragDi, Aug 24, 2004 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
nö, den überarbeitet keiner
x = 15+5
x = Variable

sozusagen, musst du eine Variable umbenenen (auch an allen stellen, wo du sie wieder abfragst)
between angels and insects

zirri

BeitragDi, Aug 24, 2004 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wenn ich die variable umbenenne ist doch der quelltext wieder falsch und wie kann ich das vermeiden das sich eine variable widerholt, kann man einen anderen befehl benutzn Question
 

storzi

BeitragDi, Aug 24, 2004 18:52
Antworten mit Zitat
Benutzer-Profile anzeigen
nenn die variablen anders Wink

statt alles x und y nenn die mausx, menux usw...
http://www.splattergamez.de

zirri

BeitragMi, Aug 25, 2004 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid , aber ich verstehe das immer noch nict. Ich habs versucht die umzunennen, aber da passiert irgendwie nichts. Der gegner fliegt immer noch gerade auf mich zu.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group