Introduction

applications चा वापर करून games तयार केले असतील, तर Introduction आणि Summary मध्ये तेही सांगता येईल.

Introduction

या अभ्यासामध्ये मी Interface आणि Application Programming याबद्दल माहिती घेतली. PictoBlox, ThingSpeak, Processing, Web Server, p5.js आणि Blockly यांचा वापर करून वेगवेगळे practical आणि games तयार केले. या applications च्या मदतीने programming, interface design आणि hardware-software connection याबद्दल माहिती मिळाली.

या अभ्यासामध्ये मी PictoBlox आणि Blockly वापरून block programming करून games तयार केले. Processing आणि p5.js वापरून simple games आणि interactive interface तयार केले. Web Server च्या मदतीने ESP32 control करण्याचा practical केला आणि ThingSpeak वर sensor data पाहण्याचा प्रयोग केला. या सर्व practical मुळे मला programming आणि application तयार करण्याचा चांगला अनुभव मिळाला.

Individual Assignment

Task

applications वापरून Interface तयार करणे आणि त्याच्या मदतीने simple games व interactive applications तयार करणे.

work

या Individual Assignment मध्ये मी Interface आणि Application Programming चा अभ्यास केला. PictoBlox, ThingSpeak, Processing, Web Server, p5.js आणि Blockly या applications चा वापर करून वेगवेगळे practical आणि simple games तयार केले. यामधून programming, interface आणि application तयार करण्याची basic माहिती मिळाली.

PictoBlox म्हणजे काय?

PictoBlox हे एक block-based programming software आहे. यामध्ये वेगवेगळे blocks एकमेकांना जोडून program तयार करता येतो. त्यामुळे programming शिकणे सोपे जाते.PictoBlox चा वापर games, animation, robotics, Arduino, sensors आणि interactive projects तयार करण्यासाठी केला जातो.

मी PictoBlox मध्ये blocks वापरून simple game तयार केला. Game मध्ये player आणि objects तयार केले. Player ची movement control करण्यासाठी Motion आणि Control blocks वापरले. Sensing blocks वापरून object detect केले आणि score system तयार केला.Edit Post “Week – 5 Networking and Communications” ‹ DESIGN INNOVATION CENTER — WordPress

PictoBlox Interface मध्ये:

  • Stage – Game दिसण्याची जागा.
  • Sprite – Game मधील character.
  • Blocks Area – Program तयार करण्याची जागा.
  • Green Flag – Program सुरू करण्यासाठी.
  • Keys – Character control करण्यासाठी.

PictoBlox Working Process

  1. Project Start – नवीन project सुरू केला.
  2. Sprite – Game साठी character निवडला.
  3. Blocks – आवश्यक blocks वापरून program तयार केला.
  4. Input – Keyboard किंवा mouse वापरला.
  5. Run – Green Flag वर click करून game सुरू केला.
  6. Output – Program नुसार character move झाला.
  7. Testing – Game चालवून program तपासला

PictoBlox चा interface आणि working process शिकलो. Blocks वापरून simple game तयार केला आणि keyboard व mouse च्या मदतीने character control केला. यामुळे मला basic programming, game logic आणि interface तयार करण्याची माहिती मिळाली.

Blockly

Blockly – Task

Blockly वापरून block programming शिकणे आणि blocks च्या मदतीने एक simple game तयार करणे हा मुख्य task होता. Game तयार करताना character movement, condition, loop आणि score यांचा वापर केला..

work

या Individual Assignment मध्ये मी Blockly चा अभ्यास केला. Blockly च्या interface मधील वेगवेगळे blocks वापरून simple game तयार केला. Movement, condition, loop आणि variable यांचा वापर करून game ची basic programming केली. यामधून block programming, game logic आणि interface तयार करण्याची basic माहिती मिळाली.

Blockly म्हणजे काय?

Blockly हे एक visual programming tool आहे. यामध्ये code type करण्याऐवजी वेगवेगळे blocks जोडून program तयार करता येतो.

Blockly चा वापर games, programming शिकण्यासाठी, robotics आणि simple applications तयार करण्यासाठी केला जातो.

Simple:
Blocks जोडणे → Program तयार करणे → Output मिळवणे

Blockly Interface

Blockly मध्ये program तयार करण्यासाठी वेगवेगळे भाग वापरले जातात.

Events / Actions – Input नुसार action देण्यासाठी.

