2016-12-04 8 views
0
import ddf.minim.*; 
AudioPlayer player; 
Minim minim; 

Table t1= new Table(300, 300); 
float power=0; 
float dx=0; 
float dy=0; 

void setup() 
{ 
    size(1000, 600); 
    frameRate(20); 
    minim= new Minim(this); 
    player=minim.loadFile("ballsound.mp3"); 
} 

void draw() 
{ 
    strokeWeight(1); 
    stroke(0, 0, 0); 
    strokeWeight(10); 
    stroke(255, 0, 0); 
    fill(26, 218, 35); 
    rect(0, 0, 1000, 600); 
    noStroke(); 
    fill(0); 
    ellipse(0, 0, 80, 80); 
    ellipse(1000, 0, 80, 80); 
    ellipse(0, 600, 80, 80); 
    ellipse(1000, 600, 80, 80); 
    strokeWeight(1); 
    stroke(0, 0, 0); 
    fill(255); 
    ellipse(t1.cue_ball.center.x, t1.cue_ball.center.y, 20, 20); 

    t1.cue_ball.center.x+=dx; 
    t1.cue_ball.center.y+=dy; 

    dx=friction(dx); 
    dy=friction(dy); 


    stroke(40); 
    strokeWeight(4); 
    line (mouseX , mouseY , mouseX + cos (atan2 (mouseY -t1.cue_ball.center.y , mouseX - t1.cue_ball.center.x))*300 , mouseY + sin(atan2 (mouseY - t1.cue_ball.center.y , mouseX -t1.cue_ball.center.x))*300); 

    if (mousePressed) 
    { 
    power+=4; 

    } 
    if (t1.cue_ball.center.x+20 > 1000 || t1.cue_ball.center.x-20 < 0) 
    { 

    dx*=-1; 
    player.rewind(); 
    player.play(); 
    } 
    if (t1.cue_ball.center.y+20 > 600 || t1.cue_ball.center.y-20 < 0) 
    { 
    dy*=-1; 
    player.rewind(); 
    player.play(); 
    } 

    if((t1.cue_ball.center.x < 40 && (t1.cue_ball.center.y < 40 ||t1.cue_ball.center.y > 560)) || (t1.cue_ball.center.x > 980 && (t1.cue_ball.center.y > 580 || t1.cue_ball.center.y < 40))) 
    { 
    dx=0; 
    dy=0; 
    fill(255); 
    textSize(25); 
    text("GAME OVER" ,500,300); 
    player.pause(); 
    } 

if (t1.cue_ball.center.x +20 == 1000) 
{ 
    t1.cue_ball.center.x=979; 
} 
if (t1.cue_ball.center.x -20 == 0) 
{ 

    t1.cue_ball.center.x =21; 
    } 
if(t1.cue_ball.center.y -20 == 0) 
{ 
    t1.cue_ball.center.y =21; 
} 




    } 



void mouseReleased() 
{ 
    dx=t1.cue_ball.center.x-mouseX; 
    dy=t1.cue_ball.center.y-mouseY; 
    float n= sqrt(pow(dx,2)+pow(dy,2)); 

    dx*=power/n; 
    dy*=power/n; 
} 

float friction (float c) 
{ 
    c*=0.9; 
    return c; 
} 

class Ball 
{ 
    float rad; 
    Point center; 
    Point contact_point; 
    color col; 

    Ball (float a, float b) 
    { 
    center = new Point (a+=dx, b+=dy); 
    } 
} 

class Table 
{ 
    Ball [] b_arr;  
    Stick st; 
    Ball cue_ball; 

    Table (float a, float b) 
    { 

    cue_ball= new Ball(a, b); 
    } 
} 

class Point 
{ 
    float x; 
    float y; 

    Point(float a, float b) 
    { 
    x=a; 
    y=b; 
    } 
} 

class Stick 
{ 
    Point start_p; 
    Point end_p; 
    color col; 
    int length; 
} 

Da der Stick hinzugefügt wurde, hat es aufgehört, von den Wänden abprallen zu können und ich kann nicht verstehen, warum. Es funktionierte, bevor es hinzugefügt wurde, und dann hörte es einfach auf und wenn es nah ist, gibt es NullPointerException. Ich sehe nicht, wie man klebt, würde aber etwas verändern.Warum erhalte ich NullPointerException für diesen Code?

+0

wo haben Sie 'Ball [] b_arr initialisiert? Stock st; '? – SMA

+0

Haben Sie sich den StackTrace angesehen? Es würde Ihnen einen Indikator geben, wo Sie im Code die nullpointerException erhalten. – Einar

+0

bieten Stacktrace. – HaroldSer

Antwort

0

Wie Sie in Ihrem Kommentar gesagt haben: Dieser Fehler wurde durch eine fehlende Audiodatei verursacht.

Verarbeitung oft wirft NullPointerExceptions, wenn Sie keine notwendigen Dateien enthalten oder nicht die richtige Einrichtung vornehmen. Im Gegensatz zu Java, wo Sie einen Stack-Trace erhalten, kann es sehr schwierig sein, diese Art von Fehlern zu beheben, da sie aus der Verarbeitung stammen.

Eine Sache zu tun ist println() Anweisungen in Ihrem Code hinzufügen, um genau einzugrenzen, was passiert.

Auch in Zukunft bitte versuchen, eine MCVE anstelle Ihrer gesamten Skizze zu posten. Das bedeutet oft, dass Sie mit einer leeren Skizze beginnen und nur genügend Code hinzufügen, um den Fehler zu reproduzieren. Dies vermeidet all die Verwirrung, die Sie dieses Mal in den Kommentaren hatten.

Verwandte Themen