Pong
Übersicht

XenowaBetreff: Pong |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi.
Ich bin neu hier und habe vor kurzem angefangen, mit BB zu programmieren. Ich hab schon einige Tuts angeschaut und versuche jetzt ein Pong zu programmieren. Allerdings stehe ich jetzt vor dem folgenden Problem: Der Ball muss ja an jeder Mauer und Pad abprallen. Wie berechnet man da den Winkel? Muss man da Sinus und Cosinus anwenden? (ich hatte Sin und Cos noch nicht in der Schule...) Ausserdem muss man da ja noch berechnen, dass wenn man das Pad in diesem Moment bewegt wenn der Ball aufprallt, dass der Ball dann mehr schub hat und in einem Flächeren Winkel abprallt... Also meine konkreten Fragen: 1. Muss ich da noch mehr tuts anschauen bevor ich ein Pong progge? 2. Wenn ja, wo bekomme ich gute Tutorials für Anfänger wo man das grundlegendste lernt, um nacher selbst weiterzuproggen? (Das grosse Tut von Rob hab ich schon angeschaut, aber ich finde immer noch dass ich viel zu wenig wissen habe...) Danke im Voraus an alle die mir Tipps geben können ![]() mfG Xenowa |
||
![]() |
Unplugged |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kauf dir Réne Meyers Buch, dann mach Tutorials. Wenn du das Buch nicht kennst, es ist sehr ausführlich und so gut wie alles was du brauchst wird beschrieben ![]() |
||
User posted image |
Xenowa |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Welches Buch meinst du jetzt? Hack'n Play oder Jetzt lerne ich spiele programmieren mit Blitzbasic? | ||
x.Force |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zweiteres. ich habs mir auch gekauft das ist wirklich gut und kann ich jedem empfehlen ![]() |
||
AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.- |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, genau, wenn du es noch nicht hasst, kauf es dir, wenn du es schon hasst, lies es nochmal, oder kaufe es dir nochmal! ![]() Am einfachsten verständlich für dich ist, das du wissen musst, an welcher wand du ist, und dann drehst du die geschwindigkeit von X/Y um, kommt drauf an, an welcher wand! |
||
between angels and insects |
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also das Abprallen an der Wand folgt dem Prinzip Einfallwinkel = Ausfallwinkel!
Es reicht also einfach die x, bzw. y-Geschwindigkeit umzukehren! Beispiel: Code: [AUSKLAPPEN] If Ball_x < 0 Ball_x = 0 Ball_xspeed = -1 * Ball_xspeed End If If Ball_y < 0 Ball_y = 0 Ball_yspeed = -1 * Ball_yspeed End If Das ganze auch noch für die anderen Wände! (Wobei 2 Wände ja sowieso die Torlinien sind, da prallt dann auch nix ab) Beim stehenden Pad funktioniert es eigentlich genauso, wenn du kein spezielles Abprallverhalten willst! Das bewegte Pad kannst du einfach so machen! (Ausgehend von vertikalen Pads rechts bzw. links) Code: [AUSKLAPPEN] If Ball kollidiert mit Pad Ball_xspeed = -1 * Ball_xspeed Ball_yspeed = Ball_yspeed + Pad_yspeed End If mfG Ctuchik |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal ein lauffähiges Beispiel dazu. Es ist allerings nur ein simples Pong, da der Ball einfach vom Panel abprallt und die Bewegungsrichtung und der Aufprallpunkt nicht berücksichtigt wird.
Code: [AUSKLAPPEN] Graphics 800,600,16,2 SetBuffer BackBuffer() AppTitle "Pongfake" SeedRnd MilliSecs() Type ball Field x#, y#, sx#, sy#, winkel, speed End Type Type panel Field x#, y#, speed#, id End Type Font1 = LoadFont("Arial", 24,1,0,0) b.ball = New ball ; Ball erzeugen b\x# = 400 b\y# = 300 b\winkel = 30 b\speed# = 6 b\sx# = Cos(b\winkel) * b\speed# b\sy# = Sin(b\winkel) * b\speed# p.panel = New panel ; Spieler p\x# = 50 p\y# = 300 p\speed = 5 p\id = 1 p.panel = New panel ; Gegner p\x# = 750 p\y# = 300 p\speed = 5 p\id = 2 Repeat Cls SetFont Font1 Text 200,0, p1p Text 600,0, p2p Line 400,0,400,600 For p.panel = Each panel Rect p\x#-10,p\y#-50,20,100,1 ; Panels anzeigen If p\id = 2 Then If b\y => p\y# Then p\y# = p\y# + p\speed# ; Computer steuern If b\y =< p\y# Then p\y# = p\y# - p\speed# If b\x > 795 Then p1p = p1p + 1: b\x = 300 ; Punkt für Spieler b\sx# = Cos(Rnd(0,360)) * b\speed# ; Ball reset b\sy# = Sin(Rnd(0,360)) * b\speed# EndIf EndIf If p\id = 1 Then ; Spieler steuern If KeyDown(208) And p\y < 550 Then p\y# = p\y# + p\speed# ; Ball reset If KeyDown(200) And p\y > 50 Then p\y# = p\y# - p\speed# If b\x < 5 Then p2p = p2p + 1: b\x = 300 ; Punkt für Gegner b\sx# = Cos(Rnd(0,360)) * b\speed# b\sy# = Sin(Rnd(0,360)) * b\speed# EndIf EndIf If RectsOverlap(p\x#-10, p\y#-50, 20, 100, b\x#-5, b\y#-5, 10, 10) Then ; Kollision prüfen b\sx# = -b\sx# EndIf Next b\x# = b\x# + b\sx# ; Ball bewegen b\y# = b\y# + b\sy# If b\x < 5 Or b\x > 795 Then b\sx = -b\sx ; Ball abprallen If b\y < 5 Or b\y > 595 Then b\sy = -b\sy Color 255,0,0: Oval b\x-5, b\y-5, 10, 10, 1 ; Ball anzeigen Flip Until KeyHit(1) End |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Michi1988 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt lerne ich Spiele programmieren mit Blitz Basic habe ich bekommen und noch am darauffolgenden Tag durch gehabt. Es ist ein spitzen Buch.
Konnte zwar schon vorher den ganzen Kram bis auf 3d aber für einen Einsteiger ist es perfekt. Wie man ein Pong programmiert wird da übrigens nicht besprochen. Egal. Viele nette Leute haben ja was gepostet. Michi |
||
Xenowa |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok danke an alle die geholfen haben ![]() bye Xenowa |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group