Spiel das Spiel mit Levels

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

zirri

Betreff: Spiel das Spiel mit Levels

BeitragDo, Aug 26, 2004 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.
Ich bin grad dabei meinen ersten Weltraum Shooter zu programmieren.
Leider hab ich zwei probleme und eine Frage.Ich starte das Spiel, aber das hauptmenü ist zuweit links. Hilfe. Ich hatte heute versucht mein Spiel als Installationsdatei zu verpacken. Ich habs mit Inno Setup gemacht. Aber wenn ich das Spiel installiert habe, erstellt er als Destop Icon eine Musikdatei.(Hab alle dateien inklusive Icon und Readmedatei korrekt angegeben) Und wie krieg ich das hin auf einem Computer das Spiel zu starten der kein BB hat.

Aber jetzt zu meiner Hauptfrage: Wie baue ich in mein Spielmehrere levels ein. Hintergründe für andere levels hab ich schon.
Danke im Voraus Very Happy

AppTitle "Space Master"
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\stars.bmp")
Global schusston = LoadSound("gfx\048.wav")
Global trefferton = LoadSound("gfx\ugh.wav")
PlayMusic("gfx\Spacefighter.mp3")
hinter = LoadImage ("gfx\stars.bmp")
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 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 > 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 = 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
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

Chester

BeitragDo, Aug 26, 2004 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein paar mehr Komentare wären nicht schlecht Rolling Eyes

The Yeti

BeitragDo, Aug 26, 2004 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab jetzt keine Lust, mir deinen Code durchzulesen, sry.
Aber auf einige Fragen kann ich eingehen:
1. Mach das Hauptmenü weiter nach rechts -.-
2. Mit Setups kenn ich mich nicht aus...
3. Sofern du nicht die Demo hast, gehst du oben auf "Program", machst das Häkchen bei "Debug enabled?" weg und gehst dann (ebenfalls unter "program") auf "Create Executable". Dann wird das Ganze zu einer .exe .
4. im simpelsten Fall setzt du hinter das Ende eines Levels den nächsten Level. Einfach als einzelne Programmabschnitte...

zirri

BeitragDo, Aug 26, 2004 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, aber ich weiß nicht genau mit welcher variablen ich das hauptmenü verschiebe und leider hab ich nur die Demo.

Bfox

BeitragDo, Aug 26, 2004 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Um das Menü weiter nach rechts zurücken, musst du nur die Zahlen erhöhen!
Das ist doch ganz logisch, oder ich versteh nicht ganz was du meinst!
Glauben ist Mangel an Wissen!

Chester

BeitragDo, Aug 26, 2004 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du wirst doch wohl wissen wie du das menu gemacht hast
Wenn du ein menu erstellst musst du doch ,egal wie dus erstellt hast, die Koordinaten der Komponeten oder des gesamten Menüs wissen. diese Korrdinaten veränderst du einfach.
Ich hab wenn du meinst das ging nich^^
dein Quelltext nich gelesen.Der is mir zu lang Very Happy

Kabelbinder

Sieger des WM-Contest 2006

BeitragDo, Aug 26, 2004 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Und noch ein Tipp zu dem Text-Befehl:

Mit zwei kleine Parametern am ende der Syntax kannst du den Text in x und y-Richtung zentrieren. Schau dir das mal an:

Code: [AUSKLAPPEN]
Graphics 640,480,16,1
Text 320,240,"Na, Bitte! Genau in der Mitte",1,1;Die Beiden Parameter
WaitKey
End

dann brauchst du nicht diese aufwendige schreibweise:
Code: [AUSKLAPPEN]
Text (640 - StringWidth( MenuName$(I) )) / 2, I*100 + 12, MenuName$(I)


Mit dem Punkt um den du den Text zentrierst, verschiebst du dann auch den Hauptmenü-Text.
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

DA

BeitragFr, Aug 27, 2004 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@The Yeti
Zitat:

3. Sofern du nicht die Demo hast, gehst du oben auf "Program", machst das Häkchen bei "Debug enabled?" weg und gehst dann (ebenfalls unter "program") auf "Create Executable". Dann wird das Ganze zu einer .exe .


Wieso Debug enabled?
Geht auch so!

Thx
DarkAngel
Deutscher Blitz Basic Chat
 

René Meyer

BeitragFr, Aug 27, 2004 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
"Sie sollten mit diesem Kapitel nicht zu früh beginnen. Sammeln Sie erst Erfahrungen mit kleinen Programmen und Beispielen, ehe Sie sich an ein richtiges Projekt wagen. Die auf den folgenden Seiten vorgestellten Spielegerüste sollen Ihnen helfen, ein Verständnis zu erlangen, wie Spiele funktionieren. Sie sollten nicht als Grundlage für Ihre Spiele dienen. Einen vorhandenen Quelltext zu nehmen und leicht abzuändern, das ist kein Programmieren. Arbeiten Sie mit dem Kapitel, ändern Sie getrost Zeilen – und beginnen Sie dann mit einem leeren Editorfenster. So sammeln Sie am besten Erfahrung."
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Hubsi

BeitragFr, Aug 27, 2004 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
DarkAngel hat Folgendes geschrieben:
Wieso Debug enabled?
Geht auch so!
Dann läuft aber auch in der fertigen Exe der Debugger mit, was das Proggi nicht unbedingt schneller macht Wink Bei anderen Editoren wird üblicherweise beim erstellen der Exe der Debugger automatisch ausgeschaltet, nicht aber beim Standardeditor.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

zirri

BeitragFr, Aug 27, 2004 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Leidef hab ich nur die BB Demo.
Weiß jemand wo ich die vollversion zu BB 2D billig herbekomme?

DA

BeitragFr, Aug 27, 2004 16:37
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.schreibfabrik.de/bb/kaufen.htm
Na ja, billig nicht aber was ist heut zu Tage schon billig?
Deutscher Blitz Basic Chat

rambo256

BeitragFr, Aug 27, 2004 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst dir,soweit ich weiß,auch für 20€ B2D bei www.shareit.com downloaden.
Asus F53z

Das Leben ist eine reine Konkatenation...

zirri

BeitragFr, Aug 27, 2004 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
danke.- Es kostet 35 €. Werd ich mir warscheinlich kaufen. Ist ja blöd immer nur was mit ner demo zu machen.
ps: kann mir jemand nochmal erklären wie man das spiel mit verschiedenen levels macht?

DA

BeitragFr, Aug 27, 2004 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Du löscht alles z.B. in einer Function und dan baust du das nächste Level auf.

z.B.

Code: [AUSKLAPPEN]

function levelzer()
cls
SpielerX = 0
SpielerY = 0
Leben = 5
Gegner = 5
drawimage Hintergrund, 0, 0
end function


(Nur ein Beispiel)
Deutscher Blitz Basic Chat
 

David

BeitragFr, Aug 27, 2004 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Kommt drauf an, wie deine Levels aufgebaut sind.
Bei den meisten Spaceshootern gibts ja nicht besonders viel zu berücksichtigen oder?

Du kannst Gegner per Zufall erscheinen lassen oder aber vordefinieren.
Wenn du letzteres haben willst, wäre es wohl das beste die Gegnerinformationen in einer Datei zu speichern und später wieder zu lesen.
Desweiteren stünde in der Datei der verwendete Hintergrund, die verwendetet Hintergrundmusik usw...

Musst dir halt ein Dateiformat überlegen in den du dich austoben kannst.
Evtl willst du ja gescriptet Ereignisse, was durchaus auch in der Datei stehen könnte.

@DarkAngel: wtf????

grüße
http://bl4ckd0g.funpic.de

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group