Tan/ATan

Anfängerfragen zum Programmieren mit PureBasic.
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Beitrag 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"
Zuletzt geändert von Rebon am 16.06.2009 17:26, insgesamt 1-mal geändert.
PB 4.00 | Windows XP Home SP3
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Beitrag von Rebon »

Moment, hab was vergessen:
nicht:

Code: Alles auswählen

;End=End+1
sondern

Code: Alles auswählen

Ende=Ende+1
PB 4.00 | Windows XP Home SP3
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Beitrag 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.
PB 4.00 | Windows XP Home SP3
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.
Win11 x64 | PB 6.20
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Beitrag 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
PB 4.00 | Windows XP Home SP3
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.
Win11 x64 | PB 6.20
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Beitrag 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:
PB 4.00 | Windows XP Home SP3
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Hab hierdurch angeregt mal ein ähnliches Miniprojekt gestartet, vll hilfts dir ja:

http://www.purebasic.fr/german/viewtopi ... 268#248268
(\/) (°,,,°) (\/)
Antworten