oluştururken Processing'in kütüphanelerinden içinden aşağıdaki İşleme programı var: Onu çalıştırdığınızdaNullPointerException bir PShape
//using Papplet instead of STDraw to visually represent my grid, created by Mahmed Ibrahim
import java.awt.Color;
import processing.core.*;
import processing.core.PApplet;
public class C4Grid extends PApplet {
PShape s;
PShape[][] circleSpaces;
boolean[][] circleSpacesFilled;
boolean[][] circleHasYelowPiece;
boolean[][] circleHasRedPiece;
final float SPACES_BETWEEN_ROWS = 110;
final float SPACES_BETWEEN_COLUMNS = 130;
public C4Grid(){}
public void setup() {
System.out.println("it got to here where it breaks");
size(1000, 1000, P2D);
// Making the shape of the grid using vertices
// so I'm manually drawing my polygon.
s = createShape();
s.beginShape();
s.fill(34, 56, 100);
s.tint(34, 56, 100);
s.stroke(0);
s.strokeWeight(5);
s.vertex(400, 400);
s.vertex(400, -440);
s.vertex(360, -440);
s.vertex(360, -400);
s.vertex(-360, -400);
s.vertex(-360, -440);
s.vertex(-400, -440);
s.vertex(-400, 420);
s.vertex(-420, 420);
s.vertex(-420, 440);
s.vertex(-360, 440);
s.vertex(-360, 420);
s.vertex(-380, 420);
s.vertex(-380, 400);
s.vertex(380, 400);
s.vertex(380, 420);
s.vertex(360, 420);
s.vertex(360, 440);
s.vertex(420, 440);
s.vertex(420, 420);
s.vertex(400, 420);
s.vertex(400, 420);
s.vertex(400, -440);
s.vertex(400, 400);
s.endShape();
System.out.println("it got to here where it breaks");
// using a 2D array to create a grid of circles
// which will represent the spaces on the grid
circleHasYelowPiece = new boolean[7][6];
circleHasRedPiece = new boolean[7][6];
circleSpacesFilled = new boolean[7][6];
circleSpaces = new PShape[7][6];
for (int row = 0; row < 7; row++) {
for (int column = 0; column < 6; column++) {
circleSpaces[row][column] = createShape(ELLIPSE, -380 + (row) * SPACES_BETWEEN_ROWS,
-370 + (column) * SPACES_BETWEEN_COLUMNS, 100, 100);
circleSpaces[row][column].disableStyle();
stroke(0);
strokeWeight(5);
circleSpacesFilled[row][column] = false;
circleHasRedPiece[row][column] = false;
circleHasYelowPiece[row][column] = false;
}
}
}
public void draw() {
translate(width/2, height/2);
shape(s);
for (int row = 0; row < 7; row++) {
for (int column = 0; column < 6; column++) {
shape(circleSpaces[row][column]);
}
}
}
public boolean piecePlaced(int column, Color pieceColor) {
column = column - 1; // the choice are form 1-7 but in an array its 0-6;
boolean moveDone = false;
int i = 5;
Color red = new Color(255, 0, 0);
while (i >= 0) {
if (circleSpacesFilled[column][i] == false) {
circleSpacesFilled[column][i] = true;
if (pieceColor.equals(red)) {
circleHasRedPiece[column][i] = true;
circleSpaces[column][i].fill(255, 0, 0);
circleSpaces[column][i].tint(255, 0, 0);
} else {
circleHasYelowPiece[column][i] = true;
circleSpaces[column][i].fill(255, 255, 0);
circleSpaces[column][i].tint(255, 255, 0);
}
return true;
}
}
return false;
}
}
, bu NullPointerException
olsun. Özel durumun, İşlemenin kütüphaneleri içinden geldiğine dikkat edin - doğrudan kendi kodumdan kaynaklanmaz! şüpheli
3 hatları şunlardır: setup()
currentGame
,üstüne yakın
currentGame = new C4Game(player1Is,player2Is,player1Color,player2Color);
theGrid = new C4Grid(); theGrid.setup();
- ve
s
hepsi boş değil (sayısız kez kontrol ettim).Her satırı ayrı ayrı test ettiğimde bile,
PShape
sınıfıyla ilgili herhangi bir şeyde hata alıyorum. HerPShape
nesnesinden kurtuldum ve çalıştı, ancak düzeltmenin bir yolu var, bu yüzden kodumun bir parçası olarakPShape
'u kullanabilir miyim?
sizin StackTrace nerede? İstisna bu satırda atılmaz. – f1sh
Hayır, bir nullpointerException neden alma ve animasyon iş parçacığı hata nedeni nedeniyle bir çoğaltma değil. ne olduğunu bilmek istiyorum sadece nerede olduğunu bilmek istiyorum çünkü hataları aldığım satırın ne olduğunu hiç fark etmedim.Paylaşımı – user6199445
Bu sınıfı nasıl aradığınızı görmemiz gerekiyor. Lütfen sorunu yeniden üretmek için 'main()' metodunu ve mümkün olduğunca az satırı içeren bir [mcve] oluşturun. Örneğiniz başka bir sınıfa gerek duymamalıdır ve aslında daha önce gönderdiğiniz kodların çoğu sadece ekstradır. Doğrudan sorunla ilgili olmayan herhangi bir şeyden kurtulun. Ayrıca, hangi İşleme sürümünü kullandığınızı da ekleyin. Kod veya hata mesajlarının ekran görüntülerini göndermekten kaçının. Mümkünse, metni doğrudan kopyalayıp yapıştırın. –