When I first heard about creating a self-portrait, my mind immediately gravitated towards something that truly defines me – cricket. As someone deeply passionate about the sport, I couldn’t think of a better way to portray myself than through a project that encapsulates the essence of my love for cricket.
In this self-portrait, I envisioned a scene where a girl, embodying my presence, stands proudly with a cricket bat in her hands. The cricket ball, symbolizing the constant motion and dynamism of the game, is placed on the ground, perpetually moving. To add an interactive element, I incorporated the ability for the ball to jump when the user presses the mouse. The subtle details matter, and in this digital representation of myself, the girl periodically opens and closes her eyes every two seconds.
Code:
// Initializing the variables let ballX = 220; let ballY = 525; let ballSpeedX = 1; let ballSpeedY = 0; let isJumping = false; let jumpHeight = 100; let eyeColor = '#FFFFFF'; let pupilcolour = '#E4DDDD'; function setup() { createCanvas(600, 550); } function draw(){ background(200); // sky fill("#E5F7FA"); // gorund rect(0,0,599,450); fill("rgb(21,144,21)"); rect(0,442,599,600); noStroke(); fill("#C3ECF1") // clouds circle(70,70,50); circle(90,60,50); circle(110,55,50); circle(130,70,50); circle(300,100,50); circle(320,90,50); circle(340,85,50); circle(360,100,50); // Thumbs of both the hands fill('#E8BEAC') ellipse(263,255,8,20); ellipse(504,231,8,15); // bat fill('#C29C65') ellipse(157,266,10,25); // cylinder(20, 50); rect(160,255,180,22); quad(317,256,326,241,326,288,317,276); rect(326,241,250,46); ellipse(575,260,20,55) stroke('#D5B78B') strokeWeight(3); quad(327,234,326,241,575,243,573,234) // face noStroke(); fill('#252423') ellipse(390,200,100,110); ellipse(410,200,100,110); fill('#E8BEAC') ellipse(400,200,95,105); // print(mouseX+ ","+ mouseY); // halmet rect(389,245,25,40) // hair and head fill('#252423') arc(400, 190, 100, 100, PI, 0); // hair stroke(50); strokeWeight(2); line(360,166,360,189); line(366,166,366,189); line(372,166,372,189); line(380,166,380,189); line(386,166,386,189); line(392,166,392,189); line(400,166,400,189); line(406,166,406,189); line(412,166,412,189); line(418,166,418,189); line(424,166,424,189); line(430,166,430,189); line(436,166,436,189); line(442,166,442,189); // eyes if (frameCount % 120 == 0) { eyeColor = (eyeColor === '#FFFFFF') ? '#000000' : '#FFFFFF'; } if (frameCount % 120 == 0) { pupilcolour=(pupilcolour === '#E4DDDD') ? '#000000' : '#E4DDDDF'; } fill(eyeColor); circle(377, 195, 15); circle(422, 195, 15); fill(pupilcolour); circle(377, 195, 5); circle(422, 195, 5); // lips noStroke(197,55,80); fill('rgb(228,10,48)') arc(400,223,30,15,0,PI) // body // rect(348,270,110,150); quad(388,270,344,276,458,276,415,270); rect(350,276,105,120); // left arm quad(350,274,350,309,287,330,287,300); quad(287,300,287,330, 232,279,260,278); // right aarm quad(455,277,455,308,515,330,510,302); quad(505,302,512,286,534,286,515,331); // skirt fill('#721781') quad(350,396,350,506,455,506,455,396); // fill('black') // arc(350, 396, 50, 200, 0, PI + QUARTER_PI, CHORD); // arc(350, 396,50, 100, 0, PI + QUARTER_PI, PIE); ellipse(350, 450,30,110); ellipse(454, 450,30,110); // ellipse(403, 490,115,30); ellipse(403, 400,115,30); fill('#E8BEAC') quad(359,505,368,550,397,550,390,505); quad(415,505,415,550,444,550,445,505); // fingers quad(264,282,269,277,224,277,239,286); // ellipse(263,255,8,20); quad(262,245,251,254,253,261,262,253); ellipse(252,257,7,7); rect(244,246,7,20); ellipse(247.5,266,7,7); ellipse(247.5,245,7,7); quad(247,241,260,247,253,253,249,248); rect(236,248,7,20); ellipse(239.5,249,7,7); ellipse(239.5,269,7,7); rect(228,249,7,18); ellipse(231.5,251,7,7); ellipse(231.5,267,7,7); rect(220,251,6,15); ellipse(223,254,7,7); ellipse(223,264,7,7); // right hand fingers rect(532,228,6,15); ellipse(535,228,6,6); ellipse(535,242,6,6); rect(524,227,6,20); ellipse(527,229,7,7); ellipse(527,247,7,7); rect(516,224,6,25); ellipse(519,225,7,7); ellipse(519,247,7,7); rect(509,220,6,25); ellipse(512,223,7,7); ellipse(512,246,7,7); quad(221,259,221,249,248,249,248,241); quad(536,226,535,235,512,230,512,220); // Check if mouse is pressed if (mouseIsPressed && !isJumping) { isJumping = true; ballSpeedY = -5; } // Move the ball ballX += ballSpeedX; ballY += ballSpeedY; // apply gravity if not jumping if (!mouseIsPressed && ballY < 525) { ballSpeedY += 0.5; } else if (ballY >= 525) { ballY = 525; ballSpeedY = 0; isJumping = false; } if (ballX + 25 >= width || ballX - 25 <= 0) { ballSpeedX *= -1; } // Ball fill('#FFEB3B'); circle(constrain(ballX, 25, width - 25), ballY, 50); fill('#E91E63'); ellipse(constrain(ballX, 25, width - 25), ballY, 20, 50); ellipse(constrain(ballX, 25, width - 25), ballY, 50, 20); }
Reflection: