Nächste Level Laden in BB2D

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

bruce185

Betreff: Nächste Level Laden in BB2D

BeitragSa, Mai 07, 2005 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
also ich habe ein problem, ich habe schon hier im forum nach das wo ich suche gesucht, habe aber nichs richtiges gefunden, und zwar habe ich ein Spiel Programmier "Heiße Drath" und wenn ich am ziel bin das dann das 2te level gestartet wird, ich habe das mit Kollisionsabfrage probiert, wenn ich dan am ziel bin dan startet zwar das 2te level, aber dan wechselt es sich wieder in level 1 zurück, kann man das vieleicht auch anders machen, für jede hilfe bin ich euch sehr dankbar.

MFG Christian

Sir Dan

BeitragSa, Mai 07, 2005 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeig mal deinen Code!
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

bruce185

BeitragSa, Mai 07, 2005 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Graphics 700,500,16,2
SetBuffer BackBuffer()

HidePointer

AppTitle \"Mein Spiel\"

mouse = LoadImage(\"kugel.bmp\")
MaskImage mouse,255,0,255

level1 = LoadImage(\"level1.bmp\")
MaskImage level1,255,0,255

level2 = LoadImage(\"level2.bmp\")
MaskImage level2,255,0,255

bonus = LoadImage(\"bonus.bmp\")
MaskImage bonus,255,0,255

menu = LoadImage(\"menu.bmp\")
AutoMidHandle 1
MoveMouse 25,25

While Not KeyHit(1)
ClsColor 0,0,255
If ImagesCollide(mouse, MouseX(), MouseY(), 0, level1, a, b, 0) Then
Text 10,10, \"Fehler\"
MoveMouse 25,25
EndIf

DrawImage level1,a,b
DrawImage bonus,c+249,d+134

DrawImage mouse, MouseX(),MouseY()


Flip
Cls
Wend
End


der code wo das 2te level gestartet wird habe ich wieder rausgenommen Very Happy

ich danke dir schonmal

Sir Dan

BeitragSa, Mai 07, 2005 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Zur übersichtlichkeit, würde ich das mit den drawimage vor imgescollide packen.

Nun zu deinem Prob:
Erstell doch noch eine array, das die level beinhaltet
und dann musst du nur noch prüfen, ob das Zielfeld erreicht ist
das aktuelle level speicherst du z.B.: in aktuelles_lvl
BlitzBasic: [AUSKLAPPEN]

jetzt = 1
Dim level(anzahl)
For i = 0 To anzahl
level(i) = LoadImage(\"level\"+i+\".bmp\")
Next
aktuelles_lvl = level(1)
While Not KeyHit(1)
;(...)
DrawImage aktuelles_lvl,a,b
If ImageRectOverlap(rechteck,zielfeld_x,zielfeld_y,breite,hoehe,mouse,MouseX,MouseY) Then aktuelles_lvl = level(jetzt +1): jetzt = jetzt+1
;(...)
Wend
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.
  • Zuletzt bearbeitet von Sir Dan am Sa, Mai 07, 2005 20:04, insgesamt einmal bearbeitet

bruce185

BeitragSa, Mai 07, 2005 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke dir für deine hilfe, du hast mir echt weitergeholfen, weil das probiere ich schon ewig Very Happy

MFG Christian

bruce185

BeitragSa, Mai 07, 2005 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo nocheinmal

ich verstehe das nicht ganz, es funktioniert nicht kannst du vieleicht mal den gesamte code posten, würde mich sehr freuen, danke schonmal.

MFG Christian

bruce185

BeitragSa, Mai 07, 2005 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
achso, du meinst doch mit eine Bild datei wo sich mehrere levels befinden mit jeweils gleiche größe wie mit einer animation oder habe ich da was falsch verstanden?? Very Happy

Sir Dan

BeitragSa, Mai 07, 2005 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst es auch mit einem animimage machen(mit mehreren frames),
aber ich meinte es so, dass du ein array (mit dim) öffnest und in jedes Feld ein anderes level speicherst [siehe code]
edit: Kopier doch einfach mal meinen Code in dein Prog und nimm das weg, was du schon in deinem Code stehen hast.(Pass aber auf, dass das,was vor meiner Hauptschleife steht auch vor deiner ist) Ich könnte dir natürlich den ganzen Code posten, aber dann lernst du nichts dabei. Very Happy
selber ausprobieren, wenn was nicht geht. Die community ist eigentlich nur für denkanstöße da(eigentlich...)
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.
  • Zuletzt bearbeitet von Sir Dan am Sa, Mai 07, 2005 20:16, insgesamt einmal bearbeitet

bruce185

BeitragSa, Mai 07, 2005 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du mir vieleicht einen tip geben wie ich das wie mit einer anim hinbekomme, wäre dir sehr dankbar, ich arbeite ja gerade das buch von
Hack'n Play Spiele programmieren durch, aber da steht nichts drinne mit levels laden, ich möchte das gerne mit ein Bild hinbekommen wo mehrere levels drinn sind, ich danke dir schonmal für deine hilfe Razz

Sir Dan

BeitragSa, Mai 07, 2005 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
levels = LoadAnimImage(\"levels.bmp\",breite,hoehe,0,anzahl)
frame = 0;also level 1
;Schleifenanfang

DrawImage levels,a,b,frame
If ImageRectOverlap(rechteck,zielfeld_x,zielfeld_y,breite,hoehe,mouse,MouseX,MouseY) Then
frame = frame +1;Vorsicht kein Zeilenumbruch machen


editiert
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.
  • Zuletzt bearbeitet von Sir Dan am Sa, Mai 07, 2005 20:42, insgesamt einmal bearbeitet

bruce185

BeitragSa, Mai 07, 2005 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe das jetzt so gemacht:

Code: [AUSKLAPPEN]
Graphics 800,600
SetBuffer BackBuffer()

;Das ziel bild laden
bonus = LoadImage("bonus.bmp")

;Das level laden
levels = LoadAnimImage("levels.bmp",644,450,0,4)

;Schleifen durchlauf
Repeat
Cls


DrawImage bonus,c,d

DrawImage levels,a,b,frame
If ImageRectOverlap(bonus,c,d,18,43,mouse,MouseX,MouseY) Then frame = frame + 1

Flip
Until KeyHit(1)
End


aber ich erhalte fehlermeldung "Too many parameters", habe ich da was falsch gemacht, bitte um antwort, danke schonmal Embarassed

Sir Dan

BeitragSa, Mai 07, 2005 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
bonus ist ein bild, deswegen kannst du hier nicht imagerectoverlap nehmen, sondern imagesoverlap
edit: lass imagerectoverlap stehen und wechsel das bonus in diesem befehl mit irgend einer anderen variablen aus z.B.: rechteck
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

bruce185

BeitragSa, Mai 07, 2005 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
so, ich habs hinbekommen, ich hab das mit ImageCollide gemacht, aber noch ein kleine frage hätte ich, wenn ich das bild Bonus berühre, wie kann ich dan das machen das es wieder gelöscht wird also vom speicher wieder entfernt wird, geht das oder geht das nicht?

Sir Dan

BeitragSa, Mai 07, 2005 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
FreeImage bonus

Ich hoffe du meinst das
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

bruce185

BeitragSa, Mai 07, 2005 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
das funktioniert nicht, ich erhalte diese fehlermeldung, Image does not exist, die datei kann nicht gefunden werden, oder da ist irgend etwas faul oder Rolling Eyes

Sir Dan

BeitragSa, Mai 07, 2005 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Am besten du zeigst nochmal den ganzen aktuellen Code, weil beim alten Code sollte es eigentlich functionieren
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

bruce185

BeitragSa, Mai 07, 2005 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 800,600
SetBuffer BackBuffer()

;Das aktuelle Mauszeiger verschwinden lassen
HidePointer

;Maus position festlegen
MoveMouse 50,50

;Die Maus bild speichern
mouse = LoadImage("kugel.bmp")
MaskImage mouse,255,0,255


;Das ziel bild speichern
bonus = LoadImage("bonus.bmp")
MaskImage bonus,255,0,255

;Das level speichern
levels = LoadAnimImage("level.bmp",644,450,0,4)
MaskImage levels,255,0,255

;Schleifen durchlauf
Repeat
Cls

;;Das Level laden
DrawImage levels,a,b,frame

;Die Maus bild laden
DrawImage mouse,MouseX(), MouseY()

;Das ziel bild laden
DrawImage bonus,c+409,d+34

If ImagesCollide(mouse,MouseX(), MouseY(),0, bonus,c+409,d+34,0) Then
frame = frame + 1
MoveMouse 50,50
FreeImage bonus
EndIf

Flip
Until KeyHit(1)
End


das ist nocht nicht ganz fertig, da fehlt noch einiges Wink

Sir Dan

BeitragSa, Mai 07, 2005 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
das freeimage muss nach deiner hauptschleife stehen. Was du aber willst, ist es wahrscheinlich, dass das Bild bonus nicht mehr angezeigt wird.
das machst du wie folgt
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600 
SetBuffer BackBuffer()

;Das aktuelle Mauszeiger verschwinden lassen
HidePointer

;Maus position festlegen
MoveMouse 50,50

;Die Maus bild speichern
mouse = LoadImage(\"kugel.bmp\")
MaskImage mouse,255,0,255


;Das ziel bild speichern
bonus = LoadImage(\"bonus.bmp\")
MaskImage bonus,255,0,255

;Das level speichern
levels = LoadAnimImage(\"level.bmp\",644,450,0,4)
MaskImage levels,255,0,255
zustand = False
;Schleifen durchlauf
Repeat
Cls

;;Das Level laden
DrawImage levels,a,b,frame

;Die Maus bild laden
DrawImage mouse,MouseX(), MouseY()

;Das ziel bild laden
If zustand = False DrawImage bonus,c+409,d+34

If zustand = False If ImagesCollide(mouse,MouseX(), MouseY(),0, bonus,c+409,d+34,0) Then
MoveMouse 50,50
zustand = True
EndIf
If zustand = True
If KeyHit(15) ; Tab drücken, um neues level zu laden
frame = frame + 1
zustand = False
EndIf
EndIf
Flip
Until KeyHit(1)
FreeImage bonus ;um den Speicher zu entlasten
End
(\_/)
(O.o)
(> <) This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

bruce185

BeitragSa, Mai 07, 2005 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
das war nicht so einfach aber es hat geklappt, ich bin dir sehr dankbar für deine hilfe, ach nochwas ist das Buch für den einstieg gut das was ich schon vorhin erwähnt habe "Hack'n Play Spiele programmieren" ich danke dir schonmal.

MFG Christian

bruce185

BeitragSo, Mai 08, 2005 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry das ich schon wieder nerv, aber da gibs ein problem, und zwar wenn das zweite level gestartet wird und ich mit dem kugel ein bisschen runter gehe dann muss ich wieder von vorne beginnen da ist irgend was faul, ich glaube dass das erste level irgendwo noch im hintergrund ist, das muss man doch irgendwie hinbekommen oder Rolling Eyes
ich danke dir schonmal

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group