我正在處理一個尋路的演算法。如果我不畫一條與綠點和紅點之間的路徑相交的線,它就能作業,但如果我畫了,我就有一個問題,如果我呼叫一個函式,程式完全不做,而是凍結,我也不知道為什么。pixelss存盤了你所畫的東西,有各種各樣的東西,在這個問題上并不重要。 當你把它粘貼到處理程序中時,按ctrl t來自動格式化,這樣你就可以更好地理解它,但我敢打賭這是一個新手問題。
int[][] pixelss = new int[500][500] 。
void setup() {
background(255)。
size(500, 500); }
int[][] badcoos = new int[500] [500]。
void golinego() {
stroke(200, 200, 255) 。
line(30, 30, 470, 470) 。
int j = 30;
int i = 30;
while (dist(i, j, 470, 470) > 10) {
stroke(0, 0, 180) 。
circle(i, j, 1)。
if (pixelss[i 1][j 1] ==0) {
i ;j ;}
if (pixelss[i][j]==1) {
if (pixelss[i][j 1] ==1) {
if (pixelss[i 1] [j]==0) {
i ;}
} else if (pixelss[i 1] [j]==1) {
if (pixelss[i][j 1] ==0) {
j ;}
} else {
i-=1;
j-=1;}}}}
void draw() {
stroke(0, 255, 0) 。
fill(0, 255, 0) 。
circle(30, 30, 10) 。
stroke(255, 0, 0) 。
fill(255, 0, 0) 。
circle(470, 470, 10) 。
if (mousePressed == true) {
try {
stroke(0) 。
fill(0)。
circle(mouseX, mouseY, 2)。
pixelss[mouseX][mouseY] = 1;
pixelss[mouseX 1] [mouseY] = 1;
pixelss[mouseX-1] [mouseY] = 1;
pixelss[mouseX][mouseY 1] = 1;
pixelss[mouseX][mouseY-1] = 1;
pixelss[mouseX 1][mouseY 1] = 1;
pixelss[mouseX-1][mouseY 1] = 1;
pixelss[mouseX 1][mouseY-1] = 1;
pixelss[mouseX-1][mouseY-1] = 1;
}catch(ArrayIndexOutOfBoundsException e) {}}}。
void keyPressed() {
if (key=='r'/span>) {
pixelss = new int[500][500] 。
badcoos = new int[500][500] 。
background(255);}
if (key==' '/span>) {
golinego();}
if (key=='d') { golinego(;)
background(0)。
for (int i = 0; i < 500; i ) {
for (int j = 0; j < 500; j ) {
if (pixelss[i][j]==1) {
stroke(255)。
circle(i, j, 1);}}}}}
uj5u.com熱心網友回復:
當ArrayIndexOutOfBoundsException被捕獲時,你至少應該列印一些東西。
看起來你正在使用某種gui庫,請確保你在與gui分開的執行緒中進行任何處理,否則gui將變得沒有反應,并像你描述的那樣出現 "凍結"。
https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
uj5u.com熱心網友回復:
程式在你的while回圈中被抓住。
如果你列印出回圈內的i和j的值,你就可以看到這一點。他們從來沒有滿足過逃脫回圈的條件,所以這一大塊代碼反復運行,沒有任何變化。
while (dist(i, j, 470, 470) > 10) {
println(i, j);
//等...。
這將掛起應用程式,因為在再次呼叫draw函式以更新螢屏之前,while回圈需要完成。
我并不清楚您在 while 回圈中究竟在做什么,但這正是您應該關注的地方。要么改變你在回圈中的邏輯,要么改變條件,以確保代碼不會陷入無限回圈中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321077.html
標籤:
