第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么我不能使用 robot.getPixelColor 讓我的紅球停在藍(lán)框上?

為什么我不能使用 robot.getPixelColor 讓我的紅球停在藍(lán)框上?

神不在的星期二 2022-12-21 10:54:50
標(biāo)題。GUI 如下所示:Ball Puzzle GUI下面的代碼是我的定時(shí)器任務(wù),負(fù)責(zé)控制球的向下運(yùn)動(dòng),調(diào)用者:timer.scheduleAtFixedRate(moveDown, 0, 20);每當(dāng)按下箭頭鍵時(shí),球應(yīng)該會(huì)繼續(xù)朝那個(gè)方向移動(dòng),直到它遇到一個(gè)正方形。我知道我現(xiàn)在正在使用 .cancel() 但我打算通過(guò)臨時(shí)暫停 TimerTask 來(lái)解決這個(gè)問(wèn)題。雖然不向 X 或 Y 值添加任何內(nèi)容,但球永遠(yuǎn)不會(huì)停止。(我應(yīng)該提一下,當(dāng)它到達(dá)底部時(shí),它會(huì)循環(huán)回到頂部)當(dāng)不更改 X 或 Y 值時(shí),輸出的顏色似乎會(huì)發(fā)生變化。例如,第一次在 (0,360) 時(shí),輸出顏色為 (208,208,208),而下一次在 (0,360) 時(shí),輸出顏色為 (240,240,240)。當(dāng)添加我認(rèn)為會(huì)在框的邊緣停止它的東西時(shí),Y + 51,它仍然沒(méi)有停止。檢測(cè)到的唯一顏色是 (208,208,208),這是一種灰色。如果我同時(shí)加上 Y+51 和 X+25,球仍然沒(méi)有停止,只輸出灰色。請(qǐng)注意,我已將速度更改為 1,但沒(méi)有任何區(qū)別。現(xiàn)在,幸運(yùn)的是,我發(fā)現(xiàn)如果我將 80 加到 Y 上,將 25 加到 X 上,它就會(huì)停在盒子的邊緣。我還發(fā)現(xiàn),如果我為負(fù)責(zé)向上移動(dòng)球(速度為負(fù))的 TimerTask 添加 25 到 Y 和 25 到 X,球?qū)⑼V乖诰嚯x框邊緣 1 個(gè)像素的位置。   public void run() {      try {            Robot robot = new Robot();            int y = ball.positionY + 80;            int x = ball.positionX + 25;            System.out.println(ball.positionX);            System.out.println(ball.positionY);            color = robot.getPixelColor(x, y);            System.out.println("Red   = " + color.getRed());            System.out.println("Green = " + color.getGreen());            System.out.println("Blue  = " + color.getBlue());        } catch (AWTException e) {            e.printStackTrace();        }        if((color.getRed() == 0) && (color.getGreen() == 0) && (color.getBlue() == 255)){            moveDown.cancel();            moving = false;        }        else{        ball.positionY += 5;        if (ball.positionY > 670) {            ball.positionY = 0;        }        }        ball.repaint();    }有誰(shuí)知道到底發(fā)生了什么?我還沒(méi)有弄清楚右/左方向,因?yàn)樗坪鯖](méi)有模式。
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

機(jī)器人不是檢測(cè)方塊的可靠方法。雙緩沖可能意味著您的像素實(shí)際上并未顯示。


由于您自己的代碼正在繪制正方形,因此請(qǐng)將這些正方形的坐標(biāo)保存在私有字段中,并使用它們來(lái)檢查碰撞而不是檢查像素顏色:


private final Collection<Rectangle> squares = new ArrayList<>();


// ...


    if (squares.stream().anyMatch(sq -> sq.contains(x, y))) {

        moveDown.cancel();

        moving = false;

    } else {

        ball.positionY += 5;

        if (ball.positionY > 670) {

            ball.positionY = 0;

        }

    }

另請(qǐng)注意,Swing 對(duì)于多線程的使用是不安全的。您應(yīng)該使用javax.swing.Timer而不是 java.util.Timer,因?yàn)樗?AWT 事件分派線程中正確執(zhí)行其任務(wù)。



查看完整回答
反對(duì) 回復(fù) 2022-12-21
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)