Seite 3 von 4

Verfasst: 16.06.2009 17:15
von Rebon
So startet es zumindest, wenn sich die Grafiken und der Sound auf C:\ befinden. Ich übernehme keine Verantwortung für Schäden jeglicher Art! :wink:

Code: Alles auswählen

MP = MessageRequester("WasDuWolle?", "2-Spieler", #PB_MessageRequester_YesNo)
MP = MP - 5
If MP = 1
 MessageRequester("Achtung:", "Steuerung Spieler 2: Keypad 8 & 2", 0)
EndIf
If InitSprite() = 0
 MessageRequester("!", "Fehler beim Sprite-Initialisieren^^", 0)
 End
EndIf
If OpenScreen(640, 480, 16, "Paddle") = 0
 MessageRequester("!", "Fehler beim Screen-Loaden^^", 0)
 End
EndIf
Speed = 5
CatchSprite(0, ?Paddle)
CatchSprite(1, ?Ball)
CatchSprite(2, ?Kanone,#PB_Sprite_Texture)
InitSprite3D()
CreateSprite3D(0,2)
ShowPaddle2=1
ShowPaddle1=1
quadrat = 0
x_Ball = 30
y_Ball = 10
Ende=0
Waagerecht_Ball = 1
Senkrecht_Ball = 1
Paddle_1 = 200
Paddle_2 = 200
Hs = 0
Start=0
If InitSound() = 0
 MessageRequester("!!!", "Der Sound konnte nicht geladen werden! Was soll denn das???", 0)
 End
EndIf
CatchSound(0, ?Sound)
If InitKeyboard() = 0
 MessageRequester("!", "Fehler beim Keyboard-Initialisieren^^", 0)
 End
EndIf

Repeat
Delay(60)
x_Ball = x_Ball + (Waagerecht_Ball * Speed)
y_Ball = y_Ball + Senkrecht_Ball

ExamineKeyboard()

If KeyboardPushed(#PB_Key_Up) And Paddle_1 > 1
 Paddle_1 = Paddle_1 - 10
EndIf
If KeyboardPushed(#PB_Key_Down) And Paddle_1 < 430
 Paddle_1 = Paddle_1 + 10
EndIf

If y_Ball < 2 Or y_Ball > 449
 Senkrecht_Ball = Senkrecht_Ball - (2 * Senkrecht_Ball)
EndIf

ClearScreen(RGB(0,0,0))
If ShowPaddle1=1
 DisplaySprite(0, 1, Paddle_1)
EndIf
If ShowPaddle2=1
 DisplaySprite(0, 625, Paddle_2)
EndIf
DisplaySprite(1, x_Ball, y_Ball)

If Start=1
 If Waagerecht_Ball=1
  ShowPaddle2=0
  Gun_x=620
 Else
  ShowPaddle1=0
  Gun_x=1
 EndIf
 If Waagerecht_Ball=1
  If y_Ball>paddle_2
   quadrat=4
  Else
   quadrat=3
  EndIf
 Else
  If y_Ball>paddle_1
   quadrat=2
  Else
   quadrat=1
  EndIf
 EndIf
 If Waagerecht_Ball=1
  Gun_y=Paddle_2
  GK=Abs(y_ball-paddle_2)
  AK=Abs(x_ball-625)   
 Else
  Gun_y=Paddle_1
  GK=Abs(y_ball-paddle_1)
  AK=Abs(x_ball-1)
 EndIf
 Winkel=ATan(GK/AK)
 If Showgun=0
 ShowGun=1
 EndIf
Ende=Ende+1
 If Ende=200
  Ende=0
  Start=0
  ShowPaddle1=1
  ShowPaddle2=1
  Waagerecht_Ball*-1=Waagerecht_Ball
 EndIf
 Start3D()
 RotateSprite3D(0, (360-quadrat*90+Winkel),0)
 DisplaySprite3D(0, Gun_x,Gun_y)
 Stop3D()
EndIf

FlipBuffers()

If MP = 2
 If Waagerecht_Ball = 1
  If Paddle_2+20 > y_Ball
   Paddle_2 = Paddle_2 - 3
  EndIf
  If Paddle_2+20 < y_Ball
   Paddle_2 = Paddle_2 + 3
  EndIf
 EndIf
EndIf

If Mp = 1
 If KeyboardPushed(#PB_Key_Pad8) And Paddle_2 > 1
 Paddle_2 = Paddle_2 - 10
 EndIf
 If KeyboardPushed(#PB_Key_Pad2) And Paddle_2 < 430
 Paddle_2 = Paddle_2 + 10
 EndIf
EndIf

If x_Ball < 21
 If Paddle_1 + 49 > y_Ball And Paddle_1 < y_Ball + 20
  Waagerecht_Ball = Waagerecht_Ball - (2 * Waagerecht_Ball)
  Speed = Speed + 1
  PlaySound(0)
  If MP = 2
   HS = HS + 100
  EndIf
 Else
  CloseScreen()
  If MP = 2
  MessageRequester("=(", "Verloren... "+Str(HS)+" Punkte", 0)
  Else
  MessageRequester("={", "Spieler 2 gewinnt!!!!!", 0)
  EndIf
  End
 EndIf
EndIf

If x_Ball > 600
 If Paddle_2 + 49 > y_Ball And Paddle_2 < y_Ball+20
  Waagerecht_Ball = Waagerecht_Ball - (2 * Waagerecht_Ball)
  Speed = Speed + 1
  PlaySound(0)
 Else
  CloseScreen()
  If Mp = 2
  MessageRequester("=)", "Gewonnen!!!... "+Str(HS)+" Punkte", 0)
  Else
  MessageRequester("={", "Spieler 1 gewinnt!!!!!", 0)
  EndIf
  End
 EndIf
EndIf

If KeyboardPushed(#PB_Key_Escape)
 CloseScreen()
 MessageRequester("Ciaobella^^", "Auf Wiedersehen geehrter Spieler!", 0)
 End
EndIf
If KeyboardPushed(#PB_Key_Add)
 Speed = Speed +1
EndIf
If KeyboardPushed(#PB_Key_PadEnter)
 Senkrecht_Ball+1
EndIf
If KeyboardPushed(#PB_Key_C)
 MessageRequester("Hallöle", "C) David F^^ Cool wa?", 0)
EndIf

If Int(Random(100))>60 And Start=0
 If Waagerecht_Ball=1 And x_Ball<400 And Speed<15 Or Waagerecht_Ball=-1 And x_Ball>150 And Speed<15
 Start=1
 EndIf
EndIf

ForEver

Paddle:
 IncludeBinary "C:\paddle.bmp"
Ball:
 IncludeBinary "C:\ball.bmp"
Sound:
 IncludeBinary "C:\chop.wav"
Kanone:
 IncludeBinary "C:\gun.bmp"

Verfasst: 16.06.2009 17:17
von Kaeru Gaman
Kumpu hat geschrieben:Was ist den falsch an linie 26?? Darf End etwa nicht 0 sein?
End=0
Außerdem ist Linie 26 "Waagerecht_Ball = 1"...
also, welche NUMMER die hat, hängt ja wohl auch davon ab, ob man ganz oben ne leerzeile macht oder nicht.
ist auch scheißegal, deswegen hab ich ja auch die codezeile hingeschrieben.

End ist ein Commando, das darf überhaupt nicht als Variablenname verwendet werden! ( ! und ! und !eins!elf! nochemal ! )

also, keine Ahnung was du da Programmierst, aber PureBasic 4.3 ist es nicht!

ich komm mir halt schon verarscht vor, les deinen spaghetticode bis ich koppschmerzen krieg,
freu mich, dass er ein bissel lesbarer und mit bildern daherkommt,
kopier den ganzen kram auf meine Platte und dann sowas?

ey hallo? Bild jemand zu hause?

Verfasst: 16.06.2009 17:23
von Rebon
Moment, hab was vergessen:
nicht:

Code: Alles auswählen

;End=End+1
sondern

Code: Alles auswählen

Ende=Ende+1

Verfasst: 16.06.2009 17:28
von Rebon
Übrigens, mußte die Bilder umformatieren, waren PNG's keine BMP's.
Sound hab ich einen Windows-Sound genommen, aus dem Media Ordner Ding.wav und in Chop.wav umgeschrieben.

Verfasst: 16.06.2009 17:33
von Kaeru Gaman
ich hab jetzt mal diesen unmögliche variablennamen ersetzt, und nachdem ich die bilder in bmp umgewandelt hab und die namen angepasst, und die parameter von befehlen korrigiert, ist es auch tatsächlich mal gelaufen...

also, nicht nur die kanone verhält sich komisch, die paddles verschwinden ebenfalls sporadisch.
die rechte kanone hab ich durchaus mal teilweise zu sehen bekommen.

ich kann mal raten, was etwas ausmachen könnte...

denkst du daran, dass ein Sprite positioniert wird mit seiner linken, oberen Ecke?
also, wenn du auf einem 640 breiten screen die x-koordinate auf 640 setzt, dann sieht man das sprite nicht.


wenn es nicht daran liegt, tuts mir auch leid.

es kann durchaus etwas geben, was bei mir geht und bei dir nicht, oder umgekehrt.

schreib mal bitte deine PB-Version in deine Signatur!

sonst erwartet man selbstverständlich, dass du die aktuelle benutzt.

Verfasst: 16.06.2009 17:44
von Andesdaf
Ich wollte obigen Code mal zu meinem einrücken, hab aber aufgegeben.
Kaeru Gaman hat geschrieben:schreib mal bitte deine PB-Version in deine Signatur!
Und bevor jemand fragt: Das ist ein Service von STARGATE, siehe ForenSupport
erste Seite.

Verfasst: 16.06.2009 17:55
von Rebon
Andesdaf hat geschrieben:Ich wollte obigen Code mal zu meinem einrücken, hab aber aufgegeben.
Ich hoffe, ich hab nichts vergessen:

Zeile 25

Code: Alles auswählen

Ende=1
Zeile 60

Code: Alles auswählen

ClearScreen(RGB(0,0,0))
Zeile 103 bis 105

Code: Alles auswählen

Ende=Ende+1
If Ende=200
  Ende=0

Verfasst: 16.06.2009 17:58
von Andesdaf
ich meinte nicht deinen Code, ich meinte den noch weiter oben :wink:
Für meine Verhältnisse ist ein Leerzeichen zu wenig, kann man ewig drüber
streiten, aber überall eins einrücken will auch keiner.

Verfasst: 16.06.2009 18:13
von Rebon
Andesdaf hat geschrieben:ich meinte nicht deinen Code, ich meinte den noch weiter oben :wink:
Bei Kritik fühl ich mich (fast) immer angesprochen! :mrgreen:

Verfasst: 16.06.2009 22:13
von KeyKon
Hab hierdurch angeregt mal ein ähnliches Miniprojekt gestartet, vll hilfts dir ja:

http://www.purebasic.fr/german/viewtopi ... 268#248268