RpG ( nächster lvl oder kleines window öffnen )

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

kai

Betreff: RpG ( nächster lvl oder kleines window öffnen )

BeitragMi, Mai 03, 2006 0:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Alo ich hab mir mal vorgenommen ein kleines RpG Spiel zu programmieren aber ich bekomme das nicht hin den neuen lvl zu laden !!
Ich habe für jeden lvl ne exe erstellt aber dann hat man ja nacher unten in der Taskleite 100derte von programmen geöffnet !!
Also lautet meine Frage wie ich das besser machen kann !!
Und wie ich ein Kleines zusätzliches window öffnen kann z.B. für einen shop in welchem man Waffen kaufen kann !!
Lebe deine Träume .. aber Träume nicht dein Leben !!

X-Calibur

BeitragMi, Mai 03, 2006 1:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
das mit den mehreren exen schlag dir mal schnell aus dem Kopf da bereits bei gleichzeitiger Ausführung von nur 2 bb.exen beide stark verlangsamt werden.

Pack am besten jedes Level in eine eigene Funktion. Die Variablen die du im Gesammten Programm benötigst deklarierst du als Global.

Idealerweise werden Leveldaten aus z.B. einer Textdatei nachgeladen.

mfg cali

Firstdeathmaker

BeitragMi, Mai 03, 2006 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Kai: Könntet du mal sagen wie deine Level denn so aufgebaut sind? Einfach Tilemaps oder wie?

@ X-Calibur: Jedes neue Level in eine eigene Funktion? Hört sich auch sehr merkwürdig an.


Vielleicht wäre es am einfachsten, wenn du, falls du ein Level wie eine Tilemap hast, du ein globales Dim-Feld hast, und dir drei Funktionen schreibst:

Function Level_Load(Pfad$)
Damit lädst du die Daten aus einer Datei deren Format du dir vorher genau ausgedacht hast in dein Dim Feld u.s.w.

Function Level_Process()
Damit lässt du alle wichtigen Prozesse des Levels berechnen, eventuell machst du das auch nicht mit nur einer Funktion sondern hast das in deine Program- oder Spielschleife integriert.

Function Level_Kill()
Damit löscht du das Level wieder, gibst alle Grafiken die es benötigt hat frei e.t.c.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

kai

BeitragMi, Mai 03, 2006 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Erst mal Danke für die Antworten !!
Ich hab mal den ersten lvl zum durchgucken hingeklatscht ^^


Code: [AUSKLAPPEN]
Graphics 640,480,16,1

Global char
Global Name$

Global ch1
Global ch2

tileset = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\sch.bmp",16,16,0,15)


c1 = LoadImage("gfx\Nr.2.bmp")
c2 = LoadImage("gfx\Nr.3.bmp")


char = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\player1.bmp",16,16,0,8)
ch1 = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\player2.bmp",16,16,0,8)
ch2 = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\player3.bmp",16,16,0,8)

m = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\m.bmp",16,16,0,1)


;px Variable des Spielers
px = 12
;py Variable des Spielers
py = 12
;Direckt move = 1 damit die Figur auch am Anfang sichbar ist
move = 1

Dim map(40,40)

