ne, irgendwie is man ja auch selbst schulz,
wenn man während eines kritischen downloads
ein unbekanntes proggie von nem anfänger austestet... XD
aber danke für die hinweise, leute.
also werd ich mir ersma den source reinziehen, bevor ichs starte...

Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Das er dabei ist, streite ich nicht ab.Kaeru Gaman hat geschrieben:dann schau dir den code vorher an, schließlich isser dabei.
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Code: Alles auswählen
; *********
; *** Wird nur benötigt, um den Code mit der Demoversion von PB zu compilen (hier wird die WinAPI-Funktion SetTimer_() "gewrappt")
; *********
;
; OpenLibrary(0,"user32.dll")
; lpSetTimer.l = GetFunction(0,"SetTimer")
; If lpSetTimer.l = 0
; End ;Beende das Programm, falls Windows so zerschossen sein sollte, dass sogar die user32.dll kaputt ist.
; EndIf
; Procedure SetTimer_(hWnd.l,nIDEvent.l,uElapse.l,lpTimerFunc.l)
; CallFunctionFast(lpSetTimer,hWnd,nIDEvent,uElapse,lpTimerFunc)
; EndProcedure
;
; *********
; *** Spezialcode für die Demoversion von PB endet hier
; *********
InitSprite()
InitKeyboard()
InitMouse()
InitSound()
OpenScreen(800,600,16,"")
LoadSprite(1,"Bilder\Maus.bmp")
LoadSprite(2,"Bilder\Munition.bmp")
LoadSprite(3,"Bilder\Back.bmp")
LoadSprite(4,"Bilder\Gegner1.bmp")
LoadSound(3,"Sounds\Backsound.wav")
LoadSound(4,"Sounds\Schuss.wav")
LoadSound(2,"Sounds\Down.wav")
MouseLocate(800/2-SpriteWidth(1)/2,600/2-SpriteHeight(1)/2)
Shotdelay = 50
Munition = 5
PlaySound(3,1)
Gegnerx = 950
Gegnery = Random(600-SpriteHeight(4))
Gegnerx2 = 955
Gegnery2 = Random(600-SpriteHeight(4))
Gegnerx3 = 955
Gegnery3 = Random(600-SpriteHeight(4))
Gegnerx4 = 955
Gegnery4 = Random(600-SpriteHeight(4))
Gegnerx5 = 955
Gegnery5 = Random(600-SpriteHeight(4))
Gegnerx6 = 955
Gegnery6 = Random(600-SpriteHeight(4))
Gegnerx7 = 955
Gegnery7 = Random(600-SpriteHeight(4))
Gegnerx8 = 955
Gegnery8 = Random(600-SpriteHeight(4))
Gegnerx9 = 955
Gegnery9 = Random(600-SpriteHeight(4))
Gegnerx10 = 955
Gegnery10 = Random(600-SpriteHeight(4))
Gegnerx11 = 955
Gegnery11 = Random(600-SpriteHeight(4))
Gegnerx12 = 955
Gegnery12 = Random(600-SpriteHeight(4))
Gegnerx13 = 955
Gegnery13 = Random(600-SpriteHeight(4))
Gegnerx14 = 955
Gegnery14 = Random(600-SpriteHeight(4))
Gegnerx15 = 955
Gegnery15 = Random(600-SpriteHeight(4))
Gegnerx16 = 955
Gegnery16 = Random(600-SpriteHeight(4))
Gegnerx17 = 955
Gegnery17 = Random(600-SpriteHeight(4))
Gegnerx18 = 955
Gegnery18 = Random(600-SpriteHeight(4))
Gegnerx19 = 955
Gegnery19 = Random(600-SpriteHeight(4))
Gegnerx20 = 955
Gegnery20 = Random(600-SpriteHeight(4))
Gegnerx21 = 955
Gegnery21 = Random(600-SpriteHeight(4))
Gegnerx22 = 955
Gegnery22 = Random(600-SpriteHeight(4))
Structure Player
Punkte.l
Leben.l
Geld.l
EndStructure
Dim Player.Player(0)
Player(0)\Punkte = 0
Player(0)\Leben = 3
Player(0)\Geld = 0
SetTimer_(0,0,17,0) ;Wir starten einen Timer, der uns alle 17 Milisekunden ein #WM_Timer Event an unser Programm schickt
;Warum 17 ms? 1 Sekunde hat 1000 Millisekunden, und die Standardrefreshrate ist auf einem normalen
;PC immer 60 Hz. Demzufolge: 1000ms / 60Hz = 16.66666ms (da SetTimer_() aber nur Ganzzahlen annimmt,
;runden wir auf 17ms auf)
Repeat
If #WM_TIMER = WaitWindowEvent() ;Mit WaitwindowsEvent() schlagen wir 2 Fliegen mit einer Klatsche:
;1.) Wir brauchen kein Delay(), WaitWindowEvent() wartet immer, bis ein neues Event
; gemeldet wird
;2.) Wir beschränken unsere Framerate auf ca. 60 Bilder pro Sekunde. Unser Spiel läuft
;also nie "zu schnell", sondern höchstens noch "zu langsam".
FlipBuffers()
If IsScreenActive() ;Das Spiel rendert und rechnet nur, wenn der Screen auch wirklich aktiv ist. Wenn der Benutzer das
;Spiel mit ALT+TAB minimiert hat, dann verbraucht das Spiel (fast) gar keine CPU-Leistung mehr
ClearScreen(0)
DisplaySprite(3,0,0)
DisplayTransparentSprite(4,Gegnerx,Gegnery)
Gegnerx-3
ExamineMouse() ;Diese Funktion ruft man erst unmittelbar vor dem Verarbeiten der abgefragten Eingaben auf! ;)
If MouseButton(#PB_MouseButton_Right) And Munition < 1
Munition = 5
Player(0)\Geld-10
ElseIf MouseButton(#PB_MouseButton_Left) And Munition > 0 And Shotdelay = 0
Munition-1
Shotdelay = 20
PlaySound(4)
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx,Gegnery)
Gegnerx = 1000
Gegnery = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx2,Gegnery2)
Gegnerx2 = 1000
Gegnery2 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx3,Gegnery3)
Gegnerx3 = 1000
Gegnery3 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx4,Gegnery4)
Gegnerx4 = 1000
Gegnery4 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx5,Gegnery5)
Gegnerx5 = 1000
Gegnery5 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx6,Gegnery6)
Gegnerx6 = 1000
Gegnery6 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx7,Gegnery7)
Gegnerx7 = 1000
Gegnery7 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx8,Gegnery8)
Gegnerx8 = 1000
Gegnery8 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx9,Gegnery9)
Gegnerx9 = 1000
Gegnery9 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx10,Gegnery10)
Gegnerx10 = 1000
Gegnery10 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx11,Gegnery11)
Gegnerx11 = 1000
Gegnery11 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx12,Gegnery12)
Gegnerx12 = 1000
Gegnery12 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx13,Gegnery13)
Gegnerx13 = 1000
Gegnery13 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx14,Gegnery14)
Gegnerx14 = 1000
Gegnery14 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx15,Gegnery15)
Gegnerx15 = 1000
Gegnery15 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx16,Gegnery16)
Gegnerx16 = 1000
Gegnery16 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx17,Gegnery17)
Gegnerx17 = 1000
Gegnery17 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx18,Gegnery18)
Gegnerx18 = 1000
Gegnery18 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx19,Gegnery19)
Gegnerx19 = 1000
Gegnery19 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx20,Gegnery20)
Gegnerx20 = 1000
Gegnery20 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx21,Gegnery21)
Gegnerx21 = 1000
Gegnery21 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
If SpritePixelCollision(1,Mausx,Mausy,4,Gegnerx22,Gegnery22)
Gegnerx22 = 1000
Gegnery22 = Random(600-SpriteHeight(4))
Player(0)\Punkte+5
Player(0)\Geld+5
EndIf
EndIf
If Shotdelay > 0
Shotdelay-1
EndIf
If Mausx > 800-SpriteWidth(1) : Mausx = 800-SpriteWidth(1) : EndIf
If Mausy > 600-SpriteHeight(1) : Mausy = 600-SpriteHeight(1) : EndIf
If Player(0)\Punkte > 49
DisplayTransparentSprite(4,Gegnerx2,Gegnery2)
Gegnerx2-3
EndIf
If Player(0)\Punkte > 139
DisplayTransparentSprite(4,Gegnerx3,Gegnery3)
Gegnerx3-3
EndIf
If Player(0)\Punkte > 299
DisplayTransparentSprite(4,Gegnerx4,Gegnery4)
Gegnerx4-3
EndIf
If Player(0)\Punkte > 399
DisplayTransparentSprite(4,Gegnerx5,Gegnery5)
Gegnerx5-2
Gegnerx4+1
Gegnerx3+1
Gegnerx2+1
Gegnerx+1
EndIf
If Player(0)\Punkte > 499
DisplayTransparentSprite(4,Gegnerx6,Gegnery6)
Gegnerx6-2
EndIf
If Player(0)\Punkte > 599
DisplayTransparentSprite(4,Gegnerx7,Gegnery7)
Gegnerx7-2
DisplayTransparentSprite(4,Gegnerx8,Gegnery8)
Gegnerx8-2
EndIf
If Player(0)\Punkte > 699
DisplayTransparentSprite(4,Gegnerx9,Gegnery9)
Gegnerx9-1
DisplayTransparentSprite(4,Gegnerx10,Gegnery10)
Gegnerx10-1
Gegnerx8+1
Gegnerx7+1
Gegnerx6+1
Gegnerx5+1
Gegnerx4+1
Gegnerx3+1
Gegnerx2+1
Gegnerx+1
EndIf
If Player(0)\Punkte > 749
DisplayTransparentSprite(4,Gegnerx11,Gegnery11)
Gegnerx11-1
DisplayTransparentSprite(4,Gegnerx12,Gegnery12)
Gegnerx12-1
DisplayTransparentSprite(4,Gegnerx13,Gegnery13)
Gegnerx13-1
EndIf
If Player(0)\Punkte > 799
DisplayTransparentSprite(4,Gegnerx14,Gegnery14)
Gegnerx14-1
DisplayTransparentSprite(4,Gegnerx15,Gegnery15)
Gegnerx15-1
DisplayTransparentSprite(4,Gegnerx16,Gegnery16)
Gegnerx16-1
EndIf
If Player(0)\Punkte > 849
DisplayTransparentSprite(4,Gegnerx17,Gegnery17)
Gegnerx17-1
DisplayTransparentSprite(4,Gegnerx18,Gegnery18)
Gegnerx18-1
DisplayTransparentSprite(4,Gegnerx19,Gegnery19)
Gegnerx19-1
DisplayTransparentSprite(4,Gegnerx20,Gegnery20)
Gegnerx20-1
DisplayTransparentSprite(4,Gegnerx21,Gegnery21)
Gegnerx21-1
DisplayTransparentSprite(4,Gegnerx22,Gegnery22)
Gegnerx22-1
EndIf
If Player(0)\Punkte > 899
Gegnerx-1
EndIf
If Player(0)\Punkte > 919
Gegnerx2-1
Gegnerx3-1
EndIf
If Player(0)\Punkte > 979
Gegnerx4-1
Gegnerx5-1
EndIf
If Gegnerx < 0-SpriteWidth(4) : Gegnerx = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx2 < 0-SpriteWidth(4) : Gegnerx2 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx3 < 0-SpriteWidth(4) : Gegnerx3 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx4 < 0-SpriteWidth(4) : Gegnerx4 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx5 < 0-SpriteWidth(4) : Gegnerx5 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx6 < 0-SpriteWidth(4) : Gegnerx6 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx7 < 0-SpriteWidth(4) : Gegnerx7 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx8 < 0-SpriteWidth(4) : Gegnerx8 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx9 < 0-SpriteWidth(4) : Gegnerx9 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx10 < 0-SpriteWidth(4) : Gegnerx10 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx11 < 0-SpriteWidth(4) : Gegnerx11 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx12 < 0-SpriteWidth(4) : Gegnerx12 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx13 < 0-SpriteWidth(4) : Gegnerx13 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx14 < 0-SpriteWidth(4) : Gegnerx14 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx15 < 0-SpriteWidth(4) : Gegnerx15 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx16 < 0-SpriteWidth(4) : Gegnerx16 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx17 < 0-SpriteWidth(4) : Gegnerx17 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx18 < 0-SpriteWidth(4) : Gegnerx18 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx19 < 0-SpriteWidth(4) : Gegnerx19 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx20 < 0-SpriteWidth(4) : Gegnerx20 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx21 < 0-SpriteWidth(4) : Gegnerx21 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
If Gegnerx22 < 0-SpriteWidth(4) : Gegnerx22 = 950 : Player(0)\Leben-1 : PlaySound(2) : EndIf
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
;DrawingFont(FontID(1))
DrawText(10,10,"Punkte: "+Str(Player(0)\Punkte))
DrawText(120,10,"Leben: "+Str(Player(0)\Leben))
DrawText(210,10,"Geld: "+Str(Player(0)\Geld))
StopDrawing()
If Munition = 1
DisplayTransparentSprite(2,790-SpriteWidth(2),590-SpriteHeight(2))
ElseIf Munition = 2
DisplayTransparentSprite(2,790-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,765-SpriteWidth(2),590-SpriteHeight(2))
ElseIf Munition = 3
DisplayTransparentSprite(2,790-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,765-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,740-SpriteWidth(2),590-SpriteHeight(2))
ElseIf Munition = 4
DisplayTransparentSprite(2,790-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,765-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,740-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,715-SpriteWidth(2),590-SpriteHeight(2))
ElseIf Munition = 5
DisplayTransparentSprite(2,790-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,765-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,740-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,715-SpriteWidth(2),590-SpriteHeight(2))
DisplayTransparentSprite(2,690-SpriteWidth(2),590-SpriteHeight(2))
EndIf
DisplayTransparentSprite(1,Mausx,Mausy)
Mausx = MouseX()
Mausy = MouseY()
If Player(0)\Leben < 1
CloseScreen()
MessageRequester("Schade...","Punkte: "+Str(Player(0)\Punkte)+Chr(10)+"Geld: "+Str(Player(0)\Geld)+Chr(10)+Chr(10)+"Gesamt: "+Str(Player(0)\Punkte+Player(0)\Geld))
End
EndIf
EndIf
EndIf
ExamineKeyboard() ;Diese Funktion ruft man erst unmittelbar vor dem Verarbeiten der abgefragten Eingaben auf! ;)
Until KeyboardPushed(#PB_Key_Escape)