begrenzung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

TheRealSephiroth

Betreff: begrenzung

BeitragMi, Nov 16, 2005 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
kann mir jemand sagen wie ich es anstelle das die spielfiguren NICHT aus dem stadium laufen können ?
Grafiken: http://rapidshare.de/files/7706754/gfx.zip.html

Code: [AUSKLAPPEN]

Graphics 640,480,16,2
ver$ = 0.4
AppTitle "Fußball Fun " + ver

SetBuffer BackBuffer()

;Variablen
;----------------------------------------------
ball = LoadImage("gfx\ball.png")
tor = LoadImage("gfx\tor.png")
ankick = LoadImage("gfx\mitte.png")
stadium = LoadImage("gfx\stadium.png")
team1 = 0
team2 = 0
ballX = 311.5
ballY = 231.5
Global x1# = 290,y1# = 216
Global geschwindigkeit1#=4
Global x2# = 350,y2# = 266
Global geschwindigkeit2#=-4

;Steuerungsvorbereitung(Arrays)
;-----------------------------------------------------
Dim Kicker1(359)
TFormFilter 0

For winkel1 = 0 To 359
      Kicker1(winkel1) = LoadImage("gfx\kicker1.png")
     MidHandle kicker1(winkel1)
      RotateImage kicker1(winkel1),-winkel1
      MaskImage Kicker1(winkel1),0,0,0
Next

Dim Kicker2(359)
TFormFilter 0

For winkel2 = 0 To 359
      Kicker2(winkel2) = LoadImage("gfx\kicker2.png")
     MidHandle kicker2(winkel2)
      RotateImage kicker2(winkel2),-winkel2
      MaskImage Kicker2(winkel2),0,0,0
Next

;Spielfeld
;---------------------------------------------------------------
While Not KeyHit(1)
ClsColor 20,150,20
Cls

DrawImage ball,ballX,ballY
DrawImage tor,607,180
DrawImage tor,4,180
DrawImage ankick, 302.5,223
DrawImage stadium,0,0

;Steuerung & Spieleranzeige
;---------------------------------------------------------------

If KeyDown(30) Then winkel1= winkel1 +4
If KeyDown(32) Then winkel1= winkel1 -4
If winkel1 > 359 Then winkel1 = 0
If winkel1 < 0 Then winkel1 = 359

If KeyDown(17) Then
   x1 = x1 + Cos(winkel1)*geschwindigkeit1
   y1 = y1 - Sin(winkel1)*geschwindigkeit1
EndIf
If KeyDown(31) Then
   x1 = x1 - Cos(winkel1)*geschwindigkeit1
   y1 = y1 + Sin(winkel1)*geschwindigkeit1
EndIf

DrawImage kicker1(winkel1),x1,y1


If KeyDown(203) Then winkel2= winkel2 +4
If KeyDown(205) Then winkel2= winkel2 -4
If winkel2 > 359 Then winkel2 = 0
If winkel2 < 0 Then winkel2 = 359

If KeyDown(200) Then
   x2 = x2 + Cos(winkel2)*geschwindigkeit2
   y2 = y2 - Sin(winkel2)*geschwindigkeit2
EndIf
   
If KeyDown(208) Then
   x2 = x2 - Cos(winkel2)*geschwindigkeit2
   y2 = y2 + Sin(winkel2)*geschwindigkeit2
EndIf

DrawImage kicker2(winkel2),x2,y2

;Kollision
;----------------------------------------------------------------
If ImagesCollide (ball,ballX, ballY,0, kicker1(winkel1),x1,y1,0) Then
ballX = ballX+30
ballY = ballY
EndIf

If ImagesCollide (ball,ballX, ballY,0, kicker2(winkel2),x2,y2,0) Then
ballX = ballX-30
ballY = ballY
EndIf

If ImagesCollide (ball,ballX, ballY,0, tor, 607,180,0) Then
ballX = 311.5
ballY = 231.5
team1 = team1 + 1
x1 = 280
y1 = 216
x2 = 340
y2 = 250
EndIf

If ImagesCollide (ball,ballX, ballY,0, tor, 4,180,0) Then
ballX = 311.5
ballY = 231.5
team2 = team2 + 1
x1 = 280
y1 = 216
x2 = 340
y2 = 250
EndIf

If ImagesCollide (kicker1(winkel1),x1,y1,0, stadium,0,0,0) Then
x1 = 290
y1 = 216
EndIf

If ImagesCollide (kicker2(winkel2),x2,y2,0, stadium,0,0,0) Then
x2 = 350
y2 = 266
EndIf

;Reset & Anzeige
;------------------------------------------------------------------
Color 120, 20, 20
Text 155, 25,"Drücke SPACE um die Partie zurückzusetzen"
Text 290, 45,Str$(team1)+" : "+Str$(team2)

If KeyHit(57) Then
team1 = 0
team2 = 0
x1 = 290
y1 = 216
x2 = 350
y2 = 266
winkel1 = 0
winkel2 = 0
ballX = 311.5
ballY = 231.5
EndIf

Flip
Wend
 

Medabots1992

BeitragMi, Nov 16, 2005 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst eine Collision machen. Wie ich sehe hast du es gemacht. Aber positioniere doch ihn nicht immer zum start sondern mach ihn an der stelle lassen und lass den spieler weiterspielen. Dann würde es auch klar sein. Immer wenn spieler raus läuft stellst du ihn auf die Stelle zurück
Mach eine Kollision vom Rand und Tor und schon hast du es

Klip

BeitragMi, Nov 16, 2005 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach überprüfen, ob er außerhalb des Stadions ist und nur dann die Bewegung zulassen.

BlitzBasic: [AUSKLAPPEN]

; Steuerung
If KeyDown(200)
; Bewegung nur zulassen, wenn der Bildschirmrand nicht übertreten wurde.
If x2 < gfx_x
If x2 > 0
x2 = x2 + Cos(winkel2)*geschwindigkeit2
EndIf
EndIf
If y2 < gfx_y
If y2 > gfx_y
y2 = y2 - Sin(winkel2)*geschwindigkeit2
EndIf
EndIf
EndIf

If KeyDown(208)
If x2 < gfx_x
If x2 > 0
x2 = x2 - Cos(winkel2)*geschwindigkeit2
EndIf
EndIf
If y2 < gfx_y
If y2 > gfx_y
y2 = y2 + Sin(winkel2)*geschwindigkeit2
EndIf
EndIf
EndIf

; Wenn der Rand doch übertreten wurde, wieder zurücksetzen.
If x2 > gfx_x Then x2 = x2 - 1
If x2 < gfx_x Then x2 = x2 + 1

If y2 > gfx_y Then y2 = y2 - 1
If y2 < gfx_y Then y2 = y2 + 1

; alles muss noch an eine bestimmte Breite angepasst werden. In diesem Beispiel die Bildschirmbreite.
; Da du ja ein Stadion willst, muss es noch modifiziert werden.

TheRealSephiroth

BeitragMi, Nov 16, 2005 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
danke Klip

dein code dient mir als basis(musste ihn veränder, da er nicht korrekt funktionierte)

der funktioniert:

BlitzBasic: [AUSKLAPPEN]
If KeyDown(200) 
; Bewegung nur zulassen, wenn der Bildschirmrand nicht übertreten wurde.
If x2 < gfx_x And x2 > 0
x2 = x2 + Cos(winkel2)*geschwindigkeit2
EndIf
If y2 < gfx_y And y2 > 0
y2 = y2 - Sin(winkel2)*geschwindigkeit2
EndIf
EndIf

If KeyDown(208)
If x2 < gfx_x And x2 > 0
x2 = x2 - Cos(winkel2)*geschwindigkeit2
EndIf
If y2 < gfx_y And y2 > 0
y2 = y2 + Sin(winkel2)*geschwindigkeit2
EndIf
EndIf

; Wenn der Rand doch übertreten wurde, wieder zurücksetzen.
If x2 > gfx_x Then x2 = x2 - 1
If x2 < 0 Then x2 = x2 + 1

If y2 > gfx_y Then y2 = y2 - 1
If y2 < 0 Then y2 = y2 + 1

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group