מבוא לקוד 🎳
יסודות התכנות דרך creative coding
מה זה קוד?
קוד הוא ממשק בין שפה אנושית לשפת מכונה.
שפת מכונה (בינארית) אינה קריאה לבני אדם — היא מורכבת מרצפים של אפסים ואחדות בלבד. שפות תכנות מאפשרות לנו לכתוב לוגיקה בצורה מופשטת וקריאה, והמחשב מתרגם אותה לשפה שהוא מבין.
מחשבה / לוגיקה אנושית
(למשל: ״אם לחצו על הכפתור, תדליק אור״)
↓
שפת תכנות (קוד)
(טקסט קריא ומופשט – if button_pressed: light.on())
↓
תהליך התרגום (מהדר/מפרש)
(ה״מתורגמן״ שהופך פקודות מופשטות להוראות מעבד)
↓
שפת מכונה (Binary)
(רצף חשמלי של 0 ו-1: 10110001 01101001...)
ההבדל בין שפות קוד לשפות תצוגה
בשיעור הקודם למדנו HTML ו־CSS — שפות שמגדירות מבנה ועיצוב (State).
שפות תכנות (כמו JavaScript) מגדירות התנהגות (Logic) — מה קורה כשהמשתמש לוחץ, מזיז את העכבר, או כשעובר זמן מסוים.
| מאפיין | שפות תצוגה (HTML/CSS) | שפת קוד (JavaScript) |
|---|---|---|
| תפקיד | הגדרת מצב (State) קבוע. | הגדרת לוגיקה (Logic) ושינוי. |
| זמן | סטטי — הכל קורה ברגע הטעינה. | דינמי — דברים משתנים תוך כדי תנועה. |
| דוגמה | ״הכפתור יהיה כחול ובמרכז.״ | ״אם המשתמש לא מילא אימייל, צבע את הכפתור באדום.״ |
שפות קוד
יש הרבה שפות תכנות, כל אחת מתאימה לעולמות שונים. הנה שלוש דוגמאות:
ספריית p5.js של JavaScript
p5.js היא ספריית creative coding — כלי שמרחיב את JavaScript ומאפשר ליצור גרפיקה, אנימציה ואינטראקציה בקלות.
היא מיועדת ליצירה עם קוד, ומספקת פונקציות מוכנות לציור צורות, צבעים, תנועה ועוד.
☝️ נכתוב את הקוד שלנו ב־עורך p5.js המקוון — או לחצו על ״עורך״ בתפריט הצף מימין ונסו ישירות כאן באתר.
לקסיקון בסיסי (Syntax) של JavaScript
לפני שנתחיל לכתוב, כמה סימנים שחשוב להכיר:
// זו הערה — המחשב מתעלם מהשורה הזו
function setup() { // פותחים בלוק בסוגריים מסולסלים
createCanvas(400, 400); // פקודה עם פרמטרים, מסתיימת בנקודה-פסיק
}
המבנה של כל קוד ב־p5.js
כל סקיצה (sketch) ב־p5.js בנויה משני חלקים עיקריים:
function setup() {
createCanvas(400, 400);
}
function draw() {
background(0, 255, 0);
fill(255, 0, 255);
circle(200, 200, 250);
}
createCanvas(w, h)
יוצר את שטח היצירה (Canvas) ברוחב w ובגובה h פיקסלים.
פקודות "מברשת" (הגדרת סגנון)
פקודות שמגדירות צבע וסגנון — חלות על כל מה שנצייר אחריהן:
function draw() {
background(30, 30, 80);
fill(255, 100, 50);
stroke(255, 255, 0);
circle(200, 200, 80);
}
ערכי הצבע הם r, g, b — אדום, ירוק וכחול, כל אחד בטווח 0–255.
אפשר גם להעביר ערך אחד בלבד לגוון אפור: background(220).
אפשר להוסיף ערך רביעי — alpha — שקובע את רמת השקיפות, גם הוא בטווח 0–255.
למשל: fill(255, 100, 50, 120) ייתן עיגול עם שקיפות.
מברשת: בתוקף עד לדריסה
fill(255, 0, 0);
fill(0, 0, 255);
circle(200, 200, 80); // עיגול כחול
אותה הגדרת "מברשת" נשארת בתוקף לכל השורות שמתחתיה — כל צורה שתציירו אחרי fill או stroke תקבל את הצבעים האלה, עד שתגדירו מחדש.
לדרוס את ההגדרה: קוראים שוב ל־fill(...) או ל־stroke(...) עם ערכים חדשים.
פקודות "צורות" (ביצוע)
circle(x, y, d)
— מציירת עיגול:
function setup() {
createCanvas(400, 400);
}
function draw() {
background(0, 255, 0);
fill(255, 0, 255);
circle(200, 200, 250);
}
נקודת ה־(0, 0) נמצאת בפינה השמאלית-עליונה של הקנבס. ערך ה־x עולה ימינה, ערך ה־y עולה כלפי מטה.
✏️ תרגיל: ציירו — באמצעות עיגולים בלבד.
תנאי — If Statement
משפט התנאי מאפשר לנו לבדוק מצב מסוים ולהחליט אם לבצע פעולה.
if (mouseIsPressed) {
fill(255, 0, 0);
}
mouseIsPressed
— משתנה מובנה ב-p5.js שמחזיר true כשלוחצים על העכבר ו-false כשלא.
function draw() {
background(220);
if (mouseIsPressed) {
fill(255, 0, 0);
} else {
fill(0, 0, 255);
}
circle(200, 200, 80);
}
else — "אחרת". מה לעשות כשהתנאי לא מתקיים.
אם התנאי בתוך ה־if מחזיר false,
הקוד שבתוך ה־else ירוץ במקום.
✏️ תרגיל: שנו אלמנט בלחיצה על העכבר.
משתנה — Variable
משתנה הוא שם המייצג ערך שמשתנה בזמן אמת.
במקום להזין מספר קבוע כמו 200,
משתמשים בשם כמו X שהמחשב מעדכן וקורא בכל רגע מחדש.
כך ניתן לשמור, לעדכן ולבצע שימוש חוזר במידע דינמי — כמו מיקום, צבע או גודל — לאורך כל הקוד.
let X = 10; // הכרזה ראשונית על משתנה
X = 50; // השמת ערך חדש למשתנה
let
— מילת מפתח ב-JavaScript להכרזה על משתנה.
אפשר במקום מספר קבוע במיקום של הצורה, להזין את המשתנים:
let r = 50;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
circle(mouseX, mouseY, r);
}
המשתנה r מוגדר מחוץ לפונקציות — כך הוא נגיש גם ב-setup() וגם ב-draw().
✏️ תרגיל: הזיזו את האלמנט באמצעות מיקום העכבר.
אקראיות — Generative
random(min, max)
— מחזירה מספר אקראי שגדול מ-min וקטן מ-max.
// גוון אקראי לרקע
background(
random(0, 255),
random(0, 255),
random(0, 255)
);
// עיגול בגודל אקראי במיקום העכבר
function draw() {
fill(random(0, 255), 100, 200);
circle(mouseX, mouseY, random(10, 80));
}
✏️ תרגיל: שנו את ערכי האלמנטים לפרמטרים אקראיים.
עוד פקודות
function draw() {
background(240);
stroke(0);
line(50, 50, 350, 350);
fill(100, 200, 100);
rect(60, 200, 120, 80);
noFill();
stroke(255, 0, 0);
ellipse(300, 150, 100, 60);
}
פקודות טקסט
function draw() {
background(240);
textSize(32);
textAlign(CENTER);
fill(0);
text("שלום עולם", 200, 200);
}
אפשר גם להעלות פונט מקומי בעזרת
loadFont():
let font;
function preload() {
font = loadFont('assets/MyFont.otf');
}
function setup() {
createCanvas(400, 400);
textFont(font);
}
function draw() {
background(240);
textSize(48);
textAlign(CENTER);
fill(0);
text("שלום", 200, 220);
}
p5.js באתר שלכם
עד עכשיו כתבנו קוד בעורך p5.js. אבל אפשר לשלב סקיצה ישירות באתר שלכם — כחלק מהעיצוב עצמו.
שני שלבים:
const sketch = function(p) {
p.setup = function() {
p.createCanvas(400, 300);
};
p.draw = function() {
p.background(220);
p.circle(p.mouseX, p.mouseY, 40);
};
};
new p5(sketch, document.getElementById('my-div'));
ב-Instance Mode כל פונקציה מתחילה ב-p. — למשל p.circle() במקום circle().
בכל דוגמה למטה תוכלו לראות אתר עם סקיצת p5 משולבת, ובצד — הקוד.
Hero של האתר
קנבס p5 ברוחב מלא כרקע אינטראקטיבי ל-Hero Section — האזור הראשי בראש העמוד. הטקסט צף מעל.
דוגמה חיה ←לוגו של האתר
קנבס קטן בתוך ה-Navbar מצייר לוגו אנימטיבי — מגיב ל-hover ומשתנה לאורך זמן.
דוגמה חיה ←סמן מותאם (Custom Cursor)
קנבס שקוף בגודל המסך מחליף את סמן הדפדפן באלמנט מצויר — עם שובל, תגובה ל-hover מעל קישורים, והקטנה בלחיצה.
דוגמה חיה ←מה עוד אפשר?
עוד רעיונות לשילוב p5.js באתר:
✏️ תרגיל: בחרו אחד מהרעיונות ושלבו סקיצת p5 באתר שלכם.
רפרנסים
אתרי עזר שכדאי להכיר ולהשתמש בהם:
- p5.js Reference — תיעוד כל הפונקציות של p5.js
- p5.js Examples — דוגמאות קוד רשמיות של p5.js
- OpenProcessing — אתר של קהילת ה-p5.js עם המון דוגמאות
לתרגול נוסף
- The Coding Train — סדרת וידאו מצוינת על creative coding עם p5.js
- Tech With Tim — הדרכות תכנות למתחילים