Workspace – Blocks जोडून program तयार करण्याची जागा.

Block Menu – वेगवेगळे programming blocks निवडण्यासाठी.

Logic Blocks – True/False आणि condition तयार करण्यासाठी.

Loop Blocks – एखादे काम पुन्हा करण्यासाठी.

Math Blocks – Number आणि calculation साठी.

Variables – Score किंवा value store करण्यासाठी.

Blockly Working Process

Program सतत run करून game चे output पाहिले.

User कडून keyboard किंवा mouse input घेतला.

Input नुसार योग्य blocks चालवले.

Blocks मधील condition तपासली.

Condition योग्य असल्यास action केला.

Character किंवा object ची movement झाली.

योग्य action झाल्यावर score update केला.

Blockly हे Google ने विकसित केलेले visual block-based programming tool आहे. यामध्ये code टाइप करण्याऐवजी वेगवेगळे blocks जोडून program तयार केला जातो. प्रत्येक block मध्ये programming मधील एक instruction असते.

Input → Blocks → Program Logic → Output

Blockly

Blockly – Task

Blockly वापरून block programming शिकणे आणि blocks च्या मदतीने एक simple game तयार करणे हा मुख्य task होता. Game तयार करताना character movement, condition, loop आणि score यांचा वापर केला..

work

या Individual Assignment मध्ये मी Blockly चा अभ्यास केला. Blockly च्या interface मधील वेगवेगळे blocks वापरून simple game तयार केला. Movement, condition, loop आणि variable यांचा वापर करून game ची basic programming केली. यामधून block programming, game logic आणि interface तयार करण्याची basic माहिती मिळाली.

Blockly म्हणजे काय?

Blockly हे एक visual programming tool आहे. यामध्ये code type करण्याऐवजी वेगवेगळे blocks जोडून program तयार करता येतो.

Blockly चा वापर games, programming शिकण्यासाठी, robotics आणि simple applications तयार करण्यासाठी केला जातो.

Simple:
Blocks जोडणे → Program तयार करणे → Output मिळवणे

Blockly Interface

Blockly मध्ये program तयार करण्यासाठी वेगवेगळे भाग वापरले जातात.

Events / Actions – Input नुसार action देण्यासाठी.

Workspace – Blocks जोडून program तयार करण्याची जागा.

Block Menu – वेगवेगळे programming blocks निवडण्यासाठी.

Logic Blocks – True/False आणि condition तयार करण्यासाठी.

Loop Blocks – एखादे काम पुन्हा करण्यासाठी.

Math Blocks – Number आणि calculation साठी.

Variables – Score किंवा value store करण्यासाठी.

Blockly Working Process

Program सतत run करून game चे output पाहिले.

User कडून keyboard किंवा mouse input घेतला.

Input नुसार योग्य blocks चालवले.

Blocks मधील condition तपासली.

Condition योग्य असल्यास action केला.

Character किंवा object ची movement झाली.

योग्य action झाल्यावर score update केला.

Blockly हे Google ने विकसित केलेले visual block-based programming tool आहे. यामध्ये code टाइप करण्याऐवजी वेगवेगळे blocks जोडून program तयार केला जातो. प्रत्येक block मध्ये programming मधील एक instruction असते.

Input → Blocks → Program Logic → Output

Blockly मध्ये सर्वप्रथम application किंवा website उघडून आवश्यक programming blocks निवडले जातात. हे blocks Drag and Drop करून workspace मध्ये एकमेकांना जोडले जातात आणि program तयार केला जातो. Logic, Conditions, Loops आणि Variables यांचा वापर करून program चे working ठरवले जाते. तयार केलेले blocks programming code मध्ये convert होतात आणि Run केल्यावर output मिळतो. Program मध्ये error असल्यास Testing आणि Debugging करून blocks मध्ये आवश्यक बदल केले जातात. अशा प्रकारे Blockly च्या मदतीने सोप्या पद्धतीने programming, games आणि applications तयार करता येतात.

p5.js – Task

p5.js वापरून JavaScript programming शिकणे आणि त्याच्या मदतीने एक simple game तयार करणे हा मुख्य task होता. Game तयार करताना character movement, condition, loop, variable आणि score यांचा वापर केला.

Work

या Individual Assignment मध्ये मी p5.js चा अभ्यास केला. p5.js Editor मध्ये JavaScript code लिहून simple game तयार केला. Game मध्ये character movement, condition, loop आणि variable यांचा वापर करून game ची basic programming केली. यामधून coding, game logic, graphics आणि interface तयार करण्याची basic माहिती मिळाली.

