Code: Alles auswählen
InitSprite()
InitKeyboard()
;-------------Strukturen--------------------------------------
Structure schuss
x.l
y.l
speedx.l
speedy.l
graphic.l
EndStructure
NewList schuss.schuss()
Structure punkt
armor.l
x.l
y.l
EndStructure
NewList punkt.punkt()
Structure spieler1
xp1.l
yp1.l
leben1.l
EndStructure
NewList spieler1.spieler1()
Structure spieler2
x.l
y.l
leben2.l
EndStructure
NewList spieler2.spieler2()
;-------------------------------------------------------------
;-------------Prozeduren--------------------------------------
Procedure Collision(x.f, y.f)
Result = 0
Restore Map
For my=0 To 30
For mx=0 To 40
a.b
Read a
If a = 1
If SpriteCollision(2, Int(x), Int(y), 1, mx*25, my*25)
Result = 1
Break 2
EndIf
EndIf
If a = 4
If SpriteCollision(2, Int(x), Int(y), 4, mx*25, my*25)
Result = 1
Break 2
EndIf
EndIf
Next
Next
ProcedureReturn Result
EndProcedure
;---------------------------------------------------------------
;------------------------Konstanten-----------------------------
#links1 = 0
#rechts1 = 1
#auf1 = 2
#ab1 = 3
#links2 = 0
#rechts2 = 1
#auf2 = 2
#ab2 = 3
#Speed1 = 3
#Speed2 = 5
#Speed3 = 5
#Speed4 = 5
;---------------------------------------------------------------
OpenScreen(1024, 768, 32, "Test")
LoadSprite(1,"GFX\wand3.bmp",0)
LoadSprite(2,"GFX\spieler1.bmp",0)
TransparentSpriteColor(2,255,255,255)
LoadSprite(3,"GFX\hintergrund.bmp")
LoadSprite(4,"GFX\wand4.bmp")
LoadSprite(5,"GFX\blaster.bmp")
TransparentSpriteColor(5,255,255,255)
LoadSprite(6,"GFX\punkt.bmp")
TransparentSpriteColor(6,255,255,255)
LoadSprite(7,"GFX\spieler2.bmp",0)
Global g.l
Global speed.l
xp1=300
yp1=100
x=600
y=400
armor=100
g=10
speed=10
SetFrameRate(50)
Repeat
DisplaySprite(3,0,0)
ExamineKeyboard()
ForEach spieler2()
ForEach schuss()
If SpriteCollision(5, schuss()\x, schuss()\y, 7, spieler2()\x, spieler2()\y)
Quit=1
EndIf
Next
Next
ForEach schuss()
schuss()\x = schuss()\x + schuss()\speedx
schuss()\y = schuss()\y + schuss()\speedy
DisplaySprite(schuss()\graphic, schuss()\x, schuss()\y)
Next schuss()
;------------------------Bewegung------------------------------------
;########################Spieler1####################################
If KeyboardPushed(#PB_Key_Up)
Richtung=#auf1
If Collision(xp1, yp1-5) = 0
yp1 - #Speed1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Down)
Richtung=#ab1
If Collision(xp1, yp1+5) = 0
yp1+#Speed1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
Richtung=#links1
If Collision(xp1-5, yp1) = 0
xp1 - #Speed1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
Richtung=#rechts1
If Collision(xp1+5, yp1) = 0
xp1 + #Speed1
EndIf
EndIf
;###################################################################
;#####################Spieler2######################################
If KeyboardPushed(#PB_Key_W)
Richtung=#auf2
If Collision(x, y+5) = 0
y - #Speed2
EndIf
EndIf
If KeyboardPushed(#PB_Key_S)
Richtung=#ab2
If Collision(x, y+5) = 0
y + #Speed2
EndIf
EndIf
If KeyboardPushed(#PB_Key_A)
Richtung=#links2
If Collision(x-5, y) = 0
x - #Speed2
EndIf
EndIf
If KeyboardPushed(#PB_Key_D)
Richtung=#rechts2
If Collision(x+5, y) = 0
x + #Speed2
EndIf
EndIf
;##################################################################
;--------------------------------------------------------------------
;-----------------------schiessen-------------------------------------
If KeyboardPushed(#PB_Key_Space)
If space = 0
space = 1
Select Richtung
Case #auf1
AddElement(schuss())
schuss()\x = xp1+12
schuss()\y = yp1
schuss()\speedy = -5
schuss()\speedx = 0
schuss()\graphic = 5
Case #ab1
AddElement(schuss())
schuss()\x = xp1+12
schuss()\y = yp1
schuss()\speedy = 5
schuss()\speedx = 0
schuss()\graphic = 5
Case #links1
AddElement(schuss())
schuss()\x = xp1
schuss()\y = yp1+12
schuss()\speedy = 0
schuss()\speedx = -5
schuss()\graphic = 5
Case #rechts1
AddElement(schuss())
schuss()\x = xp1
schuss()\y = yp1+12
schuss()\speedy = 0
schuss()\speedx = 5
schuss()\graphic = 5
EndSelect
EndIf
Else
space = 0
EndIf
;-----------------------------------------------------------------------------
If KeyboardPushed(#PB_Key_Escape)
Quit = 1
EndIf
Restore Map
For my=0 To 30
For mx=0 To 40
a.b
Read a
If a = 1
DisplaySprite(1, mx*25, my*25)
EndIf
If a = 4
DisplaySprite(4, mx*25, my*25)
EndIf
If a = 6
DisplaySprite(6, mx*25, my*25)
EndIf
Next
Next
DisplayTransparentSprite(2,xp1,yp1)
DisplayTransparentSprite(7,x,y)
FlipBuffers()
Until Quit = 1
End
DataSection
Map:
Data.b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,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,0,0,0,0,1
Data.b 1,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,0,4,1
Data.b 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
EndDataSection
Code: Alles auswählen
ForEach spieler2()
ForEach schuss()
If SpriteCollision(5, schuss()\x, schuss()\y, 7, spieler2()\x, spieler2()\y)
Quit=1
EndIf
Next
Next