亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為正在比較的矩形著色?

如何為正在比較的矩形著色?

牛魔王的故事 2023-09-27 21:25:55
我是處理環境的新手,正在嘗試構建一個用于冒泡排序的可視化工具。我對此有一些疑問 -矩形的可視化和繪制是否正確?如何為當前正在比較的矩形著色?這可以在 java 中使用 Swing 或任何本機庫(即無需處理)來完成嗎?如果是的話,請提供一些資源。int totalNum = 10;int[] values = new int[totalNum];int i = 1;int noOfComp = 0;void draw() {  float rectPos = 0;  frameRate(10);  background(255);  for (int i = 0; i< totalNum; i++) {    //text(values[i], rectPos , values[i]);    stroke(220);    fill(50);    rect(rectPos, height - values[i], width / totalNum, values[i]);    rectPos += width / totalNum;  }  textSize(20);  text("No. Of Comparisons: ", 15, 40);  text(noOfComp, 80, 60);  bubbleSort();}void bubbleSort() {  if (i < totalNum) {    if (values[i] < values[i-1] && noOfComp++ > 0) {      fill(255,5,5);      swap(i, i-1);      delay(100);    }    i++;  } else {    i = 1;  }}void swap(int a, int b) {  int temp = values[a];  values[a] = values[b];  values[b] = temp;}void setup() {  size(700, 700);  for (int i = 0; i< totalNum; i++) {    values[i] = round(random(0, height));  }}
查看完整描述

1 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

矩形的可視化和繪制是否正確?

這是基于意見的。但它確實有效,所以是的。該代碼結構良好并遵循基本準則。


如何為當前正在比較的矩形著色?

fill()在繪制矩形之前,您必須設置單獨的顏色。顏色由紅色、綠色和藍色通道組成。通道混合成最終顏色。如果所有 3 個通道具有相同的比例,則顏色為灰度顏色。(0, 0, 0) 為黑色,(255, 255, 255) 為白色。

例如,將比較的矩形著色為紅色,將所有其他矩形著色為灰色。比較的矩形具有索引ii-1。
由于循環的控制變量for也被命名為i,因此必須更改(例如j):

for (int j = 0; j < totalNum; j++) {

? ? // [...]

}

將索引i與控制變量進行比較j。如果 j==i-1或j==i則設置紅色填充顏色 ( fill(255, 0, 0)),否則設置灰色 ( fill(127)):


for (int j = 0; j < totalNum; j++) {

? ? stroke(220);

? ? if (j==i-1 || j==i) {

? ? ? ? fill(255, 0, 0);

? ? } else {

? ? ? ? fill(127);

? ? }

? ? rect(rectPos, height - values[j], width / totalNum, values[j]);

? ? rectPos += width / totalNum;

}

如果您只想為“交換的”矩形著色,則必須確定noOfComp更改的時間。在調用prevNoOfComp之前,在變量中聲明先前的交換計數。bubbleSort如果交換計數發生變化,只需使用不同的顏色 ( if (noOfComp != prevNoOfComp && (j==i-1 || j==i))):


int noOfComp = 0;

int prevNoOfComp = 0;


void draw() {


? ? float rectPos = 0;

? ? frameRate(10);

? ? background(255);

? ? for (int j = 0; j < totalNum; j++) {

? ? ? ? stroke(220);

? ? ? ? if (noOfComp != prevNoOfComp && (j==i-1 || j==i)) {

? ? ? ? ? ? fill(255, 0, 0);

? ? ? ? } else {

? ? ? ? ? ? fill(127);

? ? ? ? }

? ? ? ? rect(rectPos, height - values[j], width / totalNum, values[j]);

? ? ? ? rectPos += width / totalNum;

? ? }

? ? textSize(12);

? ? text("No. Of Comparisons: ", 15, 40);

? ? text(noOfComp, 80, 60);


? ? prevNoOfComp = noOfComp;

? ? bubbleSort();

}

[...] 可以使用 Swing 或任何本機庫在 java 中完成

要求我們推薦或查找書籍、工具、軟件庫、教程或其他場外資源的問題對于 Stack Overflow 來說是偏離主題的,因為它們往往會吸引固執己見的答案和垃圾郵件。相反,請描述問題以及迄今為止為解決問題所采取的措施。


查看完整回答
反對 回復 2023-09-27
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號