Brauche Hilfe beim programmieren von Ballspiel?

2 Antworten

Also wär schon hilfreich wenn du einen Link zu einer Seite (z.b. pastebin) mit dem Code hinzufügst, sonst kann man die überhaupt nicht sagen, wo der Fehler liegt.

xXMoffelXx 
Fragesteller
 16.06.2017, 19:04

sorry ich hab echt keine Ahnung wie das funktioniert.. Aber trotzdem danke

0
timlg07  16.06.2017, 19:18
@xXMoffelXx

Du gehst auf "https://pastebin.com/" kopierst deinen Code da rein, wählst das syntax Highligthing aus und kopierst hier den Link zu der Seite die dir dann angezeigt wird rein.

0
timlg07  16.06.2017, 19:18

Den Fehler finden kannst du nicht, aber seine eigentlich Frage kann man durchaus auch so beantworten ;)

0

Zu deiner ersten Frage bräuchte man den Programmcode.

Zu deiner zweiten und wichtigen Frage:

Wenn der Ball links (oder rechts) wo dagegenprallt, ändert er auf jeden Fall seine x-Richtung.

Ich gehe mal davon aus, dass du eine Update Funktion hast die dir immer einen bestimmten Wert zu dem x/y Wert hinzuaddiert. Diesen Wert änderst du dann einfach ungefähr so:

xVelocity = -xVelocity;

Und was tun mit dem y-Wert? Ganz einfach: gar nichts. Habe dir das mal in einer kleinen Paint-Zeichnung veranschaulicht. (Der Ball hätte ohne Aufprall den gleichen y-Wert)

~Tim

 - (programmieren, Informatik, Scratch)
timlg07  16.06.2017, 19:29

Hab dazu noch ein JavaScript-Spiel gefunden, des ich mal bei irgendeinem canvas Tutorial gebastelt habe. Ich denke die "Physik-Formeln" kann man auch gut auf dein Programm anwenden.

<canvas id="gc" width="640" height="480"> </canvas>

<script>
window.onload = function () {
canvasObj = document.getElementById('gc'),
canvasArea = canvasObj.getContext("2d");
setInterval(update,1000/30);
canvasObj.addEventListener("mousemove",function(e) {
paddle1y = e.clientY - paddleHeight/2;
});
}
// define vars
var paddle1y = 40,
paddle2y = 40,
paddleThickness = 10,
paddleHeight = 100,
ballXvelocity = 50,
ballVvelocity = 50,
ballDimension = 6,
xVelocity = 4,
yVelocity = 4,
score1 = 0,
score2 = 0,
aiPaddle = 2,
canvasObj = document.getElementById('gc'),
canvasArea = canvasObj.getContext("2d");

// Reset game
function reset() {
ballXvelocity = canvasObj.width/2;
ballVvelocity = canvasObj.height/2;
xVelocity = -xVelocity;
yVelocity = 3;
}
// Updates game
function update() {
// moving ball
ballXvelocity += xVelocity;
ballVvelocity += yVelocity;
// Checks
//left side
if(ballVvelocity < 0 && yVelocity < 0) {
yVelocity = -yVelocity;
}

if(ballVvelocity > canvasObj.height && yVelocity > 0) {
yVelocity = -yVelocity;
}

if(ballXvelocity < 0) {
if(ballVvelocity > paddle1y && ballVvelocity < paddle1y + paddleHeight) {
xVelocity = -xVelocity
deltaY = ballVvelocity - (paddle1y + paddleHeight/2);
yVelocity = deltaY * 0.3;
} else {
score2++;
reset();
}
}
// right side
if(ballXvelocity > canvasObj.width) {
if(ballVvelocity > paddle2y && ballVvelocity < paddle2y + paddleHeight) {
xVelocity = -xVelocity
deltaY = ballVvelocity - (paddle2y + paddleHeight/2);
yVelocity = deltaY * 0.3;
} else {
score1++;
reset();
}
}
// AI actions
if(paddle2y + paddleHeight/2 < ballVvelocity) {
paddle2y += aiPaddle;
} else {
paddle2y -= aiPaddle;
}
// draw everything
canvasArea.fillStyle = "black";
canvasArea.fillRect(0, 0,canvasObj.width,canvasObj.height);
canvasArea.fillStyle = "white";
canvasArea.fillRect(0, paddle1y, paddleThickness, paddleHeight);
canvasArea.fillRect(canvasObj.width - paddleThickness, paddle2y, paddleThickness, paddleHeight);
canvasArea.fillRect(ballXvelocity - ballDimension/2, ballVvelocity - ballDimension/2, ballDimension, ballDimension);
canvasArea.fillText(score1, 100, 100);
canvasArea.fillText(score2, canvasObj.width - 100, 100);
} </script>
0