Поради щодо гольфу в процесі обробки


13

Хто-небудь має які небудь поради щодо гольфу з для гольфу в Processing ? Це графічне розширення java, а гольф дещо складний.


Приємне запитання. Я вважаю, що поради повинні бути на Wiki Wiki. Я позначив це міграцією.
Рівень р. Св

4
Downvote ??? чому?
ТАРДІС

Не хвилюйтесь з приводу зворотного голосу ... ви втратите всю репутацію, яку ви отримали від цієї публікації після того, як вона все одно буде позначена як вікі спільноти ...
user12205

3
@ace: Репутація, здобута до того, як повідомлення позначено CW, зберігатиметься: meta.stackexchange.com/a/11741/229438
ProgramFOX

Відповіді:


7
  • Якщо анімація не потрібна, ви можете пропустити void draw()і вкласти все void setup().
  • Ініціалізація розміру полотна іноді не потрібна - вона буде ініціалізована (100, 100)за замовчуванням.
  • Якщо вам потрібно використовувати heightі widthу своєму коді, зазвичай замість них використовувати їх числові значення. Наприклад, з розміром полотна розміром (100, 100), який використовує 99для заміни, heightі widthможе заощадити 7 байт.

3

Якщо ви запускаєте код лише у способі настройки, тоді вам не потрібно писати контур методу. Наприклад, ви можете написати:

rect(10,10,90,90);

замість

void setup {
    rect(10,10,90,90);
}

І поки ви не використовуєте жодних інших методів, тоді все буде встановлено у спосіб налаштування перед запуском


Це може бути трохи баггі. Я помітив, що якщо ви спробуєте визначити функцію в статичному режимі, обробка може трохи заплутатися: puu.sh/tpzP8.png
quat

@quat до тих пір, поки ви не визначите жодних інших методів, тоді все буде встановлено у спосіб налаштування. Якщо вам потрібно визначити методи, вам потрібно буде чітко назвати метод налаштування.
HEGX64

2

(R, G, B)Позначення кольорів

Шістнадцяткові кольори

Обробка дуже гнучка в кольоровому форматі.

fill(255,255,0); //16 bytes

можна записати, використовуючи шістнадцяткові позначення як

fill(#ffff00);   //14 bytes (2 bytes saved)

Відтінки сірого

Ось особливе використання кольорів, якщо всі значення Червоного, Зеленого та Синього є однаковими (білими):

fill(255,255,255); //18 bytes
fill(#ffffff);     //14 bytes
fill(255);         //10 bytes

Усі три параметри можна скоротити до одного параметра, що містить значення масштабу сірого: від 0чорного до 255білого.

Це може бути розширено і для альфа:

fill(175,175,175,50); //translucent gray
fill(175,50);         //8 bytes shorter

Обидва означають один і той же колір, але останній спосіб коротший на 8 байт.

Альфа

Хоча очевидно, слід констатувати, що параметр альфа у визначенні кольорів необов’язковий, оскільки кольори за замовчуванням до знаку альфа 255(100% непрозорі).

Короткий зміст: кольорові формати

Використовуйте найкоротший формат кольорів, щоб висловити свій колір (не забудьте залишити зайві біти -залежно від контексту програми- наприклад: альфа або масштаб сірого)

R: Червоний G: зелений B: синій A: альфа g: відтінки сірого

RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA

2

Скоротити константи

Якщо ви коли-небудь використовуєте одне із ключових слів з усією величиною в обробці (наприклад, DIFFERENCEабо TRIANGLE_FAN), подивіться, чи коротше число, якому вони відповідають.

Наприклад, DIFFERENCEце просто значення, intщо дорівнює 32. Замість використання DIFFERENCE тут я міг би писати 32, зберігаючи 8 символів.


2

Коротша альтернатива void keyPressed(){}

void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;}           //26 bytes

Значення void draw(){}за замовчуванням потрібне для keyоновлення. Якщо користувач не натискав клавішу з моменту запуску програми, keyнадається значення " 0. Перевіривши, чи не більше 0(тобто користувач натиснув клавішу), ми маємо код гравця і економимо 10 байт.



1

Налаштування та фіксація пікселів за допомогою set ()

Ефективніше встановлювати пікселі за допомогою пікселів [] :

pixels[0] = color(255)
updatePixels();

Однак це вимагає updatePixels()і використання індексу, який залежно від сценарію вимагатиме перетворення позиції x, y в індекс пікселів. Щоб зробити речі короткими, навіть незважаючи на ефективність процесора (оскільки кожен виклик оновлює весь буфер), set () дозволяє встановлювати піксель і зобов’язуватися безпосередньо буферувати в одному дзвінку.

set(0,0,color(255));
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.