p5.js म्हणजे काय?

p5.js हे JavaScript वर आधारित creative coding library आहे. याच्या मदतीने drawing, animation, interactive graphics आणि simple games तयार करता येतात.

p5.js चा वापर programming शिकण्यासाठी, graphics तयार करण्यासाठी, animation आणि interactive applications बनवण्यासाठी केला जातो.

Simple:

Code लिहिणे → Program Run करणे → Graphics / Game तयार करणे → Output मिळवणे

let playerX;
let playerY;
let playerW = 40;
let playerH = 60;

let obstacles = [];
let score = 0;
let speed = 5;
let gameOver = false;

function setup() {
  createCanvas(600, 400);

  playerX = width / 2;
  playerY = height - 80;

  // Obstacles
  for (let i = 0; i < 5; i++) {
    obstacles.push({
      x: random(100, 500),
      y: -i * 150,
      w: 40,
      h: 40
    });
  }
}

function draw() {
  background(180, 220, 170);

  // Road
  fill(100);
  rect(100, 0, 400, height);

  // Road lines
  stroke(255);
  strokeWeight(4);

  for (let y = 0; y < height; y += 60) {
    line(300, y, 300, y + 30);
  }

  noStroke();

  if (!gameOver) {

    // Player
    fill(0, 100, 255);
    rect(playerX, playerY, playerW, playerH);

    // Player movement
    if (keyIsDown(LEFT_ARROW)) {
      playerX -= 6;
    }

    if (keyIsDown(RIGHT_ARROW)) {
      playerX += 6;
    }

    // Keep player on road
    playerX = constrain(playerX, 105, 455);

    // Obstacles
    for (let obstacle of obstacles) {

      fill(200, 50, 50);
      rect(
        obstacle.x,
        obstacle.y,
        obstacle.w,
        obstacle.h
      );

      // Move obstacle
      obstacle.y += speed;

      // Collision
      if (
        playerX < obstacle.x + obstacle.w &&
        playerX + playerW > obstacle.x &&
        playerY < obstacle.y + obstacle.h &&
        playerY + playerH > obstacle.y
      ) {
        gameOver = true;
      }

      // Reset obstacle
      if (obstacle.y > height) {
        obstacle.y = -random(100, 300);
        obstacle.x = random(110, 450);

        score++;
        
        // Increase speed
        if (score % 5 === 0) {
          speed += 1;
        }
      }
    }

    // Score
    fill(255);
    textSize(22);
    text("Score: " + score, 20, 30);

  } else {

    // Game Over Screen
    fill(0);
    textAlign(CENTER);

    textSize(45);
    text("GAME OVER", width / 2, 170);

    textSize(25);
    text("Score: " + score, width / 2, 215);

    textSize(18);
    text("Press R to Restart", width / 2, 255);

    textAlign(LEFT);
  }
}

// Restart
function keyPressed() {
  if (key === "r" || key === "R") {

    score = 0;
    speed = 5;
    gameOver = false;

    playerX = width / 2;

    for (let obstacle of obstacles) {
      obstacle.y = -random(100, 500);
      obstacle.x = random(110, 450);
    }
  }
}

p5.js Interface

let snake = [];
let fruit;

let direction = "RIGHT";

let score = 0;
let gameOver = false;

// Snake size
let grid = 30;

function setup() {
  createCanvas(600, 400);

  // Slow speed
  frameRate(8);

  // Big starting snake
  snake.push({ x: 300, y: 180 });
  snake.push({ x: 270, y: 180 });
  snake.push({ x: 240, y: 180 });
  snake.push({ x: 210, y: 180 });

  createFruit();
}