;Legende:
; 0 = Wiese
Data 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
Data 6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,1,1,0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,1,1,0,2,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,1,1,0,0,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,4
Data 6,6,1,1,0,0,8,8,8,8,0,0,0,0,0,8,8,8,8,8,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,4
Data 6,6,1,1,0,0,8,8,0,0,0,0,0,0,0,8,3,0,0,8,0,0,8,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,1,1,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,8,0,0,8,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,1,1,0,0,0,0,0,0,0,0,0,8,8,8,8,0,0,8,0,0,8,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,0,0,8,0,0,8,0,0,0,0,1,1,0,0,0,0,0,8,0,0,0,0,0,8
Data 6,6,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,0,0,8,0,0,8,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,8,8,8,8,8,0,0,0,1,1,8,8,8,0,0,8,0,0,8,0,0,0,0,1,1,0,8,0,8,0,8,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,8,0,0,0,1,1,8,8,8,0,0,0,0,0,8,0,0,0,0,1,1,0,8,8,8,0,8,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,8,0,0,0,1,1,8,8,8,0,0,0,0,0,8,0,0,0,0,1,1,0,8,0,8,0,8,0,0,0,0,0,8
Data 6,6,8,8,8,8,0,0,8,8,0,0,1,1,8,8,8,8,8,8,8,8,8,0,0,0,0,1,1,0,12,12,12,12,12,12,12,0,0,0,8
Data 6,6,8,8,8,8,0,0,8,0,0,0,1,1,8,8,8,8,8,8,8,8,8,0,0,0,0,1,1,0,9,11,9,9,9,11,9,0,0,0,8
Data 6,6,8,8,8,8,0,0,8,0,0,0,1,1,8,8,8,8,8,8,8,8,0,0,0,0,0,1,1,0,9,9,9,10,9,9,9,0,0,0,8
Data 6,6,8,8,0,0,0,0,8,0,0,0,1,1,0,8,8,8,8,8,8,0,0,0,0,0,0,1,1,1,1,1,1,1,8,0,0,0,0,0,8
Data 6,6,8,8,0,0,0,0,8,0,0,0,1,1,0,0,8,8,8,8,0,0,0,0,0,0,0,1,1,8,8,8,8,8,8,0,0,0,0,0,8
Data 6,6,0,0,0,0,8,8,8,0,0,0,1,1,0,0,0,8,8,8,0,0,0,0,0,0,0,1,1,8,8,0,0,0,8,0,0,0,0,0,8
Data 6,6,0,0,0,0,8,8,0,0,0,0,1,1,0,0,0,0,8,0,0,0,0,0,0,0,0,1,1,8,0,0,0,8,0,0,0,0,0,0,8
Data 6,6,0,0,8,8,8,8,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,8,8,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,8,8,8,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,8,8,8,0,0,8,8,8,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,8,8,8,8,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,8,8,8,8,8,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,8,0,0,8,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,8,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,8,0,0,0,0,0,0,8,0,0,0,8,0,8,8,8,8,0,8,8,8,8,0,8,0,8,8,8,8,0,0,0,0,8,8,0,8
Data 6,6,0,0,8,0,0,0,0,0,0,8,8,0,8,8,0,8,0,0,8,0,8,0,0,8,0,0,0,8,0,0,8,0,0,0,0,0,8,0,8
Data 6,6,0,0,0,0,0,0,0,8,0,8,0,8,0,8,0,8,0,0,8,0,8,0,0,8,0,8,0,8,0,0,8,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,8,8,8,8,0,8,8,8,8,0,8,0,8,0,0,8,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,8,0,0,8,0,8,8,0,0,0,8,0,8,0,0,8,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,8,0,0,8,0,8,0,8,0,0,8,0,8,0,0,8,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,8,0,0,8,0,8,0,0,8,0,8,0,8,8,8,8,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
Data 6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8

 


For y = 0 To 40
For x = 0 To 40

Read map(x,y)
Next
Next





Repeat
SetBuffer BackBuffer()
Cls

;ESC-Taste zum Beenden
If KeyDown(1) Then End


For y = 0 To 40
For x = 0 To 40
DrawBlock tileset,x*16-scrollx,y*16-scrolly,map(x,y)
Next
Next

;Spieler
;#####################################################################################

Dim feld(4)
feld(1) =0
feld(2) =2
feld(3) =4
feld(4) =6


;einfach wenn tastendruck dann
If KeyDown(208) Then ; runter
;frame des Spielers festlegen
f = feld(1) : feld(1) = feld(1) + 1
;wenn die position des spielers (px,py+1) mit einem tile kollidiert, dass in der array einen höeren
;wert als 4 hat geht der if-satz nicht weiter und die figur bleibt stehen 
;die 4 ist gleichzeitig das frame des tilesets
If map(px,py+1) < 6 Then
;die figur wird um ein tile bewegt
py = py + 1 : VWait :VWait : VWait
;die variable scrollx/y wird verändert und beim nächsten mal
;wenn die hauptschleife durchlaufen wird. malt man die karte halt
;an der position x/y-scrollx/y gemalt
;achja und - 32 weil die figur sich auch nur um 32 pixel
;bewegt.
scrolly = scrolly + 16
;überträgt die spielerkoordinaten auf die x und y variablen der map und malt unsere figur
move = 1
End If
End If

