Programm Neustarten

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Azran

Betreff: Programm Neustarten

BeitragMi, Jan 06, 2010 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey leute
meine frage währe wie ich es hinbekomme, das wenn der eine Block den anderen berührt, er dann ne abfrage macht( das weis ich wie ich es hinbekomme) jedoch dann die frage zb mit y, für ja, beantwortet wird das das programm dann von anfang an startet.
Hier mal ne Beispiel: BlitzBasic: [AUSKLAPPEN]
;---------------Header----------------------
AppTitle "Tneustart"
Graphics 1280,1024,32,2
SetBuffer BackBuffer()
timer=CreateTimer(60)
;-----------------Global----------------------
Global x=100
Global y=100
Global z=50
Global h=50

Global x1=200
Global y1=200
Global z1=50
Global h1=50

;---------------Schleifenanfang-------------

Repeat


;---------------Blöcke-----------------------
Rect x,y,z,h,0
Rect x1,y1,z1,h1,0


;--------------------------kollision--------------------
If KeyDown(200) Then
y=y-4
EndIf
If KeyDown(203) Then
x=x-4
EndIf

If KeyDown(205) Then
x=x+4
EndIf

If KeyDown(208) Then
y=y+4
EndIf

;--------------Schleifenende--------------------
Flip 0
Cls
WaitTimer timer
Until KeyHit(1)
;----------------programm end--------------------


Mfg
Azran

Midimaster

BeitragMi, Jan 06, 2010 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
If RectsOverlap (X, Y, z, h, X1, Y1, z1,h1)


BlitzBasic: [AUSKLAPPEN]
If RectsOverlap (X, Y, z, h, X1, Y1, z1,h1) Then
X=0
Y=0
EndIf

Nicdel

BeitragMi, Jan 06, 2010 14:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Am einfachsten wäre es mit Goto. Aber da Goto böse ist (niemals verwenden!), nimmst du am Besten eine Schleife um alles herum:

BlitzBasic: [AUSKLAPPEN]
;---------------Header----------------------
AppTitle "Tneustart"
Graphics 1280,1024,32,2
SetBuffer BackBuffer()
timer=CreateTimer(60)
;-----------------Global----------------------
Global x=100
Global y=100
Global z=50
Global h=50

Global x1=200
Global y1=200
Global z1=50
Global h1=50


Repeat

;---------------Schleifenanfang-------------

Repeat


;---------------Blöcke-----------------------
Rect x,y,z,h,0
Rect x1,y1,z1,h1,0

If RectsOverlap(...) Exit

;--------------------------kollision--------------------
If KeyDown(200) Then
y=y-4
EndIf
If KeyDown(203) Then
x=x-4
EndIf

If KeyDown(205) Then
x=x+4
EndIf

If KeyDown(208) Then
y=y+4
EndIf

If KeyHit(1) End

;--------------Schleifenende--------------------
Flip 0
Cls
WaitTimer timer
Forever

Forever
;----------------programm end--------------------



Edit:
Oder du machst es wie Midimaster und setzt einfach die Werte wieder auf den Anfangswert Smile
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Midimaster

BeitragMi, Jan 06, 2010 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@ nicdel
er hatt doch schon eine REPEAT-Schleife. Also muss er nur wieder den "Anfangszustand herstellen". Das Neuzeichnen erfolgt automatisch

@Azran
siehe "Neustart-und Levels-Tutorial": https://www.blitzforum.de/foru...716#355716

Nicdel

BeitragMi, Jan 06, 2010 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
er hatt doch schon eine REPEAT-Schleife. Also muss er nur wieder den "Anfangszustand herstellen". Das Neuzeichnen erfolgt automatisch


Ja, du hast Recht. Ich hatte es irgendwie falsch verstanden Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

Azran

BeitragMi, Jan 06, 2010 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Das heißt also ich müsste dann schreiben If Rectsover bla bla bla dann jedes ding wieder schreiben damit er auf seine anfangs posi wieder geht. Mhm oke gut das war ja auch eigendlich nur son beispiel das worin ich ein bauen sollte besteht aus ca 20 sachen die sich im laufe des startes verändern. Das heißt noch mehr Arbeit als ich eh schon hatte X). oder kennt jemacht noch ne gute lösung?

Nicdel

BeitragMi, Jan 06, 2010 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Dim-Feld verwenden und die Einträge in einer For...Next-Schleife durchgehen.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Midimaster

BeitragMi, Jan 06, 2010 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne Azran,

das ist keine Mehrarbeit. Die Werte, die Du für das ersten Durchspielen brauchst, musstest du ja schon irgendwo hinschreiben.

Diese Zeilen nimmst Du jetzt in eine Funktion und fügst noch die Variablen dazu, die 0 sein müssen. Das wars.

An die Stelle, wo diese Werte standen, kommt der Funktionsaufruf. Und an jeder Stelle, wo du jetzt einen "Reset" haben willst, kannst du auch einfach diesen Aufruf machen.

Das ist die leichteste und effektivste Methode. Und es ist guter Programmierstil. Arbeitsaufwand: 3 Minuten
  • Zuletzt bearbeitet von Midimaster am Mi, Jan 06, 2010 20:16, insgesamt einmal bearbeitet
 

Azran

BeitragMi, Jan 06, 2010 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey danke das werde ich sogleich mal anwenden mit reset.
mfg Azran

Midimaster

BeitragMi, Jan 06, 2010 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Werf doch bitte mal den Code rein. Wenigstens den Teil bis zum UNTIL!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group