Hauptmenü

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Flori-D

Betreff: Hauptmenü

BeitragMi, Dez 24, 2003 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.Was geht an dem Code nicht?
Ich kriege immer die fehlermeldung "Image does not exist", das kann aber nicht sein da alle Bilder in dem gleichen Ordner sind wie der Code.

Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")
hinter = LoadImage ("stars.bmp")
tiles = LoadImage ("blocks1.bmp")
maus = LoadImage ("pointer.bmp")
font = LoadFont("Times New Roman", 40, 1, 0, 0)
SetFont font


Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
X = 305
Y = 420



;Menüpunkte erzeugen

stein = CreateImage(32,32)
SetBuffer ImageBuffer(stein)
DrawImageRect tiles, 0, 0, 444, 308, 32, 32
ScaleImage stein, 8, 2

; Menüsteine erzeugen

aktivstein = CreateImage(32,32)
SetBuffer ImageBuffer(aktivstein)
DrawImageRect tiles, 0, 0, 2, 342, 32, 32
ScaleImage aktivstein, 8, 2

; Menü bezeichnen

Dim MenuZeile(3) : Dim MenuName$(3)
MenuZeile(1) = 100 : MenuName$(1) = "Start"
MenuZeile(2) = 200 : MenuName$(2) = "Einstellungen"
MenuZeile(3) = 300 : MenuName$(3) = "Ende"

;
; 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 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 Start()
 Repeat
  Cls
 ;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H ;hier kommt die Fehlermeldung.
 DrawImage schiff, X,Y

;Punkte Anzeige
Text 400,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 EndIf
Next

; Pfeiltasten abfragen
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y)  Then
PlaySound(trefferton)
Alien(I,0) = -1
Print ("Game Over")
Delay 9000000000000
EndIf
Next





; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 Flip
Until KeyHit(1)

  Flip
 Until KeyHit(1)
End Function
BB is Macht!

Homepage: www.flori-d.de
 

konstantin

BeitragMi, Dez 24, 2003 12:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die Bilder Global setzen.

Flori-D

BeitragMi, Dez 24, 2003 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee,ohne Hauptmenü gehts ja.Nur mit Spinnt er.
BB is Macht!

Homepage: www.flori-d.de
 

konstantin

BeitragMi, Dez 24, 2003 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuchs mal
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
global hinter = LoadImage("stars.bmp")
global schiff = LoadImage("R4.bmp")
global alienbild = LoadImage("Rock1.bmp")
global rakete = LoadImage("torpedo0016.bmp")
global explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
global schusston = LoadSound("soundfx11.wav")
global trefferton = LoadSound("soundfx25.wav")
global hinter = LoadImage ("stars.bmp")
global tiles = LoadImage ("blocks1.bmp")
global maus = LoadImage ("pointer.bmp")
font = LoadFont("Times New Roman", 40, 1, 0, 0)
SetFont font


Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
X = 305
Y = 420



;Menüpunkte erzeugen

stein = CreateImage(32,32)
SetBuffer ImageBuffer(stein)
DrawImageRect tiles, 0, 0, 444, 308, 32, 32
ScaleImage stein, 8, 2

; Menüsteine erzeugen

aktivstein = CreateImage(32,32)
SetBuffer ImageBuffer(aktivstein)
DrawImageRect tiles, 0, 0, 2, 342, 32, 32
ScaleImage aktivstein, 8, 2

; Menü bezeichnen

Dim MenuZeile(3) : Dim MenuName$(3)
MenuZeile(1) = 100 : MenuName$(1) = "Start"
MenuZeile(2) = 200 : MenuName$(2) = "Einstellungen"
MenuZeile(3) = 300 : MenuName$(3) = "Ende"

;
; 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 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 Start()
 Repeat
  Cls
 ;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H ;hier kommt die Fehlermeldung.
 DrawImage schiff, X,Y

;Punkte Anzeige
Text 400,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 EndIf
Next

; Pfeiltasten abfragen
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y)  Then
PlaySound(trefferton)
Alien(I,0) = -1
Print ("Game Over")
Delay 9000000000000
EndIf
Next





; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 Flip
Until KeyHit(1)

  Flip
 Until KeyHit(1)
End Function

Flori-D

BeitragMi, Dez 24, 2003 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Mut dem Global komme ich nicht mal ins Hauptmenü der fehler ist da "Duplicate indentifer...".Mit Global gehts nich.Aber eigentlich müsste vom rein logischen her mein Menü doch gehen.(Haare ausreis,Haare ausreis....)
BB is Macht!

Homepage: www.flori-d.de
 

newkev

BeitragMi, Dez 24, 2003 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ein kleiner Auszug aus der Online hilfe, die sehr zu empfelen ist:

Diese Fehlermeldungen erscheinen, wenn ein Bild im Grafikspeicher nicht gefunden werden konnte. Dafür gibt es mehrere Gründe:

-Ein Bild konnte auf dem Datenträger nicht gefunden werden
-Die Grafikdatei ist fehlerhaft
-Der Grafikspeicher wurde mit GRAPHICS gelöscht
-Wert der Variable "Bild" wurde gelöscht
-Die Variable "Bild" hat einen falschen Namen
-Die Variable "Bild" wurde nicht als global definiert

Flori-D

BeitragMi, Dez 24, 2003 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, mann hast nicht reichtig gelesen oder wie?
Es geht ohne Hauptmenü nr mit nicht. Rolling Eyes
BB is Macht!

Homepage: www.flori-d.de

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMi, Dez 24, 2003 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
aufgefallen ist mir
das du 2 mal Hinter ladest,
die darf natürlich nur einmal definiert werden
sonst gibt es fehlerCode: [AUSKLAPPEN]
global hinter = LoadImage ("stars.bmp")
ubd dann nochmal Code: [AUSKLAPPEN]
global hinter = LoadImage ("stars.bmp")

da solltest du dann nur falls erforderlich Code: [AUSKLAPPEN]
hinter = LoadImage ("stars.bmp")
so laden ohne diese dann nochmal als global zu machen
[BB2D | BB3D | BB+]

Flori-D

BeitragMo, Dez 29, 2003 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt selbst ein Bisschen dran rumgebastelt.Kann einer von euch den Code mal Testen?Müsste zwar laufen läuft aber bei mir nr extrem langsam.Mit dem Delay hängts nicht zusammen soviel schon mal vorweg.(ihr hab alle Bilder aser das Ramschiff auf der Buch-CD)
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")
tiles = LoadImage ("blocks1.bmp")
maus = LoadImage ("pointer.bmp")
font = LoadFont("Times New Roman", 40, 1, 0, 0)
SetFont font


Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
X = 305
Y = 420



; 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"

;
; 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 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 Start()
 Repeat
  Cls
 
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")


;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y

;Punkte Anzeige
Text 400,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 EndIf
Next

; Pfeiltasten abfragen
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y)  Then
PlaySound(trefferton)
Alien(I,0) = -1
Print ("Game Over")
Delay 9000000000000
EndIf
Next





; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 Flip
Until KeyHit(1)

  Flip
 Until KeyHit(1)
End Function
BB is Macht!

Homepage: www.flori-d.de

Maniac

BeitragMo, Dez 29, 2003 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Gleich mal vorweg ich leg mom ne schaffenspause in BB ein (programmier in DB und C) deshalb könnte ich mnich irren Laughing

Hehe du ladest deine Bilder in der main schleife^^
Code: [AUSKLAPPEN]
Function Start()
 Repeat
  Cls
 
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")
[..]


Tja und wieso machst du deine hauptschleife in ner function? t.t
Wäre nicht das besser?Code: [AUSKLAPPEN]
repeat
lal()
lol()
lul()
until keyhit(1)
zb.?

Das jetzt was mir so aufgefallen ist..
User posted image
^^

Flori-D