If KeyDown(200) Then ;nach oben
f = feld(4) : feld(4) = feld(4) + 1
If map(px,py-1) < 6 Then
py = py - 1  : VWait :VWait : VWait
scrolly = scrolly - 16
move = 1 :
End If
End If

If KeyDown(203) Then
f = feld(3) : feld(3) = feld(3) + 1
If map(px-1,py) < 6 Then
px = px - 1 : VWait :VWait : VWait
 scrollx = scrollx - 16
move = 1
End If
End If

If KeyDown(205) Then
f = feld(2) : feld(2) = feld(2) + 1
If map(px+1,py) < 6 Then
px = px + 1 : VWait :VWait : VWait
scrollx = scrollx + 16
move = 1
End If
End If


;Schalter
;#####################################################################################
;wenn man die leertaste drückt
If KeyHit(57) Then
 
;und die spielerposition auf den hebel-tile befindet
If map(px,py) = 3 Then
;dann wird die gesamte karte eingelesen und alle tür-tiles in graß-tiles
;umgewandelt
Locate 200,200
Print "Und es öffnete sich eine Tür !!" Delay 2000

For y = 0 To 40
For x = 0 To 40
If map(x,y) = 10 Then
map(x,y) = 5
End If
Next
Next
End If
End If


;Ggegner
; ####################################################################################




;Screeenshooot
;####################################
;wenn man die taste drückt
If KeyHit(88) Then ; F 12
SaveBuffer(FrontBuffer(),"shot" + Str$(Shot) + ".bmp")
Shot = Shot + 1
For y = 0 To 40
For x = 0 To 40
Next
Next
EndIf




;wenn move = 1 dann übertrage x auf px*32(*32 da die array so klein ist bei *1 oder *2 kommt schnell
;(array index out of bouds) und das wollen wir nicht wenn die koordinaten des spielers mit den
;koordinaten der map in verbindung gebracht worden sind, malen wir die figur
;auf der position x,y wir wollen die figur ja mit der map kollidieren lassen und nicht mit dem Nichts
;und da die map nun mal in die x und y koordinaten gespeichert wurden müssen wir das auch so
;berücksichtigen.
If move = 1 Then x = px * 16: y = py * 16:DrawImage  char,x-scrollx,y-scrolly,f:  Delay 50

;Level1
;##########################################################

If map(px,py) = 4 Then
Locate 260,185
Print "Level 1"
Locate 260,200
Print "Das Tahl der beginner "
Delay 6000
ExecFile "Level\Teil1.exe"
End If


;Haus
;###########################################################
If map(px,py) = 5 Then
Locate 260,185
Print "Shop off Novice"
Locate 260,200
Print "Alles End billig mann ^^"
Delay 6000
ExecFile "Level\shop.exe"
End If



;flippen und zum anfang zurück
Flip
Forever
Lebe deine Träume .. aber Träume nicht dein Leben !!

kai

BeitragMi, Mai 03, 2006 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Firstdeathmaker :

Ach ja und kannst du mir fielleicht mal ein Beispiel mit dem lvl laden schicken ich weis net aber ich blick da net durch !!
Hab mir jetzt extra schon son Buch gekauft und das ist da net drinnen erklärt !!
Lebe deine Träume .. aber Träume nicht dein Leben !!

kai

BeitragMi, Mai 03, 2006 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
MEinst du das so ??
Graphics 640,480,16,1
SetBuffer BackBuffer()
; Laden der Dateien
;#########################################
tileset = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\sch.bmp",16,16,0,15)

; Level Laden
;#########################################

Dim map(40,40)
leveldatei = ReadFile("F:\Blitz3D\lvl.txt")

For y = 0 To 40
A$ = ReadLine(leveldatei)
For x = 0 To 40
Level$(y,x) = Mid$ ( A$,x+1,1)

Next
Next
CloseFile leveldatei

; Level zeichnen
;##########################################
Repeat


For y = 0 To 40
For x = 0 To 40
Select Level$(y,x)
Case "1"
DrawBlock tileset,x*16-scrollx,y*16-scrolly,0,5,16,16
Case " "
DrawBlock tileset,x*16-scrollx,y*16-scrolly,0,0,16,16
End Select
Next
Next
Flip



Until KeyHit(1)
End
Lebe deine Träume .. aber Träume nicht dein Leben !!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group