Hauptmenü ins Spiel
Übersicht

![]() |
zirriBetreff: Hauptmenü ins Spiel |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ich bin noch neu beim programieren. Deshalb kannst du das vielleicht ein bisschen genauer für einen anfänger erklären ![]() |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
du benutzt Variablen 2x
--> die Werte die du zuerstz drinne gespeichert hast, gehen verloren! |
||
between angels and insects |
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie krieg ich das weg? kann sich bitte jemand die mühe machen und den quelltext überarbeiten? | ||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
storzi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nenn die variablen anders ![]() statt alles x und y nenn die mausx, menux usw... |
||
http://www.splattergamez.de |
![]() |
zirri |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group