function draw() {
  background(50, 150, 70);

  if (!gameOver) {

    moveSnake();

    // Draw Snake
    for (let i = 0; i < snake.length; i++) {

      if (i === 0) {
        // Big Head
        fill(0, 70, 0);
        rect(snake[i].x, snake[i].y, grid, grid);

        // Eyes
        fill(255);
        circle(snake[i].x + 9, snake[i].y + 9, 6);
        circle(snake[i].x + 21, snake[i].y + 9, 6);

        fill(0);
        circle(snake[i].x + 9, snake[i].y + 9, 3);
        circle(snake[i].x + 21, snake[i].y + 9, 3);

      } else {
        // Big Body
        fill(0, 200, 0);
        rect(snake[i].x, snake[i].y, grid, grid);
      }
    }

    // Fruit
    fill(255, 0, 0);
    circle(
      fruit.x + grid / 2,
      fruit.y + grid / 2,
      grid - 4
    );

    // Fruit Collision
    if (
      snake[0].x === fruit.x &&
      snake[0].y === fruit.y
    ) {

      score++;

      // Add TWO body parts
      let tail = snake[snake.length - 1];

      snake.push({
        x: tail.x,
        y: tail.y
      });

      snake.push({
        x: tail.x,
        y: tail.y
      });

      createFruit();
    }

    // Wall Collision
    if (
      snake[0].x < 0 ||
      snake[0].x >= width ||
      snake[0].y < 0 ||
      snake[0].y >= height
    ) {
      gameOver = true;
    }

    // Self Collision
    for (let i = 1; i < snake.length; i++) {

      if (
        snake[0].x === snake[i].x &&
        snake[0].y === snake[i].y
      ) {
        gameOver = true;
      }
    }

    // Score
    fill(255);
    textSize(22);
    text("Score: " + score, 20, 30);

  } else {

    // Game Over
    background(0);

    fill(255);
    textAlign(CENTER);

    textSize(40);
    text("GAME OVER", width / 2, 160);

    textSize(25);
    text(
      "Score: " + score,
      width / 2,
      205
    );

    textSize(18);
    text(
      "Press R to Restart",
      width / 2,
      245
    );

    textAlign(LEFT);
  }
}


// Move Snake
function moveSnake() {

  let head = {
    x: snake[0].x,
    y: snake[0].y
  };

  if (direction === "UP") {
    head.y -= grid;
  }

  if (direction === "DOWN") {
    head.y += grid;
  }

  if (direction === "LEFT") {
    head.x -= grid;
  }

  if (direction === "RIGHT") {
    head.x += grid;
  }

  snake.unshift(head);
  snake.pop();
}


// Keyboard Controls
function keyPressed() {

  if (
    keyCode === UP_ARROW &&
    direction !== "DOWN"
  ) {
    direction = "UP";
  }

  if (
    keyCode === DOWN_ARROW &&
    direction !== "UP"
  ) {
    direction = "DOWN";
  }

  if (
    keyCode === LEFT_ARROW &&
    direction !== "RIGHT"
  ) {
    direction = "LEFT";
  }

  if (
    keyCode === RIGHT_ARROW &&
    direction !== "LEFT"
  ) {
    direction = "RIGHT";
  }

  // Restart
  if (key === "r" || key === "R") {
    restartGame();
  }
}


// Create Fruit
function createFruit() {

  fruit = {
    x: floor(random(width / grid)) * grid,
    y: floor(random(height / grid)) * grid
  };
}


// Restart
function restartGame() {

  snake = [];

  snake.push({ x: 300, y: 180 });
  snake.push({ x: 270, y: 180 });
  snake.push({ x: 240, y: 180 });
  snake.push({ x: 210, y: 180 });

  direction = "RIGHT";
  score = 0;
  gameOver = false;

  createFruit();
}

p5.js Editor मध्ये program तयार करण्यासाठी वेगवेगळे भाग वापरले जातात.

Code Editor – JavaScript code लिहिण्यासाठी.

Run Button – लिहिलेला program चालवण्यासाठी.

Canvas – Graphics, character आणि game objects दाखवण्यासाठी.

Console – Error आणि program ची माहिती पाहण्यासाठी.

Functions – Program मधील वेगवेगळी कामे करण्यासाठी.

Variables – Score, position आणि इतर values store करण्यासाठी.

p5.js Working Process

सर्वप्रथम p5.js Editor उघडून JavaScript code लिहिला.

setup() function मध्ये game ची सुरुवातीची settings तयार केली.

draw() function च्या मदतीने game सतत run केला.

Keyboard किंवा mouse कडून user input घेतला.

Input नुसार character किंवा object ची movement केली.

if condition वापरून game मधील वेगवेगळ्या conditions तपासल्या.

Loop आणि draw() function च्या मदतीने game सतत चालू ठेवला.

Variable च्या मदतीने score आणि इतर values store केल्या.

योग्य action झाल्यावर score update केला.

Program मध्ये error असल्यास Console मधील error तपासून code मध्ये आवश्यक बदल केले.

p5.js Working

p5.js मध्ये सर्वप्रथम Editor मध्ये आवश्यक JavaScript code लिहिला जातो. setup() function च्या मदतीने canvas आणि सुरुवातीच्या settings तयार केल्या जातात. draw() function सतत execute होत असल्यामुळे animation आणि game continuously चालू राहतो. Keyboard किंवा mouse input नुसार character ची movement केली जाते. Conditions वापरून collision, score आणि game ची स्थिती तपासली जाते. Variables च्या मदतीने score, position आणि इतर values store केल्या जातात. Program Run केल्यानंतर तयार केलेला game canvas वर दिसतो. काही error आढळल्यास Console च्या मदतीने Testing आणि Debugging करून code मध्ये आवश्यक बदल केले जातात.

Input → JavaScript Code → Game Logic → Canvas → Output

Blynk

Blynk

Blynk म्हणजे काय?

Blynk हे एक IoT प्लॅटफॉर्म आहे, ज्याचा वापर हार्डवेअर उपकरणांना मोबाईल app किंवा वेब डॅशबोर्डशी जोडण्यासाठी आणि कंट्रोल करण्यासाठी केला जातो. Blynk च्या मदतीने ESP32, ESP32-C3 आणि Arduino सारखी मायक्रोकंट्रोलर उपकरणे इंटरनेटशी जोडता येतात आणि त्यांच्यामध्ये डेटा पाठवता व घेता येतो. Blynk वापरून आपण सेन्सरची माहिती पाहू शकतो आणि LED, मोटर आणि रिले यांसारखी उपकरणे दूरून कंट्रोल करू शकतो. यामध्ये Button, Gauge, Chart आणि Display यांसारखे widgets उपलब्ध आहेत. त्यांचा वापर करून सोपा IoT इंटरफेस तयार करता येतो. Blynk चा उपयोग IoT आणि स्मार्ट डिव्हाइस प्रोजेक्ट तयार करण्यासाठी आणि टेस्ट करण्यासाठी केला जातो. वेगळे मोबाईल app सुरुवातीपासून तयार करण्याची गरज नसल्यामुळे IoT प्रोजेक्ट बनवणे सोपे होते.

Blynk म्हणजे काय?

Blynk हे एक IoT platform आहे. याचा वापर mobile किंवा web app मधून Arduino आणि ESP32 सारखी devices control आणि monitor करण्यासाठी केला जातो.

use

  • LED ON/OFF करण्यासाठी
  • Motor control करण्यासाठी
  • Sensor data पाहण्यासाठी
  • Home automation साठी
  • IoT projects साठी

Simple:

Mobile App → Internet → ESP32/Arduino → Device

Example:

Blynk app मधील button दाबल्यावर ESP32 वरील LED ON/OFF करता येते.

Blynk Working Process

  1. ESP32 ला Wi-Fi सोबत connect केले.
  2. Blynk app मध्ये Button तयार केला.
  3. Button ला ESP32 च्या GPIO pin सोबत जोडले.
  4. Arduino IDE मध्ये Blynk library वापरून program तयार केला.
  5. Program ESP32 मध्ये upload केला.
  6. Mobile मधील Button दाबल्यावर command ESP32 कडे जाते.
  7. ESP32 command नुसार LED ON किंवा OFF करते.

Simple Flow:

MIT App Inventor

MIT App Inventor म्हणजे काय?

MIT App Inventor हे MIT (Massachusetts Institute of Technology) ने तयार केलेले Free आणि Web-Based Platform आहे. यामध्ये Drag-and-Drop Blocks च्या मदतीने Android Applications तयार करता येतात. या App च्या मदतीने ESP32 सारख्या Devices सोबत Wi-Fi किंवा Bluetooth द्वारे Communication करता येते. त्यामुळे IoT आणि Embedded Systems Projects साठी हे एक सोपे आणि उपयुक्त Tool आहे.

Experience

या प्रयोगातून मला HC-06 Bluetooth Module Arduino सोबत Serial Communication द्वारे कसे काम करते हे समजले. Mobile Phone ला Bluetooth Module सोबत Pair करून Custom Mobile Application च्या मदतीने LED वायरलेस पद्धतीने Control करायला शिकलो. यामुळे Bluetooth आधारित Embedded System Applications बद्दल माझे ज्ञान वाढले.

Control LED using MIT App Inventor

Open MIT App Inventor.

Processing