BeitragDi, Dez 30, 2003 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
So.Jetzt läufts fast so wie ichs will, nur mein Raumschiff bleibt immer da wo ich am Angang gezeichnet habe.Wenn ich also vorwärts drücke
bewegt es sich um 1 und geht dann wieder an den Ausgangspunkt zurück.
Was kann ich dagegen machen?

Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")
tiles = LoadImage ("blocks1.bmp")
maus = LoadImage ("pointer.bmp")



Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
X = 305
Y = 420



; 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"

;
; Hauptmenü-Schleife
;

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 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 Start()
 Repeat
  Cls
 
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")


;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y
 X = 305
 Y = 200

;Punkte Anzeige
Text 400,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 EndIf
Next

; Pfeiltasten abfragen
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y)  Then
PlaySound(trefferton)
Alien(I,0) = -1
Print ("Game Over")
Delay 90000000000
EndIf
Next





; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 

  Flip
 Until KeyHit(1)
Until KeyHit(1)
End Function
BB is Macht!

Homepage: www.flori-d.de

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 30, 2003 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
da isser der Fehler Very Happy
Code: [AUSKLAPPEN]

Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y
 X = 305  >hier setzt du die position immer wieder zurück,
 Y = 200   >sollte vor der Schleife stehen als startpunkt

[BB2D | BB3D | BB+]

Flori-D

BeitragDi, Dez 30, 2003 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was soll ich jetzt mit dem X machen?
Ich brauch das doch.
BB is Macht!

Homepage: www.flori-d.de

Flori-D

BeitragDi, Dez 30, 2003 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Es is doch zum Schreien! Mad
Jetzt kann ich nur nach rechts lenken. Evil or Very Mad
Ich krieg ne kriese! Twisted Evil
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")
tiles = LoadImage ("blocks1.bmp")
maus = LoadImage ("pointer.bmp")



Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
X = 305
Y = 420



; 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"

;
; Hauptmenü-Schleife
;

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 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 Start()
 Repeat
  Cls
 
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")


;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y
 Y = 200
 

;Punkte Anzeige
Text 400,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 EndIf
Next

; Pfeiltasten abfragen
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y)  Then
PlaySound(trefferton)
Alien(I,0) = -1
Print ("Game Over")
Delay 90000000000
EndIf
Next





; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 

  Flip
 Until KeyHit(1)
Until KeyHit(1)
End Function
BB is Macht!

Homepage: www.flori-d.de

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 30, 2003 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y
 Y = 200   <den muste auch weg machen und auserhab der schleifesetzten
weil du doch die Positionen veränderst bei jedem durchlauf,
dann malste da schiff und setzt es wieder auf die alte position
und das soll doch nicht so sein ODER?
[BB2D | BB3D | BB+]

Flori-D

BeitragDi, Dez 30, 2003 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
So hab das jetzt auch weggemacht.Jetzt läufts RASEND schnell und das Raumschiff ist immer Links oben und knall gleich nach dem Start mit den Asteroid zusammen.

Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")
tiles = LoadImage ("blocks1.bmp")
maus = LoadImage ("pointer.bmp")



Dim Rak(100,2)
Dim Alien(50,2)
Dim AlienExplodiert(50,1)
X = 305
Y = 420



; 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"

;
; Hauptmenü-Schleife
;

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 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 Start()
 Repeat
  Cls
 
hinter = LoadImage("stars.bmp")
schiff = LoadImage("R4.bmp")
alienbild = LoadImage("Rock1.bmp")
rakete = LoadImage("torpedo0016.bmp")
explosion = LoadAnimImage("explodeA.bmp", 60,46, 0,6)
schusston = LoadSound("soundfx11.wav")
trefferton = LoadSound("soundfx25.wav")


;
; Hauptschleife
;

Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y
 
 

;Punkte Anzeige
Text 400,10, "Sie haben "+punkte+" Punkte
Punkte = Punkte +1


; Schuß-Test
 If KeyHit(57) Then
 Schuss = Schuss + 1
 If Schuss = 101 Then Schuss = 1
 Rak(Schuss,0) = 1
 Rak(Schuss,1) = X+10
 Rak(Schuss,2) = Y-19
 PlaySound(schusston)
EndIf

; ggf. Raketen zeichnen
 For I=1 To 100
  If Rak(I,0) = 1 Then
   DrawImage rakete, Rak(I,1), Rak(I,2)
   Rak(I,2) = Rak(I,2) - 10
 EndIf
Next

; Pfeiltasten abfragen
 If KeyDown(200) = 1 Then Y = Y - 1
 If KeyDown(208) = 1 Then Y = Y + 1
 If KeyDown(205) = 1 Then X = X + 2
 If KeyDown(203) = 1 Then X = X - 2


; Rand-Überschreitung verhindern
 If X < 0 Then X = 0
 If X > 609 Then X = 609
 If Y < 0 Then Y = 0
 If Y > 449 Then Y = 449

; Kollision testen
 For I=1 To 100
  If Rak(I,0) <> 0 Then
   For J=1 To 50
    If ImagesOverlap(alienbild, Alien(J,1), Alien(J,2), rakete,Rak(I,1),Rak(I,2)) Then
     PlaySound(trefferton)
     Alien(J,0) = -1
    EndIf
   Next
  EndIf
 Next


; Explosion Alien zeichnen
  For I=1 To 50
   If Alien(I,0) = -1 Then
    If AlienExplodiert(I,1) + 100 < MilliSecs() Then
     AlienExplodiert(I,0) = AlienExplodiert(I,0) + 1
     AlienExplodiert(I,1) = MilliSecs()
     
If AlienExplodiert(I,0) = 6 Then
   AlienExplodiert(I,0) = 0
   AlienExplodiert(I,1) = 0
   Alien(I,0) = 0
  EndIf
 EndIf
 DrawImage explosion, Alien(I,1), Alien(I,2), AlienExplodiert(I,0)
 EndIf
Next


;Kollision Komet-Spieler
For I=1 To 50
If ImagesOverlap(alienbild, Alien(I,1), Alien(I,2), schiff ,X,Y)  Then
PlaySound(trefferton)
Alien(I,0) = -1
Print ("Game Over")
Delay 90000000000
EndIf
Next





; Alien-Steuerung
 For I=1 To 50
  If Alien(I,0) = 0 Then
   Alien(I,0) = Rand(100,400)
   Alien(I,1) = Rand(-20,640)
   Alien(I,2) = Rand(-100,0)
  EndIf
 
If Alien(I,0) <> -1 Then
  Alien(I,2) = Alien(I,2) + 1
  Alien(I,1) = 320 + Sin( Alien(I,2) ) * Alien(I,0)
EndIf
 
 If Alien(I,2) > 480 Then Alien(I,0) = 0

 If Alien(I,0) <> -1 Then DrawImage alienbild, Alien(I,1), Alien(I,2)
Next

 

  Flip
 Until KeyHit(1)
Until KeyHit(1)
End Function
BB is Macht!

Homepage: www.flori-d.de

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 30, 2003 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;
; Hauptschleife
;
x= 400; gehört vor die schleife----------------------------------
y= 500 ; sowie dieses----als startpunkt-----------------------------
Repeat
 Cls
 H = H+1
 If H=200 Then H=0
 TileBlock hinter, 0,H
 DrawImage schiff, X,Y
 
 

hatte ich aber schon vorhin reingeschrieben Very Happy
[BB2D | BB3D | BB+]

Flori-D

BeitragMi, Dez 31, 2003 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Daaaaaaaaaaanke!Es geht.Ich dachte schon ich werde zum Twisted Evil .
Aber jetzt bin ich er Very Happy .
BB is Macht!

Homepage: www.flori-d.de

Maniac

BeitragMi, Dez 31, 2003 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Das war ja eine schwere geburt^^
User posted image
^^

Flori-D

BeitragMi, Dez 31, 2003 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo haste recht. Laughing
BB is Macht!

Homepage: www.flori-d.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group