Хто-небудь має які - небудь поради щодо гольфу з кодом для гольфу в Processing ? Це графічне розширення java, а гольф дещо складний.
Хто-небудь має які - небудь поради щодо гольфу з кодом для гольфу в Processing ? Це графічне розширення java, а гольф дещо складний.
Відповіді:
void draw()
і вкласти все void setup()
.(100, 100)
за замовчуванням.height
і width
у своєму коді, зазвичай замість них використовувати їх числові значення. Наприклад, з розміром полотна розміром (100, 100)
, який використовує 99
для заміни, height
і width
може заощадити 7 байт.Якщо ви запускаєте код лише у способі настройки, тоді вам не потрібно писати контур методу. Наприклад, ви можете написати:
rect(10,10,90,90);
замість
void setup {
rect(10,10,90,90);
}
І поки ви не використовуєте жодних інших методів, тоді все буде встановлено у спосіб налаштування перед запуском
(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
Якщо ви коли-небудь використовуєте одне із ключових слів з усією величиною в обробці (наприклад, DIFFERENCE
або TRIANGLE_FAN
), подивіться, чи коротше число, якому вони відповідають.
Наприклад, DIFFERENCE
це просто значення, int
що дорівнює 32. Замість використання DIFFERENCE
тут я міг би писати 32
, зберігаючи 8 символів.
void keyPressed(){}
void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;} //26 bytes
Значення void draw(){}
за замовчуванням потрібне для key
оновлення. Якщо користувач не натискав клавішу з моменту запуску програми, key
надається значення " 0
. Перевіривши, чи не більше 0
(тобто користувач натиснув клавішу), ми маємо код гравця і економимо 10 байт.
#FFFFFF
Пов'язане: Позначення кольорів
Замість використання цього для білого:
color(255) //10 bytes
Ви можете це зробити:
color(-1) //9 bytes
і збережіть 1 байт.
Ефективніше встановлювати пікселі за допомогою пікселів [] :
pixels[0] = color(255)
updatePixels();
Однак це вимагає updatePixels()
і використання індексу, який залежно від сценарію вимагатиме перетворення позиції x, y в індекс пікселів. Щоб зробити речі короткими, навіть незважаючи на ефективність процесора (оскільки кожен виклик оновлює весь буфер), set () дозволяє встановлювати піксель і зобов’язуватися безпосередньо буферувати в одному дзвінку.
set(0,0,